我使用 pdftk 使用以下命令行压缩pdf
pdftk file1.pdf output file2.pdf compress
它的作用是我文件的重量减少了。
是否有[选项]来更改压缩???
或者压缩我的文件的其他解决方案?它很重,因为有些图形很多点。有没有办法将这些图转换为例如jpg并调整压缩?
答案 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 的 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();
}