我正在尝试将高分辨率PDF文件上传到我们的服务器,但希望生成较小的PDF文件大小,以便通过降低dpi分辨率在我的Web应用程序上快速加载。
这是iTextSharp能做的吗?或者是否有其他可以实现此目的的自由软件?
答案 0 :(得分:2)
PDF files, in general, do not have DPI。嵌入在PDF文件中的光栅图像可以。您可以做的是提取嵌入在PDF文件中的图像,将它们调整为较低的分辨率,然后将它们放回文件中。
在iText in Action一书中有一章关于这个主题。
答案 1 :(得分:1)
Ghostscript是自由软件(如果你愿意的话),它可以以任何你想要的方式对PDF进行下采样(好吧,下采样可能嵌入在其页面上的像素图像)。
示例命令行,它将所有图像下采样到72dpi(假设它们的分辨率大于144dpi)。我不会使用最短的命令,但我故意尝试枚举所有可能有用的参数,以便您可以进行实验:
gs \
-o downsampled.pdf \
-sDEVICE=pdfwrite \
-dColorImageDownsampleThreshold=2.0 \
-dGrayImageDownsampleThreshold=2.0 \
-dMonoImageDownsampleThreshold=2.0 \
-dColorImageDownsampleType=/Bicubic \
-dGrayImageDownsampleType=/Bicubic \
-dMonoImageDownsampleType=/Bicubic \
-dDownsampleColorImages=true \
-dDownsampleGrayImages=true \
-dDownsampleMonoImages=true \
-dColorImageResolution=72 \
-dGrayImageResolution=72 \
-dMonoImageResolution=72 \
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
\
-dEncodeColorImages=true \
-dEncodeGrayImages=true \
-dEncodeMonoImages=true \
-dColorImageFilter=/DCTEncode \
-dGrayImageFilter=/DCTEncode \
-dMonoImageFilter=/CCITTFaxEncode \
input.pdf
如果要对所有彩色图像(也就是从73dpi到144dpi的图像)进行下采样,则使用-dColorImageDownsampleThreshold=1.0
(Ghostscript的默认值为=1.5
);其他 * ImageDownsampleThreshold 设置也是如此。
对于 * ImageDownsampleTypes - 您还可以尝试使用/Average
或/Subsample
的值而不是我建议的/Bicubic
。当然,您可以在单色,灰色和彩色图像类型中自由使用不同的分辨率,采样类型和阈值设置。