certflow.handlers.report_generator module

报告生成处理器模块

基于ReportLab库生成PDF格式的试压报告、材质报告和质保书, 支持中英文双语、自定义模板样式、合并单元格和分页等功能。

class certflow.handlers.report_generator.ReportGenerator(output_dir='reports')[源代码]

基类:object

报告生成处理器 - 支持复杂模板和合并单元格

基于ReportLab生成PDF报告,支持试压报告、材质报告和质保书三种类型, 提供中文字体注册、自定义样式、分页和签名栏等功能。

参数:

output_dir (str)

output_dir

输出目录路径,用于存放生成的PDF文件

styles

报告样式集合,包含自定义的中文段落样式

generate_pressure_test_report(data, template_name='pressure_test', language='zh', records_per_page=5)[源代码]

生成试压报告

根据测试数据生成PDF格式的试压报告,支持分页和签名栏。

参数:
  • data (list[dict[str, Any]]) -- 测试数据字典列表,每条记录包含试验压力、保压时间等字段

  • template_name (str) -- 模板名称,默认为"pressure_test"

  • language (str) -- 语言,可选"zh"(中文)或"en"(英文),默认为"zh"

  • records_per_page (int) -- 每页记录数,可选5/6/9,默认为5

返回:

生成的PDF文件完整路径

返回类型:

str

示例

>>> generator = ReportGenerator("output/reports")
>>> test_data = [
...     {"test_pressure": "1.5", "hold_time": "60", "test_result": "合格"},
...     {"test_pressure": "2.0", "hold_time": "90", "test_result": "合格"}
... ]
>>> filepath = generator.generate_pressure_test_report(test_data)
>>> print(f"报告已生成: {filepath}")
generate_material_certificate(data, material_type='steel', language='zh', records_per_page=6)[源代码]

生成材质报告/质保书

根据材质数据生成PDF格式的材质证明书。

参数:
  • data (list[dict[str, Any]]) -- 材质数据字典列表,包含材质牌号、规格、炉号等字段

  • material_type (str) -- 材质类型,可选"steel"(钢材)/"valve"(阀门)/"pipe"(管材),默认为"steel"

  • language (str) -- 语言,可选"zh"(中文)或"en"(英文),默认为"zh"

  • records_per_page (int) -- 每页记录数,默认为6

返回:

生成的PDF文件完整路径

返回类型:

str

示例

>>> generator = ReportGenerator()
>>> material_data = [
...     {"material_grade": "Q235B", "specification": "10mm", "heat_no": "H12345"},
...     {"material_grade": "304", "specification": "8mm", "heat_no": "H67890"}
... ]
>>> filepath = generator.generate_material_certificate(material_data)
>>> print(f"材质报告已生成: {filepath}")
generate_quality_certificate(data, language='zh')[源代码]

生成质保书(单页)

根据质保数据生成单页PDF格式的产品质量保证书。

参数:
  • data (dict[str, Any]) -- 质保书数据字典,包含产品名称、规格型号、数量等字段

  • language (str) -- 语言,可选"zh"(中文)或"en"(英文),默认为"zh"

返回:

生成的PDF文件完整路径

返回类型:

str

示例

>>> generator = ReportGenerator()
>>> quality_data = {
...     "product_name": "阀门",
...     "specification": "DN100",
...     "quantity": "100",
...     "batch_no": "B2024001"
... }
>>> filepath = generator.generate_quality_certificate(quality_data)
>>> print(f"质保书已生成: {filepath}")