我擁有現有/源PDF源文檔,並從中複製選定頁面並生成具有選定頁面的目標PDF。現有/源文檔中的每個頁面中不同分辨率被掃描,並且它的尺寸變化:使用iText7壓縮生成的PDF的最佳實踐
- 用4頁=> 175 kb的生成的文檔
- 用4頁=> 923 kb的生成的文檔(我想這是由於源文檔中每頁的掃描分辨率較高)
壓縮此頁面的最佳做法是什麼? 是否有任何壓縮/縮小最終PDF的代碼示例,其中包含不同分辨率的源文檔的複製頁面?
最親切的問候
我擁有現有/源PDF源文檔,並從中複製選定頁面並生成具有選定頁面的目標PDF。現有/源文檔中的每個頁面中不同分辨率被掃描,並且它的尺寸變化:使用iText7壓縮生成的PDF的最佳實踐
壓縮此頁面的最佳做法是什麼? 是否有任何壓縮/縮小最終PDF的代碼示例,其中包含不同分辨率的源文檔的複製頁面?
最親切的問候
如果你只是將掃描到PDF文檔,是有意義的,由此產生的文件的大小上去,如果您使用的是高分辨率圖像。
請記住,iText是一個PDF庫。不是圖像操作庫。
你當然可以使用普通的老java來嘗試壓縮圖像。
public static void writeJPG(BufferedImage bufferedImage, OutputStream outputStream, float quality) throws IOException
{
Iterator<ImageWriter> iterator = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter imageWriter = iterator.next();
ImageWriteParam imageWriteParam = imageWriter.getDefaultWriteParam();
imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
imageWriteParam.setCompressionQuality(quality);
ImageOutputStream imageOutputStream = new MemoryCacheImageOutputStream(outputStream);
imageWriter.setOutput(imageOutputStream);
IIOImage iioimage = new IIOImage(bufferedImage, null, null);
imageWriter.write(null, iioimage, imageWriteParam);
imageOutputStream.flush();
}
但實際上,將掃描的圖像轉換成PDF使生活變得更加困難。想象一下在你之後必須處理該文件的人。他們打開它,看到文字,嘗試選擇它,並沒有任何反應。
Additionaly,你可能會創建PdfWriter
實例時改變WriterProperties
:
PdfWriter writer = new PdfWriter(dest,
new WriterProperties().setFullCompressionMode(true));
完全壓縮模式將壓縮某些對象到對象流,它也將壓縮PDF的交叉引用表。由於文檔中的大多數對象都是圖像(已壓縮),壓縮對象不會產生太大影響,但如果頁面數量很多,則壓縮交叉引用表格可能會導致較小的PDF文件。
問題要求我們推薦或找到一本書,工具,軟件庫,教程或其他非本地資源,因爲它們傾向於吸引自以爲是的答案和垃圾郵件,所以不適合堆棧溢出。 – Lexi
我需要使用iText進行壓縮的代碼示例...我試着寫禮貌地問:)) – dkkd
這很棒,你在這裏遵循我們的不錯的政策!不幸的是,這個社區不喜歡什麼時候人們要求代碼示例,因爲它違背了我上面提到的離題指南。如果您向我們展示您嘗試實施的一些代碼,則我們更喜歡這些代碼,然後解釋哪些內容不適用於您需要幫助的內容。這更有可能讓你得到一些體面的迴應,甚至可能擺脫你收到的一些降價 – Lexi