gpt4 book ai didi

c# - 使用 iTextSharp 和 PDFStamper 在 PDF 中使用不同的字体

转载 作者:行者123 更新时间:2023-11-30 12:35:59 33 4
gpt4 key购买 nike

我正在使用 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 将在 openend 时显示一般错误。我想知道是否可以使用 ShowTextAligned 函数使用不同的字体,如果可以,怎么做?

最佳答案

不是真的,不是。它一次只能处理一种字体。出于好奇,你在做什么来获得糟糕的 pdf 输出?我想看看你的代码。

改为查看 ColumnText。有相当多的例子在“iText in Action 2nd edition”中有很好的介绍。本书的所有样本都可以在线获取。

关于c# - 使用 iTextSharp 和 PDFStamper 在 PDF 中使用不同的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275438/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com