我使用iTextPDF生成PDF,从一些文本输入中获取数据。
当我运行应用程序并创建第一个PDF时,它会按预期生成。
然后我改变一些值并生成另一个值,这就是问题所在。第一个PDF上显示的最后一个条目被打印在第二个生成的PDF的第一个条目的顶部。
不知道为什么会这样?它是保存到缓冲区还是什么的,不是很确定。
下面是生成PDF的代码:
public class ExportTicket implements Action{
PdfPCell titleCell = new PdfPCell();
PdfPCell contentCell = new PdfPCell();
public String performAction(HttpServletRequest request) throws PewException {
// CREATING DOCUMENT (ITEXTPDF)
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("Ticket_" + ticketNo + ".pdf"));
// Fonts
Font headingFont = new Font(Font.FontFamily.UNDEFINED, 10, Font.BOLD, BaseColor.BLACK);
// Open Document to Write
document.open();
// Table Creation
PdfPTable table = new PdfPTable(2);
table.setTotalWidth(200);
table.setWidths(new int[]{ 5, 10 });
table.setHorizontalAlignment(Element.ALIGN_LEFT);
// Add Ticket Number
contentCell.addElement(new Chunk("Ticket Number: " + ticketNo, headingFont));
contentCell.setColspan(2);
table.addCell(contentCell);
// Add table to Document & Close Document
document.add(table)
document.close();
}
}
输出请见附件图像,第一个显示第一个文件生成,第二个显示第二个文件生成,
可能是因为您从未重置“contentCell”吗?
或者它是重置的值?
你有奇怪的优先权。您认为应该通过只创建一次PdfPCell
来节省处理时间(尽管您总是需要一个新实例),但是您通过反复创建字体来浪费处理时间(您可以很容易地重用它)。
这是您的类的改进版本(我假设您从请求中获得ticketNo
):
public class ExportTicket implements Action{
// Fonts
Font headingFont = new Font(Font.FontFamily.UNDEFINED, 10, Font.BOLD, BaseColor.BLACK);
public String performAction(HttpServletRequest request) throws PewException {
String ticketNo = request.getParameter("ticketNo");
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("Ticket_" + ticketNo + ".pdf"));
// Open Document to Write
document.open();
// Table Creation
PdfPTable table = new PdfPTable(2);
table.setTotalWidth(200);
table.setWidths(new int[]{ 5, 10 });
table.setHorizontalAlignment(Element.ALIGN_LEFT);
// Add Ticket Number
PdfPCell contentCell = new PdfPCell()
contentCell.addElement(new Chunk("Ticket Number: " + ticketNo, headingFont));
contentCell.setColspan(2);
table.addCell(contentCell);
// Add table to Document & Close Document
document.add(table)
document.close();
}
}
我基于thymeleaf模板创建了一个pdf文件,实际上我正在使用模板分解器flying Discer将文件写入输出流,但由于我无法访问前端以定义每次客户端需要时生成的摘要内容,我认为最好在服务器端生成pdf文件。所以我的问题是: 有没有办法获取写入数据的输出流,并将其转换为动态写入,这样就不会在本地存储中创建数据 这是我业务逻辑的一部分: 我在控制器中使用它,在响应实体中使用attachemen
问题内容: 我试图将XML数据从网页转换为PDF文件,希望能完全在JavaScript中完成。我需要能够绘制文本,图像和简单形状。我希望能够完全在浏览器中做到这一点。 问题答案: 示例创建一个“ Hello World” PDF文件。
问题内容: 我一直在构建一个轮询应用程序。人们能够创建他们的民意调查并获取有关他们提出的问题的数据。我想添加功能,以允许用户以PDF的形式下载结果。 例如,我有两个组件负责获取问题和数据。 我正在尝试将两个组件都输出到PDF文件中。然后,用户可以下载该PFD文件。我发现了一些允许在组件内部呈现PDF的软件包。但是,我找不到能从包含虚拟DOM的输入流中生成PDF的文件。如果我想从头开始实现此目标,应
我有两个文件-file1.txt和file2.txt。我想用powershell比较这两个文件,并生成第三个文件(file3.txt),它包含从file1.txt开始的所有行减去file2.txt中的行 你能想出什么办法来做这件事吗?
我正在尝试用Java阅读文本,但效果不好。这是我的密码 但是这样的结果 请稍等... 如果此消息最终未被文档的正确内容替换,则PDF查看器可能无法显示此类文档。 您可以通过访问http://www.adobe.com/go/reader_download.升级到适用于Windows®、Mac或Linux®的最新版本的Adobe Reader 有关Adobe Reader的更多帮助,请访问http:
问题内容: 是否有任何API /解决方案可从XML文件数据和定义生成PDF报告。例如,XML定义/数据可以是: 我觉得将HTML转换为PDF也是一个很好的解决方案。 当前,我们使用iText API编写Java代码。我想外部化代码,以便非技术人员可以编辑和更改。 问题答案: 看看Apache FOP 。使用XSLT样式表将XML(或XHTML)转换为XSL- FO。然后,使用FOP读取XSL-FO