我正在尝试使用 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/