ITextSharp SetFieldPropertyy,顶部自动换行和垂直对齐

ITextSharp SetFieldPropertyy with automatically linebreaks and verticalalignment on top

我使用 c#-library ITextSharp 将 pdf-form-elements 替换为文本:

            using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
        using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
        {
            // Open existing PDF
            var pdfReader = new PdfReader(existingFileStream);

            //pdfstamper which will replace
            var stamper = new PdfStamper(pdfReader, newFileStream);

            //getting the form elements
            var form = stamper.AcroFields;
            var fieldKeys = form.Fields.Keys;

            //replacing the form
            foreach (string fieldKey in fieldKeys)
                if(fieldKey=="mytextinput")
                    form.SetField(fieldKey, cancelationText);

            stamper.FormFlattening = true;

            stamper.Close();
            pdfReader.Close();

        }

我的 pdf 表单模板看起来像这样:

下图说明了插入的test-input of

的pdf输出

1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890

输出

我需要表单元素的文本位于该位置的顶部(垂直对齐)并且我需要自动换行。在我的例子中,文本在最后被截断了!我研究了网络和文档。有 methods (setFieldProperty) 用于字体样式、颜色等,但不是我的必需品。

除了 ITextSharp,我发现了一个有用的解决方法。使用 OpenOffice,我还可以创建一个表单 PDF 模板。在那里我可以将文本类型设置为多行,这解决了两个问题(垂直对齐、换行):

之前模板是用pdfescape.com创建的,但现在我更推荐OpenOffice,因为有几个优点。