if office_path.lower().endswith(('.xlsx', '.xls')):
# 针对 Excel 文件,添加缩放选项以避免分页
subprocess.run([LIBREOFFICE_PATH, '--headless', '--convert-to', 'pdf:writer_pdf_Export:PageRange=1-1000000;Zoom=100', '--outdir', os.path.dirname(pdf_path),
office_path], check=True)
else:
subprocess.run([LIBREOFFICE_PATH, '--headless', '--convert-to', 'pdf', '--outdir', os.path.dirname(pdf_path),
office_path], check=True)
在 office_to_pdf
函数中,当检测到文件是 Excel 文件时,使用 pdf:writer_pdf_Export:PageRange=1-1000000;Zoom=100
作为转换参数,其中 PageRange
设置了一个较大的范围,Zoom
设置为 100% 缩放,这样可以尽量避免分页。对于其他类型的文件,仍然使用原来的转换参数。
pdf:writer_pdf_Export:PageRange=1-1000000;Zoom=100
是在使用 LibreOffice 将文件转换为 PDF 时的参数设置,它的各部分作用如下:
-
pdf:writer_pdf_Export
:pdf
表示目标文件格式为 PDF 。writer_pdf_Export
是 LibreOffice 中用于指定 PDF 导出过滤器的名称。writer
通常与 LibreOffice 的文字处理组件(类似于 Microsoft Word 的部分)相关联,但在这里它更广泛地用于表示文档的导出设置,pdf_Export
明确了是导出为 PDF 格式的操作。这部分告诉 LibreOffice 按照特定的 PDF 导出规则和设置来处理输入文件。
-
PageRange=1-1000000
:PageRange
是用于指定要转换的页面范围的参数。1-1000000
表示从第 1 页到第 1000000 页。设置这么大的页面范围,实际上是为了确保整个文档(无论有多少页)都能被包含在转换范围内。这样做可以避免因为文档页数较多,而默认设置可能只转换部分页面导致内容不完整的情况。在将 Excel 文件转换为 PDF 时,这有助于确保所有工作表和数据都能被转换。
-
Zoom=100
:Zoom
是用于设置缩放比例的参数。100
表示以 100% 的比例进行缩放,也就是不进行放大或缩小操作。在将 Excel 文件转换为 PDF 时,设置为 100% 的缩放比例可以尽量保持 Excel 工作表的原始布局和大小,避免因为缩放而导致内容分页或布局混乱。例如,如果 Excel 工作表内容在一个页面内刚好能完整显示,100% 缩放可以确保转换后的 PDF 也在一个页面内显示,不会出现分页情况。
综上所述,这个参数设置组合主要是为了确保 LibreOffice 在将文件转换为 PDF 时,能完整地转换整个文档,并保持原始的布局和大小,尽量避免分页和内容丢失的问题。