Я использую iTextSharp для загрузки существующего PDF и добавления текста с помощью PdfStamper.Мне нужен полный контроль над текстом, то есть я хочу иметь возможность контролировать шрифт (только TrueType), размер шрифта и координаты.Сейчас я использую ShowTextAligned для добавления текста к определенным координатам и setFontAndSize для установки шрифта и размера шрифта.Это мой код для добавления текста:
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();
}
Следующая функция используется для загрузки шрифта 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;
}
Следующий код используется для загрузки существующего PDF:
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);
Все это прекрасно работает, кроме случаев, когда я пытаюсь использовать разные шрифты.Поэтому, когда AddText вызывается несколько раз с разными шрифтами, PDF-файл будет отображать общую ошибку при открытии.Интересно, можно ли использовать разные шрифты с помощью функции ShowTextAligned и если да, то как?