仕事の都合上、顧客が製品の効果を確認したりプロセスを説明したりするために、多くの PDF レポートを作成する必要があることがよくあります。
特定の形式でドキュメントを作成し、PDF レポートを生成する必要があるたびに、この繰り返しの作業は非常に面倒です。
Python を使用して、画像、表、テキスト説明などを挿入する必要があるユーザー向けのレポートを生成できると考えています。
サードパーティの Python 非標準モジュール reportlab を使用すると、PDF レポートを直接生成するニーズを満たすことができます。これは非標準ライブラリであるため、モジュールをインストールするには pip を使用する必要があります。
pip を使用して、PDF ドキュメントの生成をサポートする reportlab モジュールをインストールします。
pip install reportlab -i https://pypi.tuna.tsinghua.edu.cn/simple
インストール プロセス中に C 環境が見つからず、ビルドが失敗した場合は、wheel ファイルを使用して reportlab モジュールをインストールすることを直接選択できます。
.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 システムのデフォルトのフォントは、以下のパスで確認できます。
ビジネスコードを開発する前に、公開部分を外部に持ち出すことができます。ここでは、getSampleStyleSheet 関数を使用して、すべてのスタイル シートを取得し、他のコードで使用できます。場所。
# Getting a list of styles that can be used in the document. style_list = getSampleStyleSheet()
大きなタイトルのフォント スタイル オブジェクトを見出し 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_)
字幕のフォント スタイル オブジェクトを標準、フォントの色を赤、サイズを 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_)
通常のテキストの場合、フォント スタイル オブジェクトを標準、フォントの色をデフォルト、サイズを 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_)
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
表を挿入するときは、表の形式を好みに応じて設定できます。タイトル、フォントなどスタイル、フォント サイズ、挿入する必要があるテーブル オブジェクトを制御するためにマージやその他のパラメーターが必要かどうか。
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
上記は PDF ドキュメントで一般的に使用されるオブジェクトです。最後に、対応するコンテンツ パラメーターを追加することで、PDF ドキュメントを生成し、ローカル ディスクに保存できます。
rreeee以上がPython を使用して PDF レポートを自動的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。