皆さんこんにちは、ペイソンソースです。
今日、アプリケーション システムから PDF レポートをエクスポートするリクエストを受け取りました.このレポートには、テキスト パラグラフ、動的テーブル、および画像が含まれています。
私たちのシステムのバックエンドは Java を使用しているため、itextpdf で機能を実装しました。
戻ってきた後、それを実装するために python に同様のパッケージが必要であると考えたので、いくつかの調査を行いました。
今日は、reportlab を使用して、写真とテキストの両方を含む PDF を生成する方法を説明します。
記事の最後にイースターエッグあります!
ReportLab をインストールする
まず、ReportLab をインストールする必要があります。pip コマンドを使用してインストールできます。
pip install reportlab
PDF ドキュメントの作成
PDF ドキュメントの作成を開始する前に、ReportLab の Canvas クラスをインポートする必要があります。
from reportlab.pdfgen import canvas
次に、PDF ファイルの名前とパスを指定して Canvas オブジェクトを作成します。
pdf_name = "my_tech_article.pdf"
pdf = canvas.Canvas(pdf_name)
テキストを追加
drawString() メソッドを使用して PDF ドキュメントにテキストを追加できます。
pdf.drawString(50, 750, "My Technical Article")
このメソッドの最初の 2 つのパラメーターはテキストの x 座標と y 座標で、3 番目のパラメーターはテキスト コンテンツです。
画像を追加
drawImage() メソッドを使用して、PDF ドキュメントに画像を追加できます。
from reportlab.lib.pagesizes import letter
pdf.drawImage("my_image.png", 50, 650, width=letter[0], height=letter[1]/2)
このメソッドの最初の 3 つのパラメーターはイメージの x 座標と y 座標、4 番目のパラメーターはイメージの幅、5 番目のパラメーターはイメージの高さです。
フォームを追加
Table クラスを使用してテーブルを追加できます。まず、Table クラスをインポートする必要があります。
from reportlab.lib.pagesizes import letter
from reportlab.lib import colors
from reportlab.lib.units import inch
from reportlab.platypus import Table
data = [ ["Name", "Age", "Gender"],
["John", "25", "Male"],
["Sarah", "30", "Female"],
["Tom", "35", "Male"],
]
table = Table(data)
table.setStyle(
[
("BACKGROUND", (0, 0), (-1, 0), colors.grey),
("TEXTCOLOR", (0, 0), (-1, 0), colors.whitesmoke),
("ALIGN", (0, 0), (-1, 0), "CENTER"),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, 0), 14),
("BOTTOMPADDING", (0, 0), (-1, 0), 12),
("BACKGROUND", (0, 1), (-1, -1), colors.beige),
("TEXTCOLOR", (0, 1), (-1, -1), colors.black),
("ALIGN", (0, 1), (-1, -1), "CENTER"),
("FONTNAME", (0, 1), (-1, -1), "Helvetica"),
("FONTSIZE", (0, 1), (-1, -1), 12),
("BOTTOMPADDING", (0, 1), (-1, -1), 6),
("GRID", (0, 0), (-1, -1), 1, colors.black),
]
)
要約する
皆さんに内緒で、上記の内容はChatGPTが書いたものですが、とても良いと思いませんか?
交換グループ
2ヶ月の時を経て、Moyuの学びと交流の会が期間限定で再開します。
パイソン技術交流会(主に技術交流、釣り、無料売春講座)随時開催中 興味のある方は下記の公式アカウントに返信してください 666 エントリー可 一緒に100日プランも !
古いルール、覚えていますか、右下隅にある「探している」をクリックしてください。記事の内容が良いと思われる場合は、モーメントで共有して、より多くの人に知らせることを忘れないでください!
【不思議なギフトパックの入手方法】
以下の公式アカウントを特定し、返信: 1024