Python で HTML を PDF として保存
-
Pdfkit で
wkhtmltopdf
API を使用して、Python を使用して HTML を PDF として保存する -
weasyprint
モジュールを使用して、Python を使用して HTML を PDF として保存する -
PyQT
モジュールを使用して、Python を使用して HTML を PDF として保存する
HTML は、Web 開発で最も基本的で人気のある言語です。それは多くの言語の基盤を形成してきました。Python は、接続の作成と Web サイトの操作をサポートしています。
PDF は、さまざまなデバイスで表示できるポータブルドキュメントであり、作成に使用されたソフトウェアに依存しません。
このチュートリアルでは、Python を使用して HTMLWeb ページを PDF として保存します。
Pdfkit で wkhtmltopdf
API を使用して、Python を使用して HTML を PDF として保存する
wkhtmltopdf は、HTMLWeb ページを PDF に変換できるオープンソースのツールセットです。pdfkit モジュールを使用して、Python でこれを処理します。このモジュールの機能は、単一または複数の Web ページで機能し、PDF ファイルとして保存できます。
デバイスに保存されている Web ページの URL または HTML ファイルからコンテンツを直接読み取ることができます。from_url()関数は URL からコンテンツを読み取り、from_file()関数はファイルから読み取ります。
ファイルの名前とパスは、関数内で指定できます。
それらの使用法を確認するには、次のコードを参照してください
import pdfkit
pdfkit.from_url("https://www.delftstack.com/", "sample.pdf")
PDF 名の代わりに関数で False を指定することにより、このコンテンツを変数に格納することもできます。
この方法を使用する前に、公式 Web サイトから wkhtmltopdf をインストールすることを忘れないでください。
weasyprint
モジュールを使用して、Python を使用して HTML を PDF として保存する
weasyprint モジュールは、Web ページをドキュメント形式にレンダリングするために使用されます。HTML 関数を使用して URL を読み取り、write_pdf()関数を使用して PDF として保存します。
例えば、
import weasyprint
doc_pdf = weasyprint.HTML("https://www.delftstack.com/").write_pdf("sample.pdf")
weasyprint を使用する前に、他の多くのモジュールや機能をインストールする必要があるため、使用しないことをお勧めします。
また、Python 2 はこのモジュールのサポートを削除しました。
PyQT
モジュールを使用して、Python を使用して HTML を PDF として保存する
PyQT モジュールには、GUI 開発やその他の機能のための幅広い機能があります。HTML Web ページの URL を手動で読み取り、さまざまな関数を使用して PDF に変換できます。
次のコードを参照してください。
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
app = QApplication(sys.argv)
w = QWebView()
w.load(QUrl("https://www.delftstack.com"))
p = Qp()
p.setPageSize(Qp.A4)
p.setOutputFormat(Qp.PdfFormat)
p.setOutputFileName("sample.pdf")
def convertIt():
w.print_(p)
QApplication.exit()
QObject.connect(w, SIGNAL("loadFinished(bool)"), convertIt)
sys.exit(app.exec_())
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn