작업 요구 사항으로 인해 고객이 제품 효과를 확인하고 프로세스를 설명할 수 있도록 PDF 보고서를 많이 생성해야 하는 경우가 많습니다.
특정 형식으로 문서를 작성하고 PDF 보고서를 생성해야 할 때마다 이러한 반복 작업은 정말 피곤합니다.
Python을 사용하여 그림, 표, 텍스트 설명 등을 삽입해야 하는 사용자를 위한 보고서를 생성할 수 있다고 생각하고 있습니다.
타사 Python 비표준 모듈 Reportlab을 사용하면 PDF 보고서를 직접 생성해야 하는 요구 사항을 충족할 수 있습니다. 이는 비표준 라이브러리이므로 모듈을 설치하려면 pip를 사용해야 합니다.
pip를 사용하여 PDF 문서 생성을 지원하는 Reportlab 모듈을 설치하세요.
pip install reportlab -i https://pypi.tuna.tsinghua.edu.cn/simple
설치 과정에서 C++ 환경이 누락되어 빌드가 실패한 경우 휠 파일을 사용하여 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 문서를 생성하여 로컬 디스크에 저장할 수 있습니다.
# A special variable in Python that evaluates to `True` if the module is being run as the main program. if __name__ == '__main__': pdf_ = list() pdf_.append(insert_full_title('数据测试报告')) pdf_.append(insert_text( 'Python 是一门编程语言。 您可以在服务器上使用 Python 来创建 Web 应用程序。通过实例学习 我们的 TIY 编辑器使学习 Python 变得简单,它能够同时显示代码和结果。 ')) pdf_.append(insert_image('./excle源数据.png')) pdf_.append(insert_lettle_title('数据内容展示:')) data = [ ('职位名称', '平均薪资', '较上年增长率'), ('数据分析师', '18.5K', '25%'), ('高级数据分析师', '25.5K', '14%'), ('资深数据分析师', '29.3K', '10%') ] pdf_.append(insert_table(*data)) doc = SimpleDocTemplate('测试报告.pdf', pagesize=letter) doc.build(pdf_)
위 내용은 Python을 사용하여 PDF 보고서를 자동으로 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!