ReportLab、python を使用して、ワンクリックで PDF を生成します。

皆さんこんにちは、ペイソンソースです。

今日、アプリケーション システムから 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の学びと交流の​​会が期間限定で再開します。

b2902571e37ee1156a18849eeb152fd9.png

パイソン技術交流会(主に技術交流、釣り、無料売春講座)随時開催中 興味のある方は下記の公式アカウントに返信してください 666 エントリー可 一緒に100プランも 

古いルール、覚えていますか、右下隅にある「探している」をクリックしてください。記事の内容が良いと思われる場合は、モーメントで共有して、より多くの人に知らせることを忘れないでください!

64e5d5943c7af9329bb19c143edfe7f7.gif

不思議なギフトパックの入手方法

以下の公式アカウントを特定し、返信: 1024

37c68784dbb3d5b2b93d5b07030d5208.jpeg

おすすめ

転載: blog.csdn.net/weixin_48923393/article/details/129173640