2017-12-01 3 views
0

私はJFreeChartイメージを作成しましたが、配置に問題があります。画像の左下隅がページの左下隅に配置されます。Itextを使用したJFreeChartイメージのポスト5

Rectangle page=writer.getPageSize(); 
// swap X and Y for Landscape dimensions 
float sizeX=page.getHeight(); 
float sizeY=page.getWidth(); 
float scale=.7f; 
float marginY=10.f; 
float marginX=50.f; 
PdfContentByte cb=writer.getDirectContent(); 
PdfTemplate tp=cb.createTemplate(sizeX*scale+1,sizeY*scale+1); 
PdfGraphics2D g2d=new PdfGraphics2D(tp,sizeX*scale+1,sizeY*scale+1); 
tp.setWidth(sizeX*scale+1); 
tp.setHeight(sizeY*scale+1); 
Chart.getInstance().getChart().draw(g2d, new java.awt.geom.Rectangle2D.Float(0,0,sizeX*scale,sizeY*scale)); 
g2d.dispose(); 
Image image=Image.getInstance(tp); 
image.setAbsolutePosition(marginX, sizeY-350.f); 
document.add(image); 

画像の左上隅を現在のカーソル位置に配置したいと思います。私は間違って何をしていますか? TIA。

答えて

2

あなたは直接ページコンテンツcbためPdfGraphics2Dを作成し、いないテンプレートtp

PdfGraphics2D g2d=new PdfGraphics2D(cb,sizeX*scale+1,sizeY*scale+1); 

このように、チャートを直接cbに引き込まれるとtpのあなたの扱いは全く関係ありません!

あなたは、そのため、テンプレートtpPdfGraphics2Dを初期化する必要があります。Imageに包まれ

PdfGraphics2D g2d=new PdfGraphics2D(tp,sizeX*scale+1,sizeY*scale+1); 

さらにあなたが最初にその直接の内容に、二回のページへtpを追加

cb.add(tp); 

、その後、インスタンスをDocument documentに追加します。

Image image=Image.getInstance(tp); 
image.setAbsolutePosition(marginX, sizeY-marginY); 
document.add(image); 

明らかに、一度追加する必要があります。

+0

ありがとうございました。それはそれだった。二重追加は、移動させるために異なるものを試した結果です。私は修正されたコードを表示するようにOPを変更しました。 –

関連する問題