【问题标题】:Creating pdf with Spring, IText, watermark使用 Spring、IText、水印创建 pdf
【发布时间】:2012-11-03 03:13:09
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: java spring pdf itext


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。我使用您指出的示例进行了部分工作,但是我有一个问题希望您能帮助我。我在我的 pdf 中使用 PdfPTables。水印,无论我使用图像还是文本,似乎都没有出现在表格上。这是 iText 的固有问题吗?谢谢。
    • 好像您在现有内容下添加水印。如果现有内容不透明,它将覆盖水印。如果希望水印覆盖现有内容,则需要使用 getDirectContent() 而不是 getDirectContentUnder()。您可能还想让您的水印透明:itextpdf.com/themes/keyword.php?id=241
    【解决方案2】:

    感谢您宣传我的书 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 构造函数。

    【讨论】:

    • 感谢您的回复。我正在使用 PdfPageEventHelper b/c 我想在创建文档时添加水印。我现在有了这个工作,除了我在回复@GrayBeardedGeek 时提到的问题。您能给我的任何帮助将不胜感激。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2018-03-31
    • 1970-01-01
    相关资源
    最近更新 更多