【问题标题】:iTextSharp stamper wraps textiTextSharp 压模换行文本
【发布时间】:2011-07-25 04:28:39
【问题描述】:

我正在使用 iTextSharp 填写一些压模 AcroFields。

stamper.AcroFields.SetField("Title", "Lipsum");

我在 Illustrator 中创建了 pdf,并使用 Adob​​e Acrobat X Pro 创建了表单域。问题是虽然文本字段是页面的宽度,但在保存的 pdf 中,文本会以大约 1/3 的宽度换行。

另一个问题是是否有可能在高度上设置文本字段 autoSize,或者处理文本溢出的方法。

【问题讨论】:

    标签: pdf-generation itextsharp


    【解决方案1】:

    1) 我想看那个 PDF。我怀疑这些领域并没有你想象的那么宽。

    2) 您可以将字段的字体大小设置为零以启用“自动调整大小”,这在 Reader 和 iText 中都有效。但是,它的大小是实际字段大小,而不是您认为的大小。

    我猜您在 Illustrator 中绘制了一个漂亮的表单域背景,然后在 Acrobat Pro 中在其上放置了一个域,但没有调整域宽度以匹配漂亮的 illustrator 背景。可能是错的,但这是我的预感。


    这就是扁平化的 PDF。我可以看到表单域仍然完好无损的原件吗?对不起,我没有更具体。尽管如此,我可以从阅读此 PDF 中学到一些东西:

    查看展平字段 XObject 的边界框及其内部剪切矩形,看起来它应该使用大部分页面:

    页面宽约 600 磅,高约 850 磅。
    展平场 XObject 的宽度约为 560 点,高度约为 100。

    我想知道您的文本中是否有一些非标准的回车字符,而 iText 不会被 Acrobat 识别...

    无论如何,我希望看到未拼合的 PDF。填充好,但不是扁平化。


    好的,看看模板。我没有看到任何会导致您看到的换行符...这让我认为我的第二个猜测是正确的:换行符。

    查看文本布局代码可能会给我一个提示。你的每一行文字都是这样的(例如):

    1 0 0 1 2 88.24 Tm  0 g (Die Semmerrolle der l{e4}nge nach zu einer grossen Roulade)Tj 
    
    • n n n n n n Tm:文本矩阵
    • g:灰色(0 g:黑色)
    • (...)Tj:显示文本

    这与您在 iText(以及最新版本)的主干中设置文本字段值时的代码路径一致。该代码(ColumnText)非常擅长正确地破坏文本,并且在所有地方都可以使用。边界框是正确的(如平面 PDF 的几个地方所示)。

    检查您的输入。

    【讨论】:

    • 马克,感谢您的回答和这个宝贵的图书馆!我试图制作一个打印屏幕以更好地显示问题:img638.imageshack.us/f/schermafbeelding2011033.png 在顶部区域有选定的表单字段,下面的文本所在的位置。另外,我忘了提到,如果我手动填写该字段,那么文本会准确地换行。
    • 这推翻了我的“它并没有那么宽”的理论。我可以看到(填充的)PDF 本身吗?
    • 您可以从这里获取测试pdf 2shared.com/document/KeXkcyqa/test1.html
    • 这是扁平化的 PDF。我可以看到表单域仍然完好无损的原件吗?抱歉,我没有更具体。
    猜你喜欢
    • 2015-09-30
    • 2016-10-02
    • 2018-03-03
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    相关资源
    最近更新 更多