私はiTextSharpを使用して既存のPDFを読み込み、PdfStamperを使用してテキストを追加しています。テキストを完全に制御したい、つまりフォント(TrueTypeのみ)、フォントサイズ、座標を制御できるようにしたいということです。今は、ShowTextAlignedを使用して特定のコーディネートにテキストを追加し、setFontAndSizeを使用してフォントとフォントサイズを設定しています。これは、テキストを追加するための私のコードです:iTextSharpとPDFStamperを使用してPDFで異なるフォントを使用する
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はopenend時に一般的なエラーを表示します。 ShowTextAligned関数を使用して別のフォントを使用することが可能かどうか、もしあれば、どうですか?