java - 如何使用 PDPageContentStream 底层内容流?

标签 java pdfbox watermark

我正在尝试使用 PDPageContentStream 创建水印。这就是我现在拥有的

PDPageContentStream contentStream = new PDPageContentStream(doc,page, true,true);
contentStream.beginText();
contentStream.setFont(font,40);
contentStream.setTextRotation(Math.PI/4,page.getMediaBox().getWidth()/4,page.getMediaBox().getHeight()/4);
contentStream.setNonStrokingColor(210,210,210); //light grey
contentStream.drawString(_text);
contentStream.endText();
contentStream.close();

它会创建一个 45 度角的浅灰色文本。但是,当然,它覆盖了其下方的实际页面内容,并且无法看到某些内容。

是否可以先创建contentStream,然后追加页面内容? 我发现this例子。它使用 PDExtendedGraphicsState 和 PDResources。我是 pdfbox 的新手,几乎没有图形经验。 这些是我需要的吗?pdfbox 中的资源是什么?

提前致谢。

附:我知道我可以将覆盖实用程序与 jpeg 结合使用。但我现在正在尝试用 PDPageContentStream 解决这个问题。

最佳答案

如果您使用 PDFBox 2.0+,那么现在会稍微容易一些:

PDExtendedGraphicsState extendedGraphicsState = new PDExtendedGraphicsState();
extendedGraphicsState.setNonStrokingAlphaConstant((float) alpha);
contents.saveGraphicsState();
contents.setGraphicsStateParameters(extendedGraphicsState);
// do your stuff 
contents.restoreGraphicsState();

关于java - 如何使用 PDPageContentStream 底层内容流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28502226/

相关文章:

java - JFreeChart 日期轴格式化问题

java - PDFormX对象处理

java - 使用 PDFBox 解析器从 PDF 中提取嵌入式 flash 文件的最佳方法是什么?

php - 如何使用 imagemagick 创建水印

java - Android - 扩展泛型类

java - 将 Java 代码翻译为 C

java - Java SWing中如何通过双击子对话框从父窗口中弹出并嵌入到父窗口中?

java - Apache pdfbox 声称 PDF 文档已加密(但实际上没有!)- 修复了吗?

java - Google App Engine 中水印中的图像 (Java)

c# - TextBox 中的水印/提示/占位符文本?