使用iTextSharp填充多行表格

时间:2015-05-27 14:44:18

标签: pdf itextsharp

我要填写具有不同表单字段的PDF文件,其中一个字段是多行字段。我从txt文件中加载了值(我必须批量重复此操作,因此我为每个pdf文件提供了一个txt文件,我必须填写)

我的问题在于txt文件中存在的\ r \ n ...如果我传递每个表单字段,它会在"我的文本\ r \ n在新行")上写一些内容。

我尝试过使用stringbuilder和.AppendLine方法,如果我保存它的内容就会正确显示

我的文字 在新线上

我的输入文件定义为

<map>
  <campoModulo>lo_some_data</campoModulo>
  <value>My text\r\non new line</value>
</map>

以及我用来填写pdf的代码

internal void Process(string p)
    {
        string output = p.Replace(".pdf", "_new.pdf");

        PdfReader reader = new PdfReader(p);
        XmlDocument document = new XmlDocument();

        document.Load("XML\\mapping.xml");

        var items = document.SelectNodes("//map");
        PdfStamper pdfStamper = new PdfStamper(reader, new FileStream(
            output, FileMode.Create));

        var acro = pdfStamper.AcroFields;
        if (items.Count > 0)
        {
            foreach (XmlNode item in items)
            {
                var campo = item.SelectSingleNode("campoModulo").InnerText;
                var valore = item.SelectSingleNode("value").InnerText;

                acro.SetField(campo, valore);
            }
        }

        pdfStamper.FormFlattening = true;
        pdfStamper.Close();

    }

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您必须将\r\n替换为实际控制代码。尝试:

text = text.Replace(@"\r\n", "\r\n");