描述
Report 对象将引用 ArcGIS Pro 工程 (.aprx) 文件中的报表。可提供常见属性的访问权限,例如定义查询和导出。
讨论
ArcGIS Pro 工程可包含多个报表。可使用 ArcGISProject 对象的 listReports 方法访问报表,这将返回 Report 对象的 Python 列表。有必要确保每个报表均具有唯一名称,因为这样可以通过其 name 轻松引用特定报表。
Report 具有数据源,该数据源可提供用于支持报表生成的数据。可以使用 referenceDataSource 属性来标识报表的当前数据源。要更改报表的数据源,可以使用 setReferenceDataSource 方法。该方法可将新数据源中的字段映射到原始数据源定义的报表字段。字段名称(非字段别名)必须为区分大小写的精确匹配。
除了报表的数据源具有定义查询之外,报表也可以具有定义查询。首先根据数据源的定义查询过滤记录,然后使用报表的 definitionQuery 属性进一步过滤记录。
可以使用 exportToPDF 方法将报表导出为 PDF 文档。
属性
属性 | 说明 | 数据类型 |
definitionQuery (可读写) | 报表的定义查询。除了报表的参考数据源定义查询之外,还会应用此属性。 | String |
metadata (可读写) | 获取或设置报表的元数据类信息。请注意:设置元数据取决于 isReadOnly 属性值。 | Metadata |
name (可读写) | 报表的名称。有必要确保工程中的所有报表都具有唯一的名称,因为这样便可通过这些唯一名称轻松对其进行引用。 | String |
referenceDataSource (只读) | 将报表的参考数据源连接信息返回为 Python 字典。 | Dictionary |
方法概述
方法 | 说明 |
exportToPDF (out_pdf, {page_range_type}, {page_range}, {starting_page_number}, {total_page_number}, {resolution}, {image_quality}, {compress_vector_graphics}, {image_compression}, {embed_fonts}, {jpeg_compression_quality}) | 用于将报表导出为便携式文档格式 (PDF) 文件。 |
setReferenceDataSource (data_source) | 设置报表的参考数据源。 |
方法
exportToPDF (out_pdf, {page_range_type}, {page_range}, {starting_page_number}, {total_page_number}, {resolution}, {image_quality}, {compress_vector_graphics}, {image_compression}, {embed_fonts}, {jpeg_compression_quality})
参数 | 说明 | 数据类型 |
out_pdf | 用于表示输出导出文件的路径和文件名的字符串。 | String |
page_range_type | 用于定义要导出的页面范围类型的字符串。默认值为 ALL。
(默认值为 ALL) | String |
page_range | 如果使用 page_range_type 参数中的 RANGE 选项,用于标识要导出的页面的字符串(例如:1、3、5-12)。如果使用任何其他 page_range_type 值,则将忽略 page_range 值。 | String |
starting_page_number | 将偏移应用于页面编号以在报表开始处添加附加页面。默认偏移为 1。 (默认值为 1) | Integer |
total_page_number | 要标注的总页面数,例如,如果报表显示第 X 页,共 Y 页。这在将多个报表合并为一个报表时将非常有用。默认值为 -1,表示没有覆盖。 (默认值为 None) | Integer |
resolution | 用于定义导出文件分辨率的整数值,单位为每英寸点数 (dpi)。 (默认值为 96) | Integer |
image_quality | 定义输出图像质量的字符串。
(默认值为 BEST) | String |
compress_vector_graphics | 用于控制输出文件的矢量和文本部分压缩的布尔值。图像压缩单独定义。 (默认值为 True) | Boolean |
image_compression | 用于定义在输出文件中压缩图像或栅格数据时使用的压缩方案的字符串。
(默认值为 ADAPTIVE) | String |
embed_fonts | 用于控制导出文件中的字体嵌入的布尔值。当在未安装所需字体的计算机上查看文档时,可通过字体嵌入正确显示文本和字符标记。 (默认值为 True) | Boolean |
jpeg_compression_quality | 当 image_compression 设置为 ADAPTIVE 或 JPEG 时,用于控制压缩质量值的数字。有效范围为 1 到 100。jpeg_compression_quality 为 100 时可提供最佳图像质量,但会创建较大的导出文件。推荐范围为 70 到 90。 (默认值为 80) | Integer |
PDF 文件可在整个平台上实现一致的查看和打印效果。它们通常用于在 Web 上分发文档,并且此格式现在为内容传送的标准交换格式。PDF 文件在许多图形应用程序中均可编辑,并且它还保留了地图图层的注记、标注和属性数据。PDF 导出支持字体嵌入,即使在用户尚未安装 Esri 字体时,也可以正确显示符号系统。
代码示例
以下脚本按名称选择 Counties Report 并将其导出为 PDF。
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\USA_States\USA_States.aprx")
report = aprx.listReports("Counties Report")[0]
report.exportToPDF(r"C:\Project\USA_States\CA_Counties_Report.pdf")
以下脚本用于修复报表的已损坏数据源并保存工程。
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\USA_States\USA_States.aprx")
report = aprx.listReports("Counties Report")[0] # has a broken data source
report.setReferenceDataSource(r"C:\Project\USA_States\usa.gdb\states")
print(report.referenceDataSource)
#{'dataset':'states', 'workspace_factory':'File Geodatabase',
# 'connection_info':{'database':'C:\\Project\\USA_States\\usa.gdb'}}
aprx.save()
以下脚本可使用 PDFDocument 类将多个报表合并为一个多页 PDF。
import arcpy
pdf_name = "StatesReport.pdf"
cover_page = r"C:\path\to\StatesCoverPage.pdf"
part_one_pdf = r"C:\path\to\part_one.pdf"
part_two_pdf = r"C:\path\to\part_two.pdf"
final_pdf_path = r"C:\path\to\StatesReport.pdf"
report1 = self.aprx.listReports("States Report")[0] # Attribute List template
report2 = self.aprx.listReports("States Report Summaries")[0] # Summaries only using Basic Summary template
report1.exportToPDF(part_one_pdf, starting_page_number=2, total_page_number=13, page_range_type="RANGE",
page_range="1-2")
report2.exportToPDF(part_two_pdf, starting_page_number=3, total_page_number=13, page_range_type="RANGE",
page_range="2-11")
pdfMerge = arcpy.mp.PDFDocumentCreate(final_pdf_path) # Creates an empty PDF
pdfMerge.appendPages(cover_page)
pdfMerge.appendPages(part_one_pdf)
pdfMerge.appendPages(part_two_pdf)
pdfMerge.saveAndClose()