2

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

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

谢谢你。

4

2 回答 2

1

《iText in Action》这本书的第一版在第 14 章中有一个示例“WatermarkExample.java”。您可以在Manning 的网站上下载示例的源代码,当然,我也鼓励您购买这本书!

于 2012-11-14T16:22:59.677 回答
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=119PdfStamper中,我们使用和为现有 PDF 添加背景PdfReader。您无需在磁盘上有文件即可创建PdfReader实例。您可以首先在内存中创建文件(例如使用 a ByteArrayOutputStream)并将字节传递给PdfReader构造函数。
于 2012-11-14T16:42:12.810 回答