我正在从另一个包含acrofields并获得以下问题的PDF创建PDF:

  • acrofields表现奇怪,因为在放置光标并在表单字段中单击以编辑文本后,文本向下移动(有时向上)到其在创建的PDF中的位置 . 原始PDF文档中不会发生此问题 .

  • 现在,如果我们通过设置压模 .setFormFlattening(true) 来制作平面PDF,那么如果两个acrofield彼此非常接近,则acrofields的文本不会写入少量的精确位置,导致文本重叠 .

我正在使用的代码是

import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;               


String pdfName =  "pdfName.pdf";

PdfStamper stamper = null;
FileOutputStream fout = null;   

PdfReader reader = new PdfReader(pdfName);
fout = new FileOutputStream("outputpdf.pdf");
stamper = new PdfStamper(reader, fout); 

AcroFields acroFields = stamper.getAcroFields();
Map fieldMap = acroFields.getFields(); 
Set keys = fieldMap.keySet();

for (Iterator it = keys.iterator(); it.hasNext();) {
    String fieldName  = (String) it.next(); 
    acroFields.setField(fieldName,acroFields.getField(fieldName));
}

stamper.setFormFlattening(false);
stamper.close();

我尝试了与最新版本的itext(itext5)相同的代码,但它给出了相同的结果 .

我正在使用的PDF是

http://www.herosh.com/download/11083031/sample-font.pdf.html