当前位置: 首页>>技术教程>>正文


如何减小扫描的 PDF 文件的文件大小?

,

问题描述

我有一个 72.9MB 的 PDF 文件,需要缩小到 500KB 以下。

该文件是我扫描的JPEG图像,然后转换为pdf。

最佳方案

使用以下 ghostscript 命令:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf

-dPDFSETTINGS 总结:

  • -dPDFSETTINGS=/screen 质量较低,尺寸较小。 (72 dpi)

  • -dPDFSETTINGS=/ebook 质量更好,但 pdf 稍大。 (150 dpi)

  • -dPDFSETTINGS=/prepress 输出类似于 Acrobat Distiller “Prepress Optimized” 设置 (300 dpi)

  • -dPDFSETTINGS=/printer 选择类似于 Acrobat Distiller “Print Optimized” 设置的输出 (300 dpi)

  • -dPDFSETTINGS=/default 选择旨在用于各种用途的输出,可能以牺牲更大的输出文件为代价

参考: https://www.ghostscript.com/doc/current/VectorDevices.htm#PSPDF_IN

Controls and features specific to PostScript and PDF input

-dPDFSETTINGS=configuration

Presets the “distiller parameters” to one of four predefined settings:

  • /screen selects low-resolution output similar to the Acrobat Distiller (up to version X) “Screen Optimized” setting.
  • /ebook selects medium-resolution output similar to the Acrobat Distiller (up to version X) “eBook” setting.
  • /printer selects output similar to the Acrobat Distiller “Print Optimized” (up to version X) setting.
  • /prepress selects output similar to Acrobat Distiller “Prepress Optimized” (up to version X) setting.
  • /default selects output intended to be useful across a wide variety of uses, possibly at the expense of a larger output file.

每个选项的确切设置,包括它们的 DPI 值,都显示在此表中的几十个选项中: https://www.ghostscript.com/doc/current/VectorDevices.htm#distillerparams

次佳方案

我最喜欢的方法是将 PDF 转换为 PostScript 并返回。但是,它并不总是有效,但是当它有效时,结果很好:

ps2pdf input.pdf output.pdf

正如评论中所建议的,这也直接适用于 PDF。

一些用户在使用 the ebook settings 时还报告了更多成功,如下所示:

ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf

第三种方案

aking1012 是对的。有了更多关于可能的嵌入图像、超链接等的信息。回答这个问题会容易得多!

这里有几个脚本和 命令行 解决方案。使用你认为合适的。

第四种方案

如果您有一个带有扫描图像的 pdf,您可以使用 convert (ImageMagick) 创建一个带有 jpeg 压缩的 pdf(您可以在任何 pdf 上使用此方法,但您会丢失所有文本信息)。

例如:

convert -density 200x200 -quality 60 -compress jpeg input.pdf output.pdf

根据您的需要调整参数

  • -density :以 dpi 为单位的像素密度(例如 100×100)。更高的像素密度提高了质量和尺寸

  • -quality :压缩比。对于 jpg,它介于 1 到 100 之间,其中 100 质量最好,但压缩率最低

  • -compress :压缩算法。由于压缩伪影,jpeg 压缩可能不是最佳选择。您可以选择 BZip、Fax、Group4、JPEG、JPEG2000、无损、LZW、RLE 或 Zip 作为替代压缩方法(有些只允许黑白图像)。

我能够为扫描/拍摄的文档实现出色的压缩比(取决于设置)。根据文档来源,您可能希望降低颜色深度( -depth 参数)。

第五种方案

我需要缩小包含文档全彩色扫描的 PDF 的大小。就文件而言,我的每一页都是全彩色图像。它们是包含文本和图像的页面的图像,但它们是通过扫描到图像而创建的。

我使用了下面的 ghostscript 命令和另一个线程的组合。

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dDownsampleColorImages=true \
-dColorImageResolution=150 -dNOPAUSE  -dBATCH -sOutputFile=output.pdf input.pdf

这将图像分辨率降低到 150dpi,将我的文件大小减半。查看文档,几乎没有明显的图像质量损失。在我的 2012 Nexus7 上,文本仍然完全可读。

第六种方案

Here is a script 用于重写扫描的 pdf:

#!/bin/sh

gs  -q -dNOPAUSE -dBATCH -dSAFER \
    -sDEVICE=pdfwrite \
    -dCompatibilityLevel=1.3 \
    -dPDFSETTINGS=/screen \
    -dEmbedAllFonts=true \
    -dSubsetFonts=true \
    -dColorImageDownsampleType=/Bicubic \
    -dColorImageResolution=72 \
    -dGrayImageDownsampleType=/Bicubic \
    -dGrayImageResolution=72 \
    -dMonoImageDownsampleType=/Bicubic \
    -dMonoImageResolution=72 \
    -sOutputFile=out.pdf \
     $1

您可以对其进行一些自定义以使其更可重用,但如果您只有一个 pdf,您可以将 $1 替换为您的 pdf 文件名并将其放入终端中。

第七种方案

  1. 我使用 LibreOffice Draw 打开 pdf。

  2. 然后我“导出为pdf”

  3. 并将“jpeg 压缩质量”设置为 50% 并将 “image resolution” 设置为 150 dpi

这会有一个很好的结果。

第八种方案

我通常使用 ps2pdf 来执行此操作(更简单的语法),如下所示:

ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF

我使用以下 python 脚本来减小生产服务器 (8.04) 中目录中所有 pdf 文件的大小。所以它应该工作。

#!/usr/bin/python

import os

for fich in os.listdir('.'):
        if fich[-3:]=="pdf":
                os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))

第九种方案

对我来说最好的是

convert -compress Zip -density 150x150 input.pdf output.pdf

其他方法:

#### gs
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf $INPUTFILE

### pdf2ps && ps2pdf
pdf2ps input.pdf output.ps && ps2pdf output.ps output.pdf

### Webservice
http://compress.smallpdf.com/de

问候

第十种方案

我强烈推荐 pdfsizeopt

它在减小大小方面比我尝试过的任何以前的 CLI 和 GUI 软件(包括 convertgspdftk 等)都更有效 – 尽管激活 pngout 可能会更慢 – 并且没有它们的一些问题(没有严重像素化/退化的图像,没有元数据丢失,如目录等)。

现在,如果无论后果如何(包括将图像降级到不可读的程度)都需要达到一定的大小,它可能不是您需要的工具,但作为 always-working go-to 解决方案,可以减少 PDF 中不必要的大尺寸而不丢失在可读性、信息和可接受的图像质量方面,我认为它是最佳选择。 (注意:我倾向于先在 Adob​​e Acrobat 中完成 vectorization-OCR [该函数以前称为 “CleanScan”] 后使用它,这会对某些扫描的文本文档产生巨大的影响。)


我推荐 generic Unix install

  1. 安装所有必需的依赖项:

  1. 下载并安装可执行文件:

     curl -L -o https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
     chmod +x pdfsizeopt.single
     cp pdfsizeopt.single /usr/local/bin/pdfsizeopt
    

用法:

pdfsizeopt original.pdf [compressed.pdf]

发现这篇文章的 mac 用户(或 Linuxbrew 用户)的注意事项:有一个 Homebrew 安装公式:

brew install --HEAD pts/utils/pdfsizeopt

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12473.html,未经允许,请勿转载。