【问题标题】:Error While Generating PDF using ItextSharp使用 ItextSharp 生成 PDF 时出错
【发布时间】:2013-09-10 13:41:49
【问题描述】:

我正在使用 ItextSharp 5.0.5 创建 PDF

使用以下代码

1)

var _with1 = underContent;
_with1.SaveState();
_with1.SetGState(gstate);
_with1.SetColorFill(color);
_with1.BeginText();
_with1.SetFontAndSize(font, txt_Font2);
_with1.SetTextMatrix(30, 30);

//**1**//

_with1.ShowTextAligned(Element.ALIGN_CENTER, watermarkText, txt_X2, txt_Y2, txt_Rotat2);

//**1**//

_with1.EndText();
_with1.RestoreState();

2)

//**2**//

ColumnText.ShowTextAligned(_with1, Element.ALIGN_CENTER, new Phrase(new Chunk(watermarkText, FontFactory.GetFont(@"C:\WINDOWS\Fonts\" + FntNm + ".TTF", txt_Font2, 0))), txt_X2, txt_Y2, txt_Rotat2);

//**2**//

将//**1**// 替换为//**2**// 我收到以下错误

我需要使用 //2// 来生成 iTextsharp 的 BaseFont 不支持的 UNDERLINE

请帮忙!!

【问题讨论】:

  • FWIW - PDF 中没有下划线文本。下划线是通过画一条实际的线来制作的。
  • ColumnText.ShowTextAligned 调用 SaveState, BeginText 等等。因此,使用时不要自己启动文本对象。

标签: c# itextsharp


【解决方案1】:

您正在嵌套文本对象!那是违法的。更新的 iTextSharp 版本会针对此问题向您发出警告。

底线:您至少需要删除以下几行:

_with1.BeginText();
_with1.SetFontAndSize(font, txt_Font2);
_with1.SetTextMatrix(30, 30);
_with1.EndText();

使用ColumnText 方法的整个想法是您不必担心自己创建文本对象(如我的书第 3 章所述)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 2018-05-31
    • 2011-06-29
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 2013-07-03
    相关资源
    最近更新 更多