changement de format par défaut dataExporter dans Primefaces
Je veux utiliser pour générer un fichier pdf dataexporter, l'utilisation de la méthode de préprocesseur pour insérer du contenu. En donnant le type de format lettre page assimile ainsi que des formats de textes. Puis faire un saut de page pour placer le graphique sur une nouvelle page, à droite il y a le problème que génère la deuxième page avec d'autres de la taille et aussi de trouver un moyen de changer la taille de police du texte de la table exportée.
<h:commandLink>
<p:graphicImage value="/images/pdf.png"/>
<p:dataExporter type="pdf" target="dataTableAddDetalles" fileName="pdf" preProcessor="#{serviciosMB.preProcessPDF}"/>
</h:commandLink>
backing bean
public void preProcessPDF(Object document) throws Exception {
try {
Document pdf = (Document) document;
pdf.open();
pdf.setPageSize(PageSize.LETTER);
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String logo = servletContext.getRealPath("") + File.separator + "images" + File.separator + "header.gif";
//pdf.add(Image.getInstance(logo));
pdf.add(new Paragraph("EMNI", FontFactory.getFont(FontFactory.HELVETICA, 22, Font.BOLD, new Color(0, 0, 0))));
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
pdf.add(new Phrase("Fecha: " + formato.format(new Date())));
pdf.newPage();
} catch (Exception e) {
//JsfUtil.addErrorMessage(e, e.getMessage());
}
}
Vous devez vous connecter pour publier un commentaire.
La primefaces de la documentation (de 4.0) ne fait pas mention de la capacité à écrire de données personnalisé exportateur, ne pré & post-processeurs, qui, dans le cas de PDF ne vous empêche de faire d'importantes modifications de données, etc.
Mais ce que vous pouvez faire est de créer un package dans votre projet appelé
et copie
ExporterFactory.java
de primefaces source.Vous pouvez alors remplacer l'original
PDFExporter
appel avec votre propre mise en œuvre.L'exportateur de la mise en œuvre est assez simple. Il utilise la bibliothèque iText (bien qu'une version obsolète) et vous pouvez facilement l'étendre à vos besoins.
Un évident problème avec cette approche est que vous pouvez avoir à être très prudent quand (et si) vous êtes à la mise à jour de votre primefaces de la bibliothèque dans l'avenir.
Vous ne pouvez pas faire ce que vous voulez à l'aide de dataexporter, vous avez besoin de changer votre code:
Et votre managed bean:
exportPDFTable méthode:
et writePDFToResponse méthode est la suivante: