2011-02-02 83 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とは何が関係していますか? –

+0

もし誰かがそれを細かく使って解決策を提案できれば。 –

答えて

2

変換された空のコンテンツストリームを作成しています。

既存のコンテンツをpage.getContents()で取得して、変換する必要があります。

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

PS:何かのようrestoreGraphicsState()に対応するコールなしsaveGraphicsState()への呼び出しには、noです。

ああ、「magicFunction ...」はappendRawCommands()と呼ばれています。

+0

マーク、javadocsのほかにこの情報はどこにありますか?あなたはこれについて深く理解しているようです。あなたはPDF仕様書を勉強して学んだのですか、(pdfboxの)「cookbook」のリソース以外のより実用的な例を提供する別のリソースがありますか? – William

+2

PDF仕様を読み、それに基づいてソフトウェアを作成している年。 –