ホームページ  >  記事  >  バックエンド開発  >  Pythonプログラムを使用してWordおよびPDFドキュメントを生成する方法

Pythonプログラムを使用してWordおよびPDFドキュメントを生成する方法

高洛峰
高洛峰オリジナル
2017-02-20 10:18:292573ブラウズ

この記事では、主に Python プログラムを使用して Word および PDF ドキュメントを生成する方法について説明します。この記事は、必要な方にとって参考になると思います。 。

1. プログラムから Word ドキュメントをエクスポートする方法

Web/HTML コンテンツをワールド ドキュメントにエクスポートする Java には、Jacob、Apache POI、Java2Word、iText などのメソッドを使用するなど、多くのソリューションがあります。 FreeMarker などのテンプレート エンジンを使用します。 PHP にも対応するメソッドがいくつかありますが、Python で Web/HTML コンテンツからワールド ドキュメントを生成する方法はほとんどありません。解決するのが最も難しいのは、js コードを使用して塗りつぶされたデータを非同期的に取得し、画像を Word ドキュメントにエクスポートする方法です。

1. unoconv

機能:

1. まず Web ページの HTML ファイルをローカルに保存してから、変換のために unoconv を呼び出す必要があります。 。変換効果も良好で、使用方法も非常に簡単です。

\# 安装
sudo apt-get install unoconv
\# 使用
unoconv -f pdf *.odt
unoconv -f doc *.odt
unoconv -f html *.odt

短所:

1. 静的 HTML のみを変換でき、ajax を使用してページ内のデータを非同期的に取得する場合は変換できません (主に HTML が Web から保存されていることを確認するため)ページ ファイル内にデータがあります)。

2. HTML のみを変換できます。ページ内に echarts、highcharts、およびその他の JS コードを使用して生成された画像がある場合、これらの画像は Word ドキュメントに変換できません。

3. 生成された Word ドキュメントのコンテンツ形式制御するのは簡単ではありません。

2. python-docx

機能:

1. python-docx は Word ドキュメントを読み書きできる Python ライブラリです。

使用方法:

1. Web ページからデータを取得し、Python を使用して手動で組版する Word 文書に追加します。

from docx import Document
from docx.shared import Inches
document = Document()
document.add_heading('Document Title', 0)
p = document.add_paragraph('A plain paragraph having some ')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True
document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='IntenseQuote')
document.add_paragraph(
 'first item in unordered list', style='ListBullet'
)
document.add_paragraph(
 'first item in ordered list', style='ListNumber'
)
document.add_picture('monty-truth.png', width=Inches(1.25))
table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
for item in recordset:
 row_cells = table.add_row().cells
 row_cells[0].text = str(item.qty)
 row_cells[1].text = str(item.id)
 row_cells[2].text = item.desc
document.add_page_break()
document.save('demo.docx')

from docx import Document
from docx.shared import Inches
document = Document()
for row in range(9):
 t = document.add_table(rows=1,cols=1,style = 'Table Grid')
 t.autofit = False #很重要!
 w = float(row) / 2.0
 t.columns[0].width = Inches(w)
document.save('table-step.docx')

短所:

機能が非常に弱い。テンプレートがサポートされていないなど制限が多く、単純な形式のWord文書しか生成できません。

2. プログラムから PDF ドキュメントをエクスポートする方法

1.pdfkit

機能:

1.wkhtmltopdf は主に HTML から PDF を生成するために使用されます。

2.pdfkit は、wkhtmltopdf に基づく Python パッケージで、URL、ローカル ファイル、テキスト コンテンツの PDF への変換をサポートし、最終的には wkhtmltopdf コマンドを呼び出します。これは、PDFを生成するために私がこれまで出会った中で最高のPythonです。

利点:

1.wkhtmltopdf: Webkit カーネルを使用して HTML を PDF に変換します

Webkit は、Chrome や Safari などのブラウザーで使用される効率的なオープンソースのブラウザー カーネルです。 Chrome の現在の Web ページを印刷する機能には、直接「PDF として保存」するオプションがあります。

2.wkhtmltopdf は、Webkit コアの PDF レンダリング エンジンを使用して、HTML ページを PDF に変換します。忠実度が高く、変換品質が高く、非常に使いやすいです。
使用法:

\# 安装
pip install pdfkit
\# 使用
import pdfkit
pdfkit.from_url('http://google.com', 'out.pdf')
pdfkit.from_file('test.html', 'out.pdf')
pdfkit.from_string('Hello!', 'out.pdf')

欠点:

1. echarts や highcharts などの js コードによって生成されたアイコンは pdf に変換できません (その機能は主に html を pdf に変換することであり、js を pdf に変換することではないため) )。純粋に静的なページの変換効果は依然として良好です。

2. その他

PDF を生成するためのその他のプラグインには、weasyprint、reportlab、PyPDF2 などがあります。簡単なテストを行った結果、これらは pdfkit ほど効果的ではなく、使用が複雑なものもあります。

Python プログラムを使用して Word や PDF ドキュメントを生成する方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。