ホームページ  >  記事  >  バックエンド開発  >  Python を使用して PDF レポートを自動的に生成するにはどうすればよいですか?

Python を使用して PDF レポートを自動的に生成するにはどうすればよいですか?

WBOY
WBOY転載
2023-04-23 11:25:152229ブラウズ

仕事の都合上、顧客が製品の効果を確認したりプロセスを説明したりするために、多くの PDF レポートを作成する必要があることがよくあります。

特定の形式でドキュメントを作成し、PDF レポートを生成する必要があるたびに、この繰り返しの作業は非常に面倒です。

Python を使用して、画像、表、テキスト説明などを挿入する必要があるユーザー向けのレポートを生成できると考えています。

サードパーティの Python 非標準モジュール reportlab を使用すると、PDF レポートを直接生成するニーズを満たすことができます。これは非標準ライブラリであるため、モジュールをインストールするには pip を使用する必要があります。

pip を使用して、PDF ドキュメントの生成をサポートする reportlab モジュールをインストールします。

pip install reportlab -i https://pypi.tuna.tsinghua.edu.cn/simple

インストール プロセス中に C 環境が見つからず、ビルドが失敗した場合は、wheel ファイルを使用して reportlab モジュールをインストールすることを直接選択できます。

Python を使用して PDF レポートを自動的に生成するにはどうすればよいですか?

.whl ファイルのダウンロード アドレスは次のとおりです: https://www.lfd.uci.edu/~gohlke/pythonlibs/

ダウンロード完了後、保存します ローカルディスクに移動し、保存先のパスに従ってreportLabモジュールをインストールします インストール方法は、以下のインストール方法を参照してください。

pip install wheel -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install D:\downloads\reportlab-3.5.57-cp36-cp36m-win_amd64.whl

reportlab モジュールで使用する必要がある Python オブジェクトを現在のコード ブロックに事前にインポートします。

from reportlab.pdfbase import pdfmetrics  # 注册字体
from reportlab.pdfbase.ttfonts import TTFont  # 字体类
from reportlab.platypus import Table, SimpleDocTemplate, Paragraph, Image  # 报告内容相关类
from reportlab.lib.pagesizes import letter  # 页面的标志尺寸(8.5*inch, 11*inch)
from reportlab.lib.styles import getSampleStyleSheet  # 文本样式
from reportlab.lib import colors  # 颜色模块
from reportlab.lib.units import cm  # 单位:cm

モジュールをインポートした後の最初のステップは、PDF ドキュメントで使用されるフォントを設定することです。フォントは好みに応じて設定できます。

# Registering a font named 'simfang' with the file 'simfang.ttf'.
pdfmetrics.registerFont(TTFont('simfang', 'simfang.ttf'))

ここで選択したフォントは simfang.ttf です。Windows システムのデフォルトのフォントは、以下のパスで確認できます。

Python を使用して PDF レポートを自動的に生成するにはどうすればよいですか?

ビジネスコードを開発する前に、公開部分を外部に持ち出すことができます。ここでは、getSampleStyleSheet 関数を使用して、すべてのスタイル シートを取得し、他のコードで使用できます。場所。

# Getting a list of styles that can be used in the document.
style_list = getSampleStyleSheet()

1. PDF タイトルの挿入

大きなタイトルのフォント スタイル オブジェクトを見出し 1、フォントの色を緑、サイズを 18、太字に設定します。

def insert_full_title(title_name=None):
    """
    This function takes in a title name and returns the full title name.

    :param title_name: The name of the title you want to insert
    """
    font_ = style_list['Heading1']
    font_.fontName = 'simfang'
    font_.fontSize = 18
    font_.leading = 50
    font_.textColor = colors.green
    font_.alignment = 1
    font_.bold = True
    return Paragraph(title_name, font_)

Python を使用して PDF レポートを自動的に生成するにはどうすればよいですか?

2. PDF 字幕の挿入

字幕のフォント スタイル オブジェクトを標準、フォントの色を赤、サイズを 15 に設定します。大胆な。

def insert_lettle_title(lettle_name=None):
    """
    :param lettle_name: The name of the lettle you want to insert
    """
    font_ = style_list['Normal']
    font_.fontName = 'simfang'
    font_.fontSize = 15
    font_.leading = 30
    font_.textColor = colors.red
    return Paragraph(lettle_name, font_)

Python を使用して PDF レポートを自動的に生成するにはどうすればよいですか?

3. 通常の段落テキストの挿入

通常のテキストの場合、フォント スタイル オブジェクトを標準、フォントの色をデフォルト、サイズを 12 に設定します。自動行折り返しモードをオンにします。

def insert_text(text=None):
    """
    > This function inserts text into the current document

    :param text: The text to insert
    """
    font_ = style_list['Normal']
    font_.fontName = 'simfang'
    font_.fontSize = 12
    font_.wordWrap = 'CJK'
    font_.alignment = 0
    font_.firstLineIndent = 32
    font_.leading = 25
    return Paragraph(text, font_)

Python を使用して PDF レポートを自動的に生成するにはどうすればよいですか?

4. PDF 画像の挿入

PDF ドキュメント オブジェクトへの画像の挿入は比較的簡単です。画像を挿入する必要があるローカル パスを設定するだけです。挿入される。

def insert_image(image_path=None):
    """
    > This function inserts an image into the notebook

    :param image_path: The path to the image you want to insert
    """
    img = Image(image_path)
    img.drawWidth = 5 * cm
    img.drawHeight = 8 * cm
    return img

Python を使用して PDF レポートを自動的に生成するにはどうすればよいですか?

5. PDF 表の挿入

表を挿入するときは、表の形式を好みに応じて設定できます。タイトル、フォントなどスタイル、フォント サイズ、挿入する必要があるテーブル オブジェクトを制御するためにマージやその他のパラメーターが必要かどうか。

def insert_table(*args):
    """
    It inserts a table into the database.
    """
    col_width = 120
    style = [
        ('FONTNAME', (0, 0), (-1, -1), 'simfang'),  # 字体
        ('FONTSIZE', (0, 0), (-1, 0), 12),  # 第一行的字体大小
        ('FONTSIZE', (0, 1), (-1, -1), 10),  # 第二行到最后一行的字体大小
        ('BACKGROUND', (0, 0), (-1, 0), '#d5dae6'),  # 设置第一行背景颜色
        ('ALIGN', (0, 0), (-1, -1), 'CENTER'),  # 第一行水平居中
        ('ALIGN', (0, 1), (-1, -1), 'LEFT'),  # 第二行到最后一行左右左对齐
        ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),  # 所有表格上下居中对齐
        ('TEXTCOLOR', (0, 0), (-1, -1), colors.darkslategray),  # 设置表格内文字颜色
        ('GRID', (0, 0), (-1, -1), 0.5, colors.grey),  # 设置表格框线为grey色,线宽为0.5
    ]
    table = Table(args, colWidths=col_width, style=style)
    return table

Python を使用して PDF レポートを自動的に生成するにはどうすればよいですか?

上記は PDF ドキュメントで一般的に使用されるオブジェクトです。最後に、対応するコンテンツ パラメーターを追加することで、PDF ドキュメントを生成し、ローカル ディスクに保存できます。

rreeee

Python を使用して PDF レポートを自動的に生成するにはどうすればよいですか?

以上がPython を使用して PDF レポートを自動的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。