Pra*_* M. 10 pdf convert printing scanner
我有一个 PDF 文件,我想将其压缩到 100 kB 以下。它扫描了我从移动扫描仪扫描的两页。扫描后为 338 kB(以最低质量查看页面)。基本上我想将此文件上传到政府门户网站,该门户网站仅允许在一个文件中上传最多 100 kB。这是我的主要目的。以下是我现在尝试过的方法,但它没有完成所需的任务:
使用Ghostscript周围的简单包装器来缩小 PDF 文件“ ./shrinkpdf.sh in.pdf out.pdf xx”。我将 xx 设置为 90,它给了我 282 kB。低于 90 值,PDF 文档中的文本不清晰,我确信我的申请会被拒绝。
我还尝试了“ gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=setting -sOutputFile=output.pdf input.pdf”,将值设置为 /screen,我认为这是最小设置,它给了我 232 kB 并且文本相当明显。
我还尝试使用“pdftoppm”方法将其转换为 JPEG,例如“ pdftoppm compressed.pdf jpeg -r 75 -jpeg”,它为我提供 141 kB 的 1 页和 128 kB 的第 2 页。我不确定如何将这两个 JPEG 文件作为一个文件上传,但是我想我的主要目标现在应该是先让它小于 100 kB?
我使用 Ubuntu 20.04.2。
vid*_*rlo 25
低于 90 值,pdf 中的文本不清晰,我确信我的申请会被拒绝。
这是一个扫描的文件。这意味着它不是文本,而是页面的图像。PDF 支持多种图像压缩方案,包括无损,但质量和降级表明您使用的是 JPEG。
这可能是最有效的存储方式。
您想在 <100kB 中存储两个页面。这是每页 50kB。这是一项艰巨的任务——但可能是可能的。
我会将页面导出为 JPG 并调整质量设置和分辨率,直到得到结果:
convert file.pdf file.jpg
Run Code Online (Sandbox Code Playgroud)
这将分别为您提供第 1 页和第 2 页的 file-0.jpg 和 file-1.jpg。
现在我们可以尝试降低页面的分辨率:
mogrify -resize 600x700 -quality 45 file-0.jpg
Run Code Online (Sandbox Code Playgroud)
通过这种措施,我设法将 A4 页面缩小到 28kB。它清晰易读,但不是很清楚:
要将文件在播放后将其转换回 PDF 以减小大小,请运行
convert file-?.jpg file.pdf
Run Code Online (Sandbox Code Playgroud)
除了mogrify来修改文件,还可以使用gimp等工具。
chi*_*NUT 14
由于文件大小优化的扫描文档可能是黑白的,因此.pbm是一种单色位图格式,似乎非常适合此格式,您可以将其转换回 png 以嵌入 pdf。
使用示例文档1 (imgur 永久链接:https ://i.imgur.com/Ak2kVGD.jpg )
它是文档的 1751x2451 jpg 扫描件,大小为 1.71MB,黑白,带有一些蓝色调
convert document_scanner_sample_scan_00_zoom.jpg -resize 1000 intermediate.pbm
convert intermediate.pbm page1.png # 1000x1436, 46kb
Run Code Online (Sandbox Code Playgroud)
page1.png 看起来很适合46kb ( https://i.imgur.com/gYwtipQ.png )
正如评论中指出的那样,png 需要转码才能嵌入到 pdf 中。默认情况下convert使用/FlateDecodepdf 压缩格式 ( convert page1.png page1.pdf),生成的 pdf 为 67kb。改用/CCITTFaxDecode用于单色图像的格式,将其降低到 57kb
convert page1.png -alpha off -monochrome -compress fax page1.pdf
Run Code Online (Sandbox Code Playgroud)
有关命令行选项到 pdf 压缩格式的映射,请参阅 image magick 文档:https : //legacy.imagemagick.org/Usage/formats/#pdf_compression
有关 pdf 压缩过滤器的文档,请参阅 pdf 参考(版本 1.7)的第 7.4 节。第 7.4.1 节表 6 中提供了介绍。
https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf
1. 原始示例文件在这里找到:
https://s1-www.scan2docx.com/img/samples/document_scanner_sample_scan_00_zoom.jpg
谢谢大家帮助我!谢谢@vidarlo!您的建议和想法确实帮助我度过了难关,而且一点运气也起到了作用。我会将您的输入标记为解决方案,因为它确实有助于此任务。
对我来说幸运的是政府网站允许我们分别上传两个 100kb 的文件。这是没有提到的地方!它仅在上传一页的站点帖子中显示第二个对话框。哇!
所以现在的想法是将每个页面压缩到 100kb 以下。我决定分别扫描每一页:
第 1 页 144kb.pdf 和第 2 页 165kb.pdf
我发现(至少对于我的文档)convert file.pdf file.jpg性能低于pdftoppm file.pdf jpeg -r 75 -jpeg. 我不知道为什么,但 convert 的输出给了我 258kb.jpg 的第一页(144kb.pdf),而从 pdftoppm 它给了我 130.6kb .jpg 的同一页,但一个更好看的 jpeg 文件!我决定继续这样做。
pdftoppm 144kb.pdf jpeg -r 75 -jpeg --> 130.6kb.jpg
pdftoppm 165kb.pdf jpeg -r 75 -jpeg --> 134.4kb.jpg
Run Code Online (Sandbox Code Playgroud)
然后就像@vidarlo 建议的那样,我尝试了 mogrify 但没有调整大小选项,所以mogrify -quality 50 page1.jpgpage2.jpg 给了我 91kb 和 96kb 的两个文件!45 确实模糊了一些东西,> 50 将文件大小增加到 > 100kb。
以防万一,在尝试转换 file.pdf file.jpg 时出现以下错误 -
convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert-im6.q16: no images defined `file.jpg' @ error/convert.c/ConvertImageCommand/3258.
Run Code Online (Sandbox Code Playgroud)
为此,我修改了policy.xml位于/etc/ImageMagick-6. 我之前<policy domain="coder" rights="read | write" pattern="PDF" />添加了该行</policymap>,之前设置为 none(权限)。此解决方案绕过了此错误。
此外,我在修改此policy.xml文件时遇到了问题,它以只读模式打开(尽管我以管理员身份登录)。为此,我gedit admin:///etc/ImageMagick-6/policy.xml从终端使用使文件可写。
对于这两点,我要感谢这些,
再次,非常感谢大家!
最有可能的最好方法是以黑白(两种颜色,而不是灰度)扫描它。政府机构的表格不太可能需要全彩色或灰度。
一个体面的扫描仪会为黑白图像选择 jpeg 以外的压缩选项,这将导致文件小得多。
如果这还不够,那么使用 jbig2 手动压缩 bw 图像可能会导致文件更小,尽管节省的费用只会真正开始增加具有许多页面的较长文档。