2013-09-26 35 views
3

我正在创建一个PDF,并在那里我想添加一个JPanel。如何在iText中定位PDFGraphis2D对象?

使用PdfContentBytePdfGraphics2D我可以将其添加到文档,但:

  • 如何定位,以便它在左边距,而不是左页边缘?
  • 我该如何防止它显示超过其他元素?
  • 换句话说:我怎么能把它放在一个段落?

的代码片段:

// multiple Paragraphs 
// ... 
JPanel myPanel = ... 

PdfContentByte canvas = writer.getDirectContent(); 
int origWidth = myPanel.getWidth(); 
int origHeight = myPanel.getHeight(); 
float width = document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin(); 
double scale = width/origWidth; 
Graphics2D g2 = new PdfGraphics2D(canvas, origWidth, origHeight); 
g2.scale(scale, scale); 
myPanel.paint(g2); 
g2.dispose(); 

// even more Paragraphs 
//... 
+0

您可能想要创建一个单独的模板,使用其Graphics2D,并将模板放置在您想要的位置。 – mkl

回答

3

我把它用PdfTemplate和创建从一个Image工作。

PdfContentByte canvas = writer.getDirectContent(); 
int origWidth = myPanel.getWidth(); 
int origHeight = myPanel.getHeight(); 
PdfTemplate template = canvas.createTemplate(origWidth, origHeight); 
Graphics2D g2 = new PdfGraphics2D(template, origWidth, origHeight); 
myPanel.paint(g2); 
g2.dispose(); 
Image image = Image.getInstance(template); 
float width = document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin(); 
image.scaleToFit(width, 1000); 
document.add(image)