2011-02-02 570 views
3

我想完成以下工作。我有一組PDF文件,首先我想檢查座標系的原點。如果pdf的座標系的原點不是左上角[通常原點是左下角],我想創建一個帶左上角座標的結果PDF。我正在嘗試使用PDFBox [下面的代碼片段]來完成此操作,但是由此產生的PDF將變爲空白,我做錯了什麼。我是PDFBox的新手,因此我非常讚賞這方面的任何幫助。PDFBox - 座標系

 // loading the existing doc    
     PDDocument doc = PDDocument.load("C:\\Users\\test\\workspace\\example1.pdf"); 
     List allPages = doc.getDocumentCatalog().getAllPages(); 
     PDPageContentStream contentStream = null; 

     for(int i=0; i<allPages.size(); i++) 
     { 
      PDPage page = (PDPage)allPages.get(i); 
      contentStream = new PDPageContentStream(doc, page); 
      contentStream.concatenate2CTM(1f, 0f, 0f, -1f, 0f, page.findMediaBox().getHeight()); 
      contentStream.saveGraphicsState(); 
      contentStream.close(); 

     } 
     doc.save("C:\\Users\\test\\workspace\\example2.pdf"); 
     doc.close(); 
+0

這個問題與iText有什麼關係? – 2011-02-03 00:09:18

+0

如果任何人可以建議使用itext其解決方案.. – 2011-02-03 04:13:03

回答

2

您正在創建一個空的已轉換的內容流。

您需要通過page.getContents()獲取現有內容,並將其包裝在轉換中。喜歡的東西:

contentStream.conactenate2CTM(...); 
contentStream.magicFunctionThatSucksUpTheExistingPageContent(page.getContents()); 
contentStream.close(); 

PS:到saveGraphicsState()呼叫沒有相應的調用restoreGraphicsState()是一個沒有沒有。

哦,它看起來像「magicFunction ...」被稱爲appendRawCommands()