我有一个使用Java,Spring和IText创建PDF文件的应用程序。
我想在pdf中添加水印。
我找到了很多为已保存的PDF添加水印的示例。我想在保存PDF之前添加水印。
我找到了一个使用ITextSharp做我想做的事情的例子,但是,它适用于.NET。我在我的类中使用以下代码创建pdf文档。
protected void buildPdfDocument(Map model, Document document, PdfWriter writer, HttpServletRequest request,
HttpServletResponse response) throws Exception {
response.setContentType("application/pdf");
ProgramCmd programCmd = (ProgramCmd) request.getSession().getAttribute("programCmd ");
List<Courses> list = programCmd.getCoursesList();
List<Events> eventsList = programCmd.getEventsList();
FONT_SIZE_16_BOLD.setColor(232, 177, 0);
// Print Header
Paragraph paragraph = new Paragraph("Title",FONT_SIZE_16_BOLD);
paragraph.setAlignment(Element.ALIGN_CENTER);
document.add(paragraph);
paragraph = new Paragraph("***This is Not Official***",FONT_SIZE_12_BOLD);
paragraph.setAlignment(Element.ALIGN_CENTER);
document.add(paragraph);
paragraph = new Paragraph("Create Date: " + todaysDate,FONT_SIZE_12_BOLD);
paragraph.setAlignment(Element.ALIGN_CENTER);
document.add(paragraph);
}
如果您希望我发布其他代码,请告诉我。
谢谢。
答案 0 :(得分:1)
本书的第一版"iText in Action"在第14章中有一个示例“WatermarkExample.java”。您可以在Manning's website下载示例的来源,当然,我也鼓励您买这本书!
答案 1 :(得分:0)
感谢您推广我的书,GreyBeardedGeek(值得赞成)。
让我详细说明这件事:
目前尚不清楚是否要在创建文档时添加水印(使用页面事件完成),或创建文档后完成PdfStamper
)。
这些是两个选项的例子:
PdfPageEventHelper
并实施onEndPage()
方法。如文档所述,您不应向Document类添加任何内容,也不应使用onStartPage()方法添加内容。 (iText in Action - Second Edition)中的详细信息。PdfStamper
和PdfReader
为现有PDF添加背景。您无需在磁盘上创建文件即可创建PdfReader
实例。您可以先在内存中创建文件(例如使用ByteArrayOutputStream
)并将字节传递给PdfReader
构造函数。