我使用pdftk使用以下命令行压缩 pdf
pdftk file1.pdf output file2.pdf compress
它随着我的文件重量的减少而起作用。
有[选项]来改变压缩吗???
或者也许其他解决方案来压缩我的文件?它很重,因为有些图形有很多点。有没有办法将这些图表转换为 jpg 并调整压缩?
我使用pdftk使用以下命令行压缩 pdf
pdftk file1.pdf output file2.pdf compress
它随着我的文件重量的减少而起作用。
有[选项]来改变压缩吗???
或者也许其他解决方案来压缩我的文件?它很重,因为有些图形有很多点。有没有办法将这些图表转换为 jpg 并调整压缩?
我遇到了同样的问题,并找到了两种不同的解决方案(有关更多详细信息,请参阅此线程)。两者都大大减少了我未压缩的 PDF 的大小。
像素化(有损):
convert input.pdf -compress Zip output.pdf
非像素化(无损,但显示可能略有不同):
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
尝试压缩我用 400ppi tiffs 制作的 PDF,主要是 8 位,少数 24 位,使用 PackBits 压缩,使用tiff2pdf
Zip/Deflate 压缩。我在使用这些方法中的每一种时都遇到了一个问题:上述方法都没有保留我在 Acrobat Pro X 中煞费苦心地手动创建的书签 TOC。甚至没有推荐ebook
的gs
. 当然,我可以打开一份完整的 TOC 的原件副本并执行一项操作,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
:
pretty fast
74.8MB-->79MB
very slightly degraded with sl. bluish background
bookmarks TOC are gone
这个程序效果很好
pdf2ps large.pdf very_large.ps
ps2pdf very_large.ps small.pdf
试试看。
如果文件大小仍然太大,它可以帮助使用 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 手册。
pdf2ps large.pdf small.pdf
就足够了,而不是两个步骤
pdf2ps large.pdf very_large.ps
ps2pdf very_large.ps small.pdf
不过,ps2pdf large.pdf small.pdf
是更好的选择。
ps2pdf
快得多pdf2ps
有时会产生更大的文件。单行 pdf2ps 选项(由 Lee 提供)实际上增加了 pdf 大小。但是,这两个步骤做得更好。它可以使用从 & 到标准输入/输出和管道的重定向组合成一个:
pdf2ps large.pdf - | ps2pdf - small.pdf
确实将 xsane 生成的 PDF 从 18 Mo 减少到 630 ko!
链接丢失了,但对于本示例,这不是问题......并且是实现所需结果的最简单方法。
在按照nullglob的建议尝试 gpdf 后,我发现仅使用 cups-pdf 打印机就可以得到相同的压缩结果(从 ~900mb 文件降至 ~30mb)。如果您已经在查看文档并且只需要压缩一个或两个文档,这可能会更容易/更受欢迎。
在 Ubuntu 12.04 中,您可以通过以下方式安装它
sudo apt-get install cups-pdf
安装后,请务必检查系统工具>管理>打印>右键单击“PDF”并将其设置为“启用”
默认情况下,输出保存在您的主目录中名为PDF的文件夹中。
我没有看到使用 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。
我刚刚使用 Okular 的 Print to PDF 将使用 Keynote 生成的 140MB PDF 转换为 2.8Mb。文本被转换为光栅,放大太多清晰显示像素,但图像保持非常清晰,可用于消息传递应用程序。
在尝试了此处列出的所有答案之后,我获得的带有大量图形的 pdf 的最佳结果是
pdftocairo input.pdf output.pdf -pdf
我通过在 Gnome 中使用 Evince 打开 pdf 然后打印到文件发现了这一点。与我的 pdf 文件的所有其他答案相比,这导致了更好的文件压缩和更好的文件质量。以这种方式打印到文件时,似乎在后台使用了 cairo 图形:在结果文件上运行pdfinfo显示
制作人:cairo 1.16.0 ( https://cairographics.org )
我有同样的问题,我使用这个函数来压缩单个页面,导致文件大小被压缩到原始大小的 1/3。
for (int i = 1; i <= theDoc.PageCount; i++)
{
theDoc.PageNumber = i;
theDoc.Flatten();
}
如果您想压缩包含大量可选文本的 PDF,您可以在 Windows 上使用NicePDF Compressor - 选择“Flate”选项。在尝试了一切(cpdf、pdftk、gs)之后,它终于帮助我将我的 1360 页 PDF 从 500 MB 压缩到 10 MB。