【发布时间】:2022-11-10 22:51:09
【问题描述】:
尝试使用 Ghostscript 压缩 pdf 时出现以下错误:
输出 pdf 缺少图像和文本。 (注:缺少的图片本身是pdf格式的。)
我的代码正在工作,因为我正在获取输出 pdf。我的输入 pdf 是 30 MB,我的输出 pdf 是 9 MB,如果需要,请说明如何共享文件,因为它们太大而无法在此处上传。
生成pdf的代码:
process = subprocess.Popen(['pdflatex', self.tex_file_location],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
压缩pdf的代码:
subprocess.call([gs, '-sDEVICE=pdfwrite', '-dCompatibilityLevel=1.5',
'-dPDFSETTINGS={}'.format(quality[power]),
'-dNOPAUSE', '-dQUIET', '-dBATCH',
'-sOutputFile={}'.format(output_file_path),
input_file_path]
gs - Ghostscript Exe 的位置
input_file_path - 带有输入 pdf 目录的字符串。
output_file_path - 带有输出 pdf 目录的字符串。
我缺少任何选项或设置吗?任何帮助,将不胜感激。
【问题讨论】:
-
这意味着出了点问题。一个内部对象被释放,然后一些东西试图删除对它的引用。如果另一个对象持有引用,它不应该被释放。您应该为此打开一个错误报告,但我建议您首先尝试从外壳而不是您的应用程序复制它。将 PDF 文件附加到错误报告中并给出您使用的命令行,同时说明正在使用的 Ghostscript 版本。请注意,Ghostscript 的 pdfwrite 设备不会压缩 PDF 文件。它会生成新的 PDF 文件,根据使用的选项,这些文件可能会更小。
-
啊,更仔细地阅读文本... PDF 文件尝试使用已在交叉引用表中标记为免费(未使用)的对象(1163)。您不能使用免费对象。因此 PDF 文件可能已损坏,我需要查看该文件以进一步评论。图像不能是'pdf格式'没有'pdf格式'图像类型,PDF可以读取多种类型的位图图像但它没有自己的类型。
标签: python python-3.x pdf ghostscript pdflatex