2013-09-26 64 views
3

我已經寫信給PDF文件導出到的一系列圖像的程序,它顯示如下,當我使用互聯網上發現的各種pdf測試我的程序時,有一種pdf不能像其他PDF一樣準確地導出爲圖像,我使用的資源如下所示。PDFRenderer輸出到圖像,出口不準確

原文PDF鏈接: 2007_OReilly_EssentialActionScript3.0.pdf

我將使用第7頁上面給出的PDF的。

預期影像是出口:Click here for expected result image

程序完成操作後,得到的圖像是完全不同的。

Click here for Resulting image

正如你所看到的,所產生的圖像上移和一些內容消失,結果圖像失去了在PDF格式,它不集中,它本身縮進到右邊。

PDFrenderer本身沒有問題,如果我們運行PDFrenderer的.jar文件,頂端和格式與原始PDF文件一致。

PDF opened with PDFRenderer in page 7

已知的可能問題:ImageIO的不支持CMYK格式,因此,第1頁等頁面包括使用CMYK格式將無法正確導出。不知道我是否正確。

另一個問題:PDFRenderer似乎在閱讀頁面1這可能是由於PDF格式用過的東西要失敗,我不很瞭解

使用庫:PDFRenderer

您可能從上述鏈接下載PDF並使用我提供的程序來重現問題。

我的問題:我該如何解決這個問題?我的程序有什麼問題嗎?

回答

1

我自己發現了問題,我可以修復它。

如下

我的JAVA程序不遵循「X」座標和解釋「Y」座標pdf文件,是簡單的,我的程序硬編碼的X,Y座標。在大多數情況下,大多數的PDF會像下面的圖片

Most PDF http://img266.imageshack.us/img266/7618/4cl5.png

無論其工作,我公司提供的PDF是不是這種情況下,左上角的X座標不爲0,這樣這就是Y.爲什麼圖像已被切斷。

簡而言之,我的程序會捕獲矩形形狀的PDF屏幕,但是由於上面提供的PDF沒有找到左上角的座標,因此它將捕獲如下圖所示的屏幕。 Y座標不是寫在圖片中的,我的錯誤。

Exception PDF http://img12.imageshack.us/img12/9672/plhb.png

用下面的修改方案,將工作最喜歡的情況下,它更是好。

 
Rectangle rect = new Rectangle((int)page.getPageBox().getX(), (int)page.getPageBox().getY(), (int) page.getBBox().getWidth(), (int) page.getBBox().getHeight()); 

這使得程序「捕獲」由PDFRenderer提供整個PDF從左上角開始這就像我所提供的第一個圖像,它會的工作原理相同,即使在不同的頁面大小從A4到A7 ,我沒有進一步測試,但它的作品

+0

非常感謝你對這個問答式的帖子。這正是我所需要的 – mmcrae

+0

我只是想知道......是否需要BufferedImage **和**圖像?也許這只是'java.awt'的怪癖,但帶有Rectangle,Image,BufferedImage和Graphics的代碼看起來很奇怪 – mmcrae