gpt4 book ai didi

java - 直接将水印添加到流中

转载 作者:太空宇宙 更新时间:2023-11-04 07:04:51 27 4
gpt4 key购买 nike

I am creating a PDF on Servletoutputstream. I need to add watermark directly to the stream before exporting it to PDF. Is there any solution to add watermark on fly without having saved PDF or to get the document object from the stream.

最佳答案

@injecteer 的答案是正确的(除了他使用 com.lowagie 类这一事实,这告诉我他正在使用 an obsolete version of iText) ,但他建议分两遍创建最终的 PDF。首先创建不带水印的 PDF,然后创建带水印的 PDF。

正如@mkl在他的评论中指出的那样,如果您使用页面事件,您可以一次性创建 PDF。我写了一个小Watermarking示例。

这是页面事件类:

public class Watermark extends PdfPageEventHelper {

protected Phrase watermark = new Phrase("WATERMARK", new Font(FontFamily.HELVETICA, 60, Font.NORMAL, BaseColor.LIGHT_GRAY));

@Override
public void onEndPage(PdfWriter writer, Document document) {
PdfContentByte canvas = writer.getDirectContentUnder();
ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, watermark, 298, 421, 45);
}
}

此事件添加到 PdfWriter 中,如下所示:

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
writer.setPageEvent(new Watermark());

从现在开始,每次页面完成时,Watermark 事件类中定义的文本都会添加到现有内容下。

关于java - 直接将水印添加到流中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21575630/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com