簡體   English   中英

使用pdfbox渲染PDF

[英]PDF rendering using pdfbox

當我嘗試將pdf轉換為圖像時,對於某些pdf,我會收到“內存不足”錯誤。 因此,我增加了堆大小,然后再次因某些其他pdf文件而收到錯誤消息。 暫時假設我沒有其他對象的內存泄漏。 那么,此內存出現錯誤的原因是什么? 僅僅是圖像太大(我認為不是這種情況)以至於它消耗了堆,或者pdfbox在其內存中存儲了每個頁面的緩沖圖像,這導致了堆大小的增加嗎? 任何見解都將是美好的。

這是我要渲染的pdf的鏈接。 https://drive.google.com/file/d/0B_Ke2amBgdpeNFFDem5KVVVzanc/view?usp=sharing這是代碼段。

PDFRenderer pdfRenderer = new PDFRenderer(pdDoc);
BufferedImage image = pdfRenderer.renderImageWithDPI(page-1, 300,ImageType.GRAY);
//image=ImageHelper.convertImageToGrayscale(image);
ImageIOUtil.writeImage(image,"G:/Trial/tempImg.png", 300);

請注意,對於此特定的pdf問題,已通過增加堆大小來解決,但我想知道的是pdfbox是否將緩沖的圖像存儲在其內存中並有助於堆大小。

這是另一個pdf,即使在增加堆大小之后也面臨相同的問題。 https://drive.google.com/file/d/0B_Ke2amBgdpedDBtaG1QcW1oYlU/view?usp=sharing在此pdf中,我的代碼在渲染第44頁時會花費很多時間。我不知道為什么會這樣。

好吧,看來這個問題不是由於任何錯誤或內存泄漏,而是由於圖像大小。 建議的解決方案:-1)增加Xmx大小2)切換到64位JVM。

編輯:-感謝您的答案。 我只是要在這里布置它。 @Tilman Hausherr進行了測試,結果是應該增加堆大小。請注意,使用了64位jvm。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM