franksisca
04-06-2012, 11:03
Non riesco a creare una intestazione con itext che contenga immagini e che si ripeta per ogni pagina.
stesso discorso per il piè di pagina.
chimmi posta un esempio, perchè quelli che ho trovato non risolvono il mio problema.
franksisca
04-06-2012, 18:03
lavorandoci da solo:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package gestioneStampe;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Utente1
*/
public class IntestazionePdf extends PdfPageEventHelper {
private final Font GRASSETTO10 = new Font(Font.FontFamily.TIMES_ROMAN, 10, Font.BOLD);
private final Font NORMALE8 = new Font(Font.FontFamily.TIMES_ROMAN, 8, Font.NORMAL);
private final Font NORMALE6 = new Font(Font.FontFamily.TIMES_ROMAN, 6, Font.NORMAL);
@Override
public void onStartPage(PdfWriter writer, Document document) {
try {
PdfContentByte directContent = writer.getDirectContent();
directContent.saveState();
directContent.setLineWidth(1.0f);
directContent.moveTo(56.7f, 742.78f);
directContent.lineTo(538.65f, 742.78f);
directContent.moveTo(56.7f, 99.22f);
directContent.lineTo(538.65f, 99.22f);
directContent.stroke();
directContent.restoreState();
Rectangle rect = writer.getBoxSize("art");
Image logoFederimprese = Image.getInstance(getClass().getResource("/images/logo.png"));
logoFederimprese.scaleAbsolute(311.81f, 70.86f);
logoFederimprese.setAbsolutePosition(56.70f, 750f);
document.add(logoFederimprese);
Image logoClaai = Image.getInstance(getClass().getResource("/images/logoclaai.png"));
logoClaai.scaleAbsolute(141.73f, 70.86f);
logoClaai.setAbsolutePosition(396.85f, 750f);
document.add(logoClaai);
Phrase primo = new Phrase(0, "asdasdsa", GRASSETTO10);
Phrase secondo = new Phrase(0, "asdae", NORMALE8);
Phrase terzo = new Phrase(0, "adsasd", NORMALE8);
Phrase quarto = new Phrase(0, "asdsada", NORMALE8);
Phrase quinto = new Phrase(0, "asdada", NORMALE6);
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_LEFT, primo,
rect.getLeft(), rect.getBottom() - 15, 0);
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_LEFT, secondo,
rect.getLeft(), rect.getBottom() - 25, 0);
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_LEFT, terzo,
rect.getLeft(), rect.getBottom() - 35, 0);
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_LEFT, quarto,
rect.getLeft(), rect.getBottom() - 45, 0);
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_LEFT, quinto,
rect.getLeft(), rect.getBottom() - 55, 0);
} catch (DocumentException ex) {
Logger.getLogger(IntestazionePdf.class.getName()).log(Level.SEVERE, null, ex);
} catch (MalformedURLException ex) {
Logger.getLogger(IntestazionePdf.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(IntestazionePdf.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
da collegare al documento in questo modo:
Rectangle dimensioniPagina = new Rectangle(PageSize.A4);
Document documento = new Document(dimensioniPagina, 56.7f, 56.7f, 99.22f, 99.22f);
PdfWriter pdfWriter = PdfWriter.getInstance(documento, new FileOutputStream(path));
pdfWriter.setBoxSize("art", new Rectangle(56.7f, 99.21f, 481.89f, 779.52f));
IntestazionePdf intestazionePdf = new IntestazionePdf();
pdfWriter.setPageEvent(intestazionePdf);
P.S.: inserisco 2 immagini sopra con linea e 5 righe sotto con linea, e funziona.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.