2012-06-26 68 views
1

我試圖將高分辨率PDF文件上傳到我們的服務器,但想要生成較小的PDF文件大小,以便通過降低dpi分辨率將其快速加載到我的Web應用程序中。iTextSharp可以減少pdf的dpi分辨率嗎?

這是iTextSharp可以做的事嗎?還是有另一個可以實現這一目標的免費軟件?

回答

2

PDF files, in general, do not have DPI。嵌入在PDF文件中的柵格圖像可以。你可以做的是提取嵌入在PDF文件中的圖像,將它們調整爲較低的分辨率,並將它們放回到文件中。

在本書iText in Action中有關於此主題的章節。

+0

YMS,有沒有一種方法可以減少文件大小而不減少圖像大小? – Akin

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 - 你也可以嘗試使用或/Subsample而不是我的建議的/Bicubic/Average值。當然,您也可以自由使用不同的設置來分辨單色,灰色和彩色圖像類型的分辨率,採樣類型和閾值。