pdftk压缩选项

时间:2011-03-14 09:16:42

标签: compression pdftk

我使用 pdftk 使用以下命令行压缩pdf

pdftk file1.pdf output file2.pdf compress

它的作用是我文件的重量减少了。

是否有[选项]来更改压缩???

或者压缩我的文件的其他解决方案?它很重,因为有些图形很多点。有没有办法将这些图转换为例如jpg并调整压缩?

11 个答案:

答案 0 :(得分:111)

我遇到了同样的问题并找到了两种不同的解决方案(有关详细信息,请参阅此thread)。两者都大大减小了我的未压缩PDF的大小。

  • 像素化(有损):

    convert input.pdf -compress Zip output.pdf
    
  • Unpixelated(无损,但可能略有不同):

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

编辑:我刚刚发现了另一个选项(用于无损压缩),这避免了令人讨厌的gs命令。 qpdf是一个简洁的工具,可以转换PDF(压缩/解压缩,加密/解密),并且比gs命令快得多:

qpdf --linearize input.pdf output.pdf

答案 1 :(得分:33)

此程序运作良好

pdf2ps large.pdf very_large.ps

ps2pdf very_large.ps small.pdf

试一试。

答案 2 :(得分:20)

尝试压缩使用400ppi tiffs制作的PDF,大多数是8位,一些24位,使用PackBits压缩,使用{/ 1}}压缩Zip / Deflate。我对这些方法中的每一个都遇到了一个问题:上述方法都没有保留我在Acrobat Pro X中手工创建的书签TOC。甚至不是tiff2pdf的推荐ebook设置。当然,我可以打开原始文件的副本,TOC完好无损并进行gs但不幸的是,这些方法都没有做到令人满意的工作。要么它们的尺寸减小太多以致质量无法接受像素化,要么它们根本没有减小尺寸,并且在一种情况下实际上增加了它,尽管质量损失。

Replace pages

pdftk compress

no change in size bookmarks TOC are gone

gs screen

takes a ridiculously long time and 100% CPU errors: sfopen: gs_parse_file_name failed. ? | ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile 74.8MB-->10.2MB hideously pixellated bookmarks TOC are gone

gs printer

takes a ridiculously long time and 100% CPU no errors 74.8MB-->66.1MB light blue background on pages 1-4 bookmarks TOC are gone

gs ebook

errors: sfopen: gs_parse_file_name failed. ./base/gsicc_manage.c:1050: gsicc_open_search(): Could not find default_rgb.ic | ./base/gsicc_manage.c:1651: gsicc_set_device_profile(): cannot find device profile 74.8MB-->32.2MB badly pixellated bookmarks TOC are gone

qpdf --linearize

very fast, a few seconds no size change bookmarks TOC are gone

pdf2ps

took very long time output_pdf2ps.ps 74.8MB-->331.6MB

ps2pdf

答案 3 :(得分:16)

如果文件大小仍然太大,可能有助于使用ps2pdf缩小生成的pdf文件的分辨率:

pdf2ps input.pdf tmp.ps
ps2pdf -dPDFSETTINGS=/screen -dDownsampleColorImages=true -dColorImageResolution=200 -dColorImageDownsampleType=/Bicubic tmp.ps output.pdf

调整 -dColorImageResolution 选项的值以获得符合您需求的结果(该值描述DPI中的图像分辨率)。如果您的输入文件是灰度,则通过 Gray 替换 Color 或使用上述命令中的两个选项也可以提供帮助。通过将 -dPDFSETTINGS 选项更改为 / default / printer ,可以进一步微调。有关所有可能选项的说明,请参阅ps2pdf manual

答案 4 :(得分:3)

尝试将gpdf作为nullglob建议之后,我发现只需使用cups-pdf打印机就可以得到相同的压缩结果(~90mb文件低至~30mb)。如果您已经查看文档并且只需要压缩一个或两个文档,这可能更容易/更受欢迎。

在Ubuntu 12.04中,您可以通过

安装它
sudo apt-get install cups-pdf

安装完成后,请务必检入系统工具> 管理> 打印>右键单击“PDF”并将其设置为“启用”

默认情况下,输出会保存到主目录中名为 PDF 的文件夹中。

答案 5 :(得分:2)

pdf2ps large.pdf small.pdf就足够了,而不是两步

pdf2ps large.pdf very_large.ps 
ps2pdf very_large.ps small.pdf

但是,ps2pdf large.pdf small.pdf是更好的选择。

  • ps2pdf要快得多
  • 如果未指定其他参数,pdf2ps有时会生成更大的文件。

答案 6 :(得分:1)

我没有看到使用qpdf大幅减少文件大小。我找到的最好的方法是在pdftk完成后使用ghostscript将pdf转换为postscript然后再转换为pdf。在PHP中,您将使用exec:

$ps = $save_path.'/psfile.ps';
exec('ps2ps2 ' . $pdf . ' ' . $ps);
unlink($pdf);
exec('ps2pdf ' .$ps . ' ' . $pdf);
unlink($ps);

几分钟前我用这个来将pdftk输出从490k输出到71k。

答案 7 :(得分:1)

单行pdf2ps选项(由Lee提供)实际上增加了pdf大小。但是,这两个步骤之一做得更好。可以使用从&重定向到标准输入/输出和管道的方法,将其组合为一个:

pdf2ps大.pdf-| ps2pdf-small.pdf

将xsane生成的PDF从18 Mo减少到630 ko!

链接丢失了,但是对于本示例而言,这并不重要...这是获得所需结果的最简单方法。

答案 8 :(得分:0)

Okular 打印为 PDF

我刚刚使用 Okular 的 Print to PDF 将使用 Keynote 生成的 140MB PDF 转换为 2.8Mb。文本被转换为光栅并放大太多清晰地显示像素,但图像保持非常清晰并且可用于消息传递应用程序。

答案 9 :(得分:-1)

如果要压缩包含大量可选文本的PDF,在Windows上可以使用NicePDF Compressor - 选择“Flate”选项。 在尝试了所有内容(cpdf,pdftk,gs)之后,它最终帮助我将我的1360页PDF从500 MB压缩到10 MB。

答案 10 :(得分:-2)

我遇到了同样的问题,我使用此功能压缩单个页面,导致文件大小被压缩到原始大小的1/3。

for (int i = 1; i <= theDoc.PageCount; i++)
{
       theDoc.PageNumber = i;
       theDoc.Flatten();
}