Java iText使用PDF模板错误地格式化段落数据

Java iText使用PDF模板错误地格式化段落数据,java,templates,formatting,itext,Java,Templates,Formatting,Itext,我创建了一个PDF模板,用于将传递的字符串数据字段格式化为包含itext代码的java函数(见下文)。传递的字符串之一(示例中为F13)将在模板中包含的段落中使用。我认为,因为模板中有一个文本字段,所以段落没有正确包装。请参见此示例和突出显示的句子以了解结果>>> 使用模板和字符串创建的PDF文档,其中段落应为: 该段应改为如下: “结果如下所示,显示文本已写入文档,但看起来很混乱。块不知道当长度超过文档中的可用宽度时如何强制换行。实际上,它们应该用来更改或设置单词或短语的内联样式。” 这篇文

我创建了一个PDF模板,用于将传递的字符串数据字段格式化为包含itext代码的java函数(见下文)。传递的字符串之一(示例中为F13)将在模板中包含的段落中使用。我认为,因为模板中有一个文本字段,所以段落没有正确包装。请参见此示例和突出显示的句子以了解结果>>>

使用模板和字符串创建的PDF文档,其中段落应为:

该段应改为如下: “结果如下所示,显示文本已写入文档,但看起来很混乱。块不知道当长度超过文档中的可用宽度时如何强制换行。实际上,它们应该用来更改或设置单词或短语的内联样式。”

这篇文章接近我可能需要做的事情。

嗨,我们会的。对不起,我不明白你想做什么。请用我们可以复制的东西详细说明您的答案,并尝试更好地格式化代码。谢谢。我清理了一点,希望它有帮助,如果需要做更多的让我知道。你不共享模板PDF,所以我们必须猜测。您可能忘记设置希望包含多行文本的字段的多行标志了吗?谢谢,我选中了用于此操作的open office odt字段,要创建多行字段,需要选择文本框,并且可以选择多行或带格式的多行文本类型。
public class ABC_PDF_CreateAndFill4 {

public static final String SRC = 
  "C:\\Users\\XXX\\Documents\\iTextPDF\\Template\\PDFtest_062320_v3.pdf";
  public static final String DEST = // 
 "C:\\Users\\XXXX\\Documents\\iTextPDF\\PDFtest_11.pdf";
 .
 .
 .
// manipulatePDF called from external routine passing parms.   

public void manipulatePdf(String S1, String D1, String F1, String F2, 
String F3, String F4, String F5, String F6, String F7, String F8, String 
F9, String F10, String F11, String F12, String F13, String F14, String 
F15, String F16, String F17, String F18, String F19, String F20, String 
F21  ) 
               throws IOException, DocumentException {
               PdfStamper stamper;
               int i = 0;
                       
               PdfReader reader = new PdfReader(S1);           
               AcroFields form = reader.getAcroFields();       
               AcroFields fields = reader.getAcroFields();
       
               stamper = new PdfStamper(reader, new FileOutputStream(D1));
                          
               fill(stamper.getAcroFields(), F1, F2, F3, F4, F5, F6, F7, 
      F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21 );
      
               stamper.setFormFlattening(true);
               stamper.close();
       }
         
       
        public static void fill( AcroFields form, String F1, String F2, 
        String F3, String F4, String F5, String F6, String F7, String F8, 
        String F9, String F10, String F11, String F12, String F13, String 
        F14, String F15, String F16, String F17, String F18, String F19, 
        String F20, String F21  )
             throws IOException, DocumentException {         
                    
           
             form.setField("F02_RO_Address_Line1", F1); // 1
             form.setField("F03_RO_Address_Line2", F2); // 2
             form.setField("F22_Addressee", F3); // 3
             form.setField("F23_Adress_Line1", F4); // 4
             form.setField("F24_Address_Line2", F5); // 5
             form.setField("F25_Address_Line3", F6); // 6
             form.setField("F26_Address_Line4", F7); // 7
             form.setField("F01_Notice_Date", F8); // 8
             form.setField("F04_Company_Name_Line1", F9); // 9
             form.setField("F05_Company_Name_Line2", F10); // 10
             form.setField("F08_RO_Postal_Address_Line1", F11); // 11
             form.setField("F09_RO_Postal_Address_Line2", F12); // 12
             form.setField("RTField", F13);  // Text field paragraph
             form.setField("F111_Emc2_Indicator", F14); // 14
             form.setField("F238_Enclosure", F15); // 15
             form.setField("Enclosure", F16); // 16
             form.setField("F11_Agents_Name_Copy", F17); // 17
             form.setField("F12_Agent_Phone", F18); // 18
             form.setField("F06_Requester_ID", F19); // 19;
             form.setField("ShortForm", F20); // 20;
             form.setField("Display_Agent_Code", F21); // 21;