2016-08-05 12 views
0

既存のpdfの上に矩形を描く必要があります。ここで私はどのように既存のPDF上に幾何学図形を上に描くのですか?

public class Main { 


    public static void main(String[] args) throws IOException { 

     String originalFile = "C:\\Users\\original.pdf"; 
     String modifiedFile = "C:\\Users\\modified.pdf"; 

     PDDocument doc = PDDocument.load(new File(originalFile)); 
     PDPage page = (PDPage) doc.getDocumentCatalog().getPages().get(0); 

     PDPageContentStream contentStream = new PDPageContentStream(doc, page ); 
     drawRect(contentStream, Color.green, new java.awt.Rectangle(500, 500, 20, 200), true); 
     contentStream.close(); 
     doc.save(new File(modifiedFile)) ; 

    } 



    private static void drawRect(PDPageContentStream content, Color color, Rectangle rect, boolean fill) throws IOException { 
     content.addRect(rect.x, rect.y, rect.width, rect.height); 
     if (fill) { 
      content.setNonStrokingColor(color); 
      content.fill(); 
     } else { 
      content.setStrokingColor(color); 
      content.stroke(); 
     } 
    } 


} 

を行うものですが、これは空白のページにある緑色の四角形を作成します。私は既存のデータの上にその矩形が必要です。正しく保存していますか?

答えて

2

このラインこれに

PDPageContentStream contentStream = new PDPageContentStream(doc, page ); 

を変更してください:

PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true, true); 

これが唯一の余分なコンテンツストリームを作成するだけでなく、グラフィックスコンテキストをリセットされません。

関連する問題