python - 使用 soffice 转换为 pdf 会添加空白页
问题描述
我正在尝试使用 soffice & python 将 .ods 文件转换为 pdf:
import os
import subprocess
def ods_to_pdf(ods_filename):
file = os.path.join(os.getcwd(), ods_filename)
path_to_soffice = "path/to/soffice"
subprocess.run([path_to_soffice, "--headless", "--convert-to", "pdf", file], check=True)
它工作正常,但生成的 pdf 最后有一个空白页(有时是两个)。有谁知道我可以如何防止这种行为?代码在以 Ubuntu 18.04 作为基础镜像的 Docker 容器中运行。LibreOffice 版本:7.1.0(我也尝试过 6.1.6.3,结果相同)。
解决方案
我不知道如何阻止 LibreOffice 添加空白页,但通过在转换后删除空白页来解决问题:
import PyPDF2
output = PyPDF2.PdfFileWriter()
input = PyPDF2.PdfFileReader(open("file.pdf", "rb"))
number_of_pages = input.getNumPages()
for current_page_number in range(number_of_pages):
page = input.getPage(current_page_number)
if page.extractText() != "":
output.addPage(page)
output_stream = open("output.pdf", "wb")
output.write(output_stream)
推荐阅读
- python - 如何组合两个逻辑相同但输入参数不同的函数?
- javascript - 将 d3 Sunburst 图表的度数从 360 更改为另一个值(并隐藏部分)
- java - 如何测量物体之间的距离?
- vba - 将单词列表插入单词/创建句子
- time-complexity - 这种方法的时间复杂度是多少?
- xampp - 当xampp无法在mac Big Sur中打开时如何访问htdocs文件夹?
- jekyll - CloudCannon 自动构建未在指定日期和时间运行
- curl - Curl 超时 - 错误 28 - VPS 到另一个 VPS 连接
- mongodb - 如何将 Mongo DB ec2 实例更改为多节点
- python - 熊猫用另一列中的值替换列中的值