Python で HTML を PDF として保存

Manav Narula 2023年1月30日
  1. Pdfkit で wkhtmltopdf API を使用して、Python を使用して HTML を PDF として保存する
  2. weasyprint モジュールを使用して、Python を使用して HTML を PDF として保存する
  3. PyQT モジュールを使用して、Python を使用して HTML を PDF として保存する
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 Narula
Manav Narula avatar Manav Narula avatar

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