2009-11-21 5 views
10

J'ai défini une carte de variables et obtenu un fichier de données XML. Je veux convertir le fichier de données XML en PDF en utilisant iText. La question est de savoir comment intégrer des polices (par exemple, police polonaise, police chinoise) dans le PDF cible lors de la conversion de XML en PDF?Intégrer la police dans un fichier PDF en utilisant iText

Répondre

9

Si vous faites plus de travail avec iText, vous voudrez peut-être investir dans le iText book - il a des exemples pour toutes les fonctionnalités de iText.

Il y a un paramètre que vous spécifiez lorsque vous créez votre police qui définit l'incorporation des polices:

BaseFont helvetica = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED); 
Font font = new Font(helvetica, 12, Font.NORMAL); 

Vous pouvez trouver plus de police iText exemples liés ici: http://1t3xt.info/examples/browse/?page=toc&id=14

+1

J'ai étudié quelques exemples dans le livre iText, semble aucun n'a donné un indice pour mon problème. Dans votre exemple, il y a un drapeau "BaseFont.EMBEDDED" qui peut être utilisé pour indiquer l'incorporation du fichier de police. Mais ce que je dois faire est de convertir le fichier XML en répertoire PDF avec tagmap défini, l'ensemble du processus est seulement un appel. Il n'y a pas d'endroit où je peux mettre du code pour intégrer la police. Dans votre exemple, nous pouvons définir la police à un paragraphe afin que la police soit incorporée dans ce paragraphe. Mais pour la génération automatique de PDF avec tagmap, comment pouvons-nous définir la police, quelle classe/interface pouvons-nous utiliser pour intégrer la police? Merci. – moonli

+4

Problème résolu. Nous pouvons intégrer la police avec la configuration dans TagMap. La définition de l'attribut "embedded" sur "true" indique l'incorporation de polices. Merci quand même. – moonli

+0

https://www.manning.com/books/itext-in-action-second-edition est-ce le livre? –

0

Vous pouvez la transformer en PDF/A qui a toutes les polices incorporées.

PdfReader reader = new PdfReader(GetTemplateBytes()); 
    pst = new PdfStamper(reader, Response.OutputStream); 

    pst.Writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_4); 
    pst.Writer.PDFXConformance = PdfWriter.PDFA1A; 
7

Voici un moyen très simple de demander à iText d'intégrer toutes les polices. Insérez ceci avant votre code pour charger les polices:

FontFactory.defaultEmbedding = true; 
+1

Notez que dans iTextSharp, FontFactory.DefaultEmbedding est une propriété en lecture seule. – howcheng

Questions connexes