java - iText 使用 PDF 模板错误地格式化段落数据
问题描述
我创建了一个 PDF 模板,将传递的字符串数据字段格式化为包含 itext 代码的 java 函数(如下)。传递的字符串之一(例如 F13)将用于模板中包含的段落。我认为因为是模板中的文本字段,所以段落没有被正确包装。请参阅此示例并突出显示结果>>>
使用模板和字符串创建的 PDF 文档,其中段落应为:
该段落应改为如下所示:“结果如下所示,它显示文本已写入文档但看起来一团糟。当长度超过可用宽度时,块不知道如何强制换行在文档中。真的,它们应该用于更改或设置内联单词或短语的样式。
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;
这篇文章接近我可能需要做的事情。 如何使用 iText 格式化 pdf 模板中的文本
解决方案
推荐阅读
- r - 用 ggplot2 绘制对数似然函数的问题
- r - R - 用牛图调整图形轴
- postgresql - 链接spring boot和postgreSQL(kotlin)时出错
- python - 迁移到 VPS 后,MySQL 在执行期间消失了
- node.js - 为什么在从 npm 注册表中删除包后,使用“npm publish”将包重新发布到 npm 不起作用?
- kubernetes - HorizontalPodAutoscaler scaleDown 行为
- c# - 包含类列表的类的 JSON.NET 反序列化
- javascript - 我基于电子表格列中的变量在 Google Apps 脚本中创建 PDF。我无法让变量分配正确的值
- python - 有没有办法在视频流等公共链接中查看 google colab 输出?
- javascript - 如何为 React 路由器 dom 路由中的每个组件获取嵌套资源