iTextSharp能否降低pdf的dpi分辨率?

时间:2012-06-26 13:53:53

标签: pdf pdf-generation itextsharp resolution dpi

我正在尝试将高分辨率PDF文件上传到我们的服务器,但希望生成较小的PDF文件大小,以便通过降低dpi分辨率在我的Web应用程序上快速加载。

这是iTextSharp能做的吗?或者是否有其他可以实现此目的的自由软件?

2 个答案:

答案 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。当然,您可以在单色,灰色和彩色图像类型中自由使用不同的分辨率,采样类型和阈值设置。