我有一個自定義報告,它通過Graphics2D
進行繪製,並使用大量微小的BufferedImage
精靈。 PrinterJob.print()
似乎對每個精靈大致調用了一次Printable.print()
(實際的計數可能會變化),所以有些頁面會重新渲染150次......這會導致打印速度慢得令人無法接受,兩頁約爲10秒。用Java打印 - Printable.print()調整圖像大小
我發現這一點:Why does the java Printable's print method get called multiple times with the same page number?
但它似乎並沒有解釋我的具體問題(或僅部分解釋了吧)。我創建了一個只有少量精靈的測試報告,並且在垂直或水平座標軸上添加和刪除圖像時,出現了少量的調整大小。
使用Bullzip打印到PDF時,我注意到在放大圖像之後,它們使用雙線性或雙三次算法放大。這些圖像中的一個,具有索引調色板是獨一無二的,看起來並沒有縮放。我確認縮放是一種Java行爲,Bullzip不會通過打印到真實的打印機並觀察相同的圖像進行縮放而不是執行。
因此,它打擊我打印API試圖重新調整圖像到任何DPI它的想法,但由於某種原因,它每次遇到一個它認爲需要這種治療的圖像時調用Printable.print()
。
如何解決此問題?我試着在上設置渲染提示,當我調用Printable.print()
時,得不到任何效果。我不知道還有什麼辦法可以找到並檢查打印API的源代碼。