Ich verwende iTextSharp, um eine vorhandene PDF zu laden und Text mit dem PdfStamper hinzuzufügen. Ich möchte die volle Kontrolle über den Text, dh ich möchte in der Lage sein, die Schriftart (nur TrueType), Schriftgröße und Koordinaten zu steuern. Im Moment verwende ich ShowTextAligned, um bestimmten Koordinaten Text hinzuzufügen, und setFontAndSize, um die Schriftart und Schriftgröße festzulegen. Dies ist mein Code, um Text hinzuzufügen:Verwenden verschiedener Schriftarten in PDF mit iTextSharp und 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();
}
Die folgende Funktion wird die Truetype-Schriftart zu laden:
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;
}
Der folgende Code wird verwendet, um die bestehende PDF zu laden:
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);
Das alles funktioniert perfekt, außer wenn ich versuche, verschiedene Schriftarten zu verwenden. Wenn AddText mehrfach mit verschiedenen Schriftarten aufgerufen wird, zeigt die PDF beim Öffnen einen allgemeinen Fehler an. Ich frage mich, ob es möglich ist, verschiedene Schriftarten mit der ShowTextAligned-Funktion zu verwenden, und wenn ja, wie?