2015-04-20 21 views
5

Sto sviluppando un'applicazione Java. Ho creato un grafico a torta usando jFreeChart e l'ho aggiunto a un file pdf creato con la libreria iTextPDF, ma non riesco a trovare un modo per allineare e centrare il grafico all'interno del pdf. Questo è il codice che sto usando per aggiungere il grafico:Come allineare un'immagine in iTextPDF?

PdfContentByte contentByte = writer.getDirectContent(); 

PdfTemplate template = contentByte.createTemplate(600, 600); 
Graphics2D graphics2d = template.createGraphics(600, 600, new DefaultFontMapper()); 
Rectangle2D rectangle2d = new Rectangle2D.Double(0, 0, 300, 300); 

resultsPieChart.draw(graphics2d, rectangle2d); 

graphics2d.dispose(); 
contentByte.addTemplate(template, 0, 0); 
+0

possibile duplicato di [Come posizionare un oggetto PDFGraphis2D in iText?] (Http: // stackoverflow.com/questions/19024681/how-to-position-a-pdfgraphis2d-object-in-itext) –

risposta

4

Si sta aggiungendo il modello alle coordinate (0, 0). Di solito, questo è l'angolo in basso a sinistra della pagina.

Esistono diversi modi per assicurarsi che il grafico venga visualizzato in un'altra posizione. Ad esempio: potresti fare il Math e aggiungere il modello a coordinate diverse. Se stai lavorando con una pagina A4, scoprirai che le dimensioni del tuo grafico (600 per 600 unità utente) non si adattano alla pagina (595 per 842 unità utente).

ho preferiscono avvolgendo il modello all'interno di un oggetto Image come questo:

Image chart = Image.getInstance(template); 

Questo non rasterizza il modello: se si tratta di dati vettoriali, l'immagine sarà un'immagine vettoriale.

Ora posso usare molti metodi di convenienza. Ad esempio: puoi ridimensionarlo per adattarlo a una pagina, puoi introdurre un allineamento orizzontale, puoi persino aggiungere l'immagine come cella a uno PdfPTable in tal caso verrà ridimensionato per adattarsi automaticamente a PdfPCell automaticamente.

Ulteriori approfondimenti:

+0

Puoi mostrarci l'esempio completo? Non so dove devo avvolgere il modello. Grazie! –