首页 > 解决方案 > IText 7多行字段不自动换行

问题描述

我们最近从 ITextSharp 切换到 IText 7,一切似乎都运行良好。但是后来我们的一位客户将他收到的 pdf 文件发回给我们,并且似乎不像在 ITextSharp 上那样,多行字段会自动换行。

我们现在的解决方法是每 130 个字符分割我们的字符串,并将 a\n放在最近的空间中。对于任何有同样问题的人,这里是我们使用的代码:

 public static void SetFormatted(this PdfFormField field, string txt)
    {

        var rect = field.GetPdfObject().GetAsRectangle(new PdfName("Rect"));
        var fontSize = field.GetFontSize();
        var div = fontSize / 2.2;
        int length = (int)(rect.GetWidth() / div);
        field.SetValue(Format(txt, length));
    }

    private static string Format(string text, int length)
    {
        if (text.Length > length)
        {
            if (text.IndexOf(' ') == 0)
                text = text.Substring(1);
            string temp = text.Substring(0, length);
            int indexOfN = temp.IndexOf("\n");
            if (indexOfN > 0)
            {
                return temp.Substring(0, indexOfN) + Format(text.Substring(indexOfN), length);
            }
            int index = temp.LastIndexOf(' ');
            temp = temp.Substring(0, index) + "\n";
            return temp + Format(text.Substring(index), length);
        }
        return text;
    }

但这更多是临时解决方案,而不是解决方案。

(我知道我说的是 130 个字符,但它在我们的领域中是这样划分的。它计算它应该是什么。我不保证它会 100% 为你工作)

我们尝试使用field.SetRichText(ourTxt),但它只是没有显示,并且该字段启用了 RTF。

这就是它过去的样子:以前是 但这就是 IText 7 的样子:在此处输入图像描述

标签: c#itext7

解决方案


推荐阅读