2014-01-25 74 views

回答

1

您可以將Graphics對象寫入(java,not iText)Image對象。您可以使用下面的API調用java.awt.Image中添加到iText的:

  • 圖片#的getInstance(java.awt.Image中,java.awt.Color中)
  • 圖片#的getInstance(java.awt.Image中,java.awt.Color中,布爾值)

,也可以將圖像輸出到一個ByteArrayOutputStream和通過這些方法添加字節[]:

  • 圖片號碼的getInstance(字節[])
  • 圖片#的getInstance(字節[],布爾)

iText的圖像API:http://api.itextpdf.com/itext/com/itextpdf/text/Image.html

0

我不熟悉的PDF功能,但我相信它存儲的畫元素不是作爲一個圖像,但作爲一些矢量圖形,而不是(基於實際的Graphics#draw...調用,類似於從http://xmlgraphics.apache.org/batik/using/svg-generator.html SVGGraphics2D)。

無論如何,你都應該考慮做兩次paint(g)的調用,用不同的Graphics對象。我可以想象的唯一替代方案會有點難看...

class MulticastGraphics2D extends Graphics2D { 
    private List<Graphics2D> targets = new ArrayList<Graphics2D>(); 
    void allTarget(Graphics2D g) { targets.add(g); } 
    void removeTarget(Graphics2D g) { targets.remove(g); } 

    @Override 
    public void drawLine(int x0, int y0, int x1, int y1) { 
     for (Graphics2D target : targets) target.drawLine(x0,y0,x1,y1); 
    } 

    // + hundreds of further overridden methods.... 
}