gpt4 book ai didi

linux - 仅重新编码 PDF 的图像? (或者,ghostscript 在优化时在 8 位 RGB 上失败)

转载 作者:太空宇宙 更新时间:2023-11-04 09:51:13 24 4
gpt4 key购买 nike

我需要针对文件大小优化大量 PDF 文档,所以我尝试使用 ghostscript,调用方式如下:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=output-my-doc.pdf input-my-doc.pdf

我可以看到它在某些页面上运行,但在特定页面上它会崩溃。

我更新到 gs 版本 9.02,我也遇到了同样的情况。将文档拆分成单独的页面,并在每个页面上运行上面的命令后,我可以确认哪些页面是有问题的;事实上,即使我只调用 gs input-my-doc-pageX.pdf 也会出现错误 - 这会启动一个查看器,我可以看到文本排版,直到它出现在图像中,当它崩溃时.

所以我可以确认在我的情况下,gs 在特定图像上崩溃 - 最后我还可以提供一个最小的工作(或者更确切地说,非工作)示例,它演示了问题(下面).特别是,问题似乎是以某种方式指定的 8 位 RGB 图像。

现在,我不知道这是否是一个错误,但由于我需要完成它 - 我在想也许我可以通过应用程序运行 PDF 来“欺骗”ghostscript,这几乎不会影响 PDF——除了它将图像重新编码为单一格式(比如 PNG);这样 gs 优化器也可以在不崩溃的情况下运行这些文件。

在 Linux 中使用命令行仅对给定 PDF 的图像进行重新编码有哪些选项?

非常感谢您的回答,
干杯!

PS:测试用例基本上是source-code PDF example在帖子中:Imagemagick: generate raw image data for PDF flate embedding? .

那个 PDF (hello2.pdf) 在 evince 中打开得很好:

hello2.pdf-evince-OK

...但由于它的外部参照表已损坏,我修复它:

$ pdftk hello2.pdf output hello2O.pdf
$ qpdf --check hello2O.pdf
checking hello2O.pdf
PDF Version: 1.4
File is not encrypted
File is not linearized
No errors found

修复后的文件 hello2O.pdf 也可以在 evince 中正常打开 - 但是,当我尝试对其运行上述 gs 优化命令时, 它失败了:

$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=optihello2O.pdf hello2O.pdf
GPL Ghostscript 9.02 (2011-03-30)
Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Loading NimbusSanL-Regu font from /usr/share/ghostscript/9.02/Resource/Font/NimbusSanL-Regu... 2756020 1410650 1869284 568021 3 done.
Error: /undefined in --run--
Operand stack:
--dict:6/15(L)-- false --dict:11/19(L)-- --dict:4/4(L)-- --nostringval-- FlateDecode --dict:4/4(L)-- 0
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1910 1 3 %oparray_pop 1909 1 3 %oparray_pop 1893 1 3 %oparray_pop --nostringval-- --nostringval-- 2 1 1 --nostringval-- %for_pos_int_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- %array_continue --nostringval-- false 1 %stopped_push --nostringval-- %loop_continue --nostringval-- 576 --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- %array_continue --nostringval-- --nostringval--
Dictionary stack:
--dict:1160/1684(ro)(G)-- --dict:1/20(G)-- --dict:82/200(L)-- --dict:82/200(L)-- --dict:108/127(ro)(G)-- --dict:295/300(ro)(G)-- --dict:23/30(L)-- --dict:6/8(L)-- --dict:25/40(L)-- --dict:7/17(L)--
Current allocation mode is local
GPL Ghostscript 9.02: Unrecoverable error, exit code 1

最佳答案

首先,如果您发现 Ghostscript 错误,请将其报告给我们 http://bugs.ghostscript.com

其次,我建议您更新当前发布的 9.05 版本,该版本可能已修复此错误。

关于linux - 仅重新编码 PDF 的图像? (或者,ghostscript 在优化时在 8 位 RGB 上失败),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com