使用Spring,IText,watermark创建pdf

时间:2012-11-14 15:36:12

标签: java spring pdf itext

我有一个使用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);
}

如果您希望我发布其他代码,请告诉我。

谢谢。

2 个答案:

答案 0 :(得分:1)

本书的第一版"iText in Action"在第14章中有一个示例“WatermarkExample.java”。您可以在Manning's website下载示例的来源,当然,我也鼓励您买这本书!

答案 1 :(得分:0)

感谢您推广我的书,GreyBeardedGeek(值得赞成)。

让我详细说明这件事:

目前尚不清楚是否要在创建文档时添加水印(使用页面事件完成),或创建文档后完成PdfStamper)。

这些是两个选项的例子:

  1. http://itextpdf.com/examples/iia.php?id=105中,我们扩展PdfPageEventHelper并实施onEndPage()方法。如文档所述,您不应向Document类添加任何内容,也不应使用onStartPage()方法添加内容。 (iText in Action - Second Edition)中的详细信息。
  2. http://itextpdf.com/examples/iia.php?id=119中,我们使用PdfStamperPdfReader为现有PDF添加背景。您无需在磁盘上创建文件即可创建PdfReader实例。您可以先在内存中创建文件(例如使用ByteArrayOutputStream)并将字节传递给PdfReader构造函数。