J'utilise iTextSharp pour charger un PDF existant et ajouter du texte en utilisant le PdfStamper. Je veux un contrôle total sur le texte, ce qui signifie que je veux être en mesure de contrôler la police (seulement TrueType), la taille de la police et les coordonnées. En ce moment, j'utilise ShowTextAligned pour ajouter du texte à certaines coordinations et setFontAndSize pour définir la police et la taille de la police. Ceci est mon code pour ajouter du texte:Utilisation de différentes polices en PDF avec iTextSharp et PDFStamper
private void AddText(BaseFont font, string text, int x, int y, int size)
{
pdf.BeginText();
pdf.SetFontAndSize(font, size);
pdf.ShowTextAligned(PdfContentByte.ALIGN_LEFT, text, x, y, 0);
pdf.EndText();
}
La fonction suivante est utilisée pour charger la police TrueType:
public BaseFont GetFont(string font, string encoding)
{
if (!(font.EndsWith(".ttf") || font.EndsWith(".TTF")))
font += ".ttf";
BaseFont basefont;
basefont = BaseFont.CreateFont(ConfigurationManager.AppSettings["fontdir"] + font, encoding, BaseFont.NOT_EMBEDDED);
if (basefont == null)
throw new Exception("Could not load font '" + font + "' with encoding '" + encoding + "'");
return basefont;
}
Le code suivant est utilisé pour charger le fichier PDF existant:
Stream outputPdfStream = Response.OutputStream;
PdfReader pdfReader = new PdfReader(new RandomAccessFileOrArray(HttpContext.Current.Request.MapPath("PdfTemplates/" + ConfigurationManager.AppSettings["pdf_template"])), null);
PdfStamper pdfStamper = new PdfStamper(pdfReader, outputPdfStream);
pdf = pdfStamper.GetOverContent(1);
Tout cela fonctionne parfaitement, sauf lorsque j'essaie d'utiliser des polices différentes. Ainsi, lorsque AddText est appelé plusieurs fois avec des polices différentes, le PDF affiche une erreur générique lors de l'ouverture. Je me demande s'il est possible d'utiliser des polices différentes en utilisant la fonction ShowTextAligned et si c'est le cas, comment?