Heim > Artikel > Backend-Entwicklung > Wie erstelle ich automatisch PDF-Berichte mit Python?
Aus beruflichen Gründen muss ich oft viele PDF-Berichte für Kunden erstellen, um die Produkteffekte zu überprüfen und den Prozess zu erklären.
Jedes Mal, wenn Sie Dokumente in einem bestimmten Format schreiben und PDF-Berichte erstellen müssen, ist solch eine sich wiederholende Arbeit wirklich ermüdend.
Ich denke, dass ich Python verwenden kann, um einen Bericht für Benutzer zu erstellen, der Bilder, Tabellen, Textbeschreibungen usw. einfügen muss.
Die Verwendung des nicht standardmäßigen Python-Moduls Reportlab eines Drittanbieters kann die Anforderung erfüllen, PDF-Berichte direkt zu generieren. Da es sich um eine nicht standardmäßige Bibliothek handelt, müssen Sie pip verwenden, um das Modul zu installieren.
Verwenden Sie pip, um das Reportlab-Modul zu installieren, das die Generierung von PDF-Dokumenten unterstützt.
pip install reportlab -i https://pypi.tuna.tsinghua.edu.cn/simple
Wenn die C++-Umgebung während des Installationsvorgangs fehlt und der Build fehlschlägt, können Sie direkt die Wheel-Datei zum Installieren des Reportlab-Moduls verwenden.
Die Download-Adresse der .whl-Datei lautet wie folgt: https://www.lfd.uci.edu/~gohlke/pythonlibs/# 🎜🎜## 🎜🎜#Nachdem der Download abgeschlossen ist, speichern Sie ihn auf der lokalen Festplatte und installieren Sie das ReportLab-Modul gemäß dem Speicherpfad. Informationen zur Installationsmethode finden Sie unten in der Installationsmethode.
pip install wheel -i https://pypi.tuna.tsinghua.edu.cn/simple pip install D:\downloads\reportlab-3.5.57-cp36-cp36m-win_amd64.whl
Importieren Sie die Python-Objekte, die im Reportlab-Modul verwendet werden müssen, vorab in den aktuellen Codeblock.
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
Nachdem das Modul importiert wurde, besteht der erste Schritt darin, die im PDF-Dokument verwendeten Schriftarten festzulegen. Die Schriftarten können nach Ihren eigenen Vorlieben eingestellt werden.
# Registering a font named 'simfang' with the file 'simfang.ttf'. pdfmetrics.registerFont(TTFont('simfang', 'simfang.ttf'))
Die Schriftart, die ich hier ausgewählt habe, ist simfang.ttf. Informationen zur Standardschriftart im Windows-System können Sie im folgenden Pfad anzeigen.
Bevor wir den Geschäftscode entwickeln, können wir den öffentlichen Teil nach außen hin erwähnen. Mithilfe der Funktion getSampleStyleSheet erhalten wir hier alle Stylesheets hinter den anderen Plätzen können ebenfalls genutzt werden.
# Getting a list of styles that can be used in the document. style_list = getSampleStyleSheet()
1. PDF-Titel einfügen
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_)
2. PDF-Untertitel einfügen
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_)
4. Das Einfügen von Bildern in PDF-Dokumentobjekte ist relativ einfach, Sie müssen nur das festlegen einzufügende Einstellungen Der lokale Pfad des Bildes ist ausreichend.
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_)5. PDF-Tabelle einfügen
Beim Einfügen einer Tabelle kann das Format der Tabelle entsprechend eingestellt werden eigene Einstellungen, Schriftart, Schriftgröße und ob eine Zusammenführung erforderlich ist, sowie andere Parameter zur Steuerung der einzufügenden Tabellenobjekte.
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 imgDie oben genannten Objekte sind die häufig verwendeten Objekte in PDF-Dokumenten. Durch Hinzufügen der entsprechenden Inhaltsparameter kann das PDF-Dokument schließlich generiert und gespeichert werden der lokalen Festplatte.
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
Das obige ist der detaillierte Inhalt vonWie erstelle ich automatisch PDF-Berichte mit Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!