1

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

这是 iTextSharp 可以做到的吗?或者有没有其他免费软件可以做到这一点?

4

2 回答 2

2

PDF 文件通常没有 DPI。嵌入在 PDF 文件中的光栅图像可以。您可以做的是提取 PDF 文件中嵌入的图像,将它们调整为较低的分辨率,然后将它们放回文件中。

iText in Action一书中有一章关于这个主题。

于 2012-06-26T14:04:00.980 回答
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. 当然,您也可以在单色、灰色和彩色图像类型中自由使用不同的分辨率、采样类型和阈值设置。

于 2012-06-26T23:55:16.150 回答