我有一个pdf表单,我正在尝试使用pdfBox填写表单并打印文档.我让它适用于1页打印作业,但我不得不尝试修改多个页面.基本上它是一个基本信息顶部和内容列表的表单.好吧,如果内容大于表单有空间,我必须使它成为多页文档.我最终获得了一个带有漂亮页面的文档,然后所有剩余的页面都是空白模板.我究竟做错了什么?
PDDocument finalDoc = new PDDocument();
File template = new File("path/to/template.pdf");
//Declare basic info to be put on every page
String name = "John Smith";
String phoneNum = "555-555-5555";
//Get list of contents for each page
List<List<Map<String, String>>> pageContents = methodThatReturnsMyInfo();
for (List<Map<String, String>> content : pageContents) {
PDDocument doc = new PDDocument().load(template);
PDDocumentCatlog docCatalog = doc.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
acroForm.getField("name").setValue(name);
acroForm.getField("phoneNum").setValue(phoneNum);
for (int i=0; i<content.size(); i++) {
acroForm.getField("qty"+i).setValue(content.get(i).get("qty"));
acroForm.getField("desc"+i).setValue(content.get(i).get("desc"));
}
List<PDPage> pages = docCatalog.getAllPages();
finalDoc.addPage(pages.get(0));
}
//Then prints/saves …Run Code Online (Sandbox Code Playgroud) 我的任务是制作一个与多值数据库接口的程序。我在一个字符串中接收整个记录,其中包含值和子值的分隔符。从那里我将数据拆分为二维数组。这是其中的一个片段(注意不同的长度):
0 1 2
+------------------------------------+
0 | 442 | | |
1 | C | | |
2 | | | |
3 | N | | |
4 | LAND | | |
5 | 05412300 | 05412307 | |
6 | BEARING | | |
7 | BRAND1 | BRAND2 | BRAND3 |
8 | 12 | | |
+------------------------------------+
Run Code Online (Sandbox Code Playgroud)
现在我一直使用 ArrayLists 而不是 Arrays 因为我知道这是最佳实践。现在我想知道使用 2d ArrayList 是否也有好处。我查看了一些示例,但不太明白如何在需要时获取值。如果我要这样做:
String[][] cheese = {
{"chedder", "swiss", "pepperjack"},
{"sliced", "cubed", "block"} …Run Code Online (Sandbox Code Playgroud) 我正在尝试比较两个帖子数据字段,看看它们是否相同.如果它们不同,我将保存信息.但是我似乎无法equals()正常工作.这是一个示例:
String oldDesc1 = request.getParameter("desc1_old");
String oldDesc2 = request.getParameter("desc2_old");
String desc1 = request.getParameter("desc1");
String desc2 = request.getParameter("desc2");
if (!oldDesc1.equals(desc1) || !oldDesc2.equals(desc2)) {
out.println("made it!!");
part.setDescription(new String[] {desc1, desc2});
}
//added for testing
out.println("Old Desc 1: "+oldDesc1);
out.println("New Desc 1: "+desc1);
out.println("Old Desc 2: "+oldDesc2);
out.println("New Desc 2: "+desc2);
Run Code Online (Sandbox Code Playgroud)
现在我的Servlets输出如下所示:
Old Desc1: foo1
New Desc1: bar1
Old Desc2: foo2
New Desc2: bar2
Run Code Online (Sandbox Code Playgroud)
请注意它是如何错过"制作它!!"
===编辑====
我的目标是检查desc1是否更改,desc2更改,或两者都更改以写入新信息.鉴于我所看到的答案,你的陈述是说如果desc1和desc2改变然后保存信息.如果我之前没有给自己解释清楚,我很抱歉!