为有中文需求的客户提供多渠道中文技术支持.

Wed Nov 01, 2023 5:40 am

示例中默认是粉紫色的,我并没有找到在哪里设置的水印文字的颜色,期待您的回复!感谢!

public class insertTiledTextWatermark {
public static void main(String[] args) {

//创建PdfDocument类的对象
PdfDocument pdf = new PdfDocument();

//载入PDF文件
pdf.loadFromFile("人的注意力很容易分散.pdf");

//循环遍历PDF文档中的所有页面以逐个添加水印
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("黑体", Font.BOLD, 20));
for (int i = 0; i < pdf.getPages().getCount(); i++){
PdfPageBase pageBase = pdf.getPages().get(i);
insertTextWatermark(pageBase, font, "请勿复制", 3, 3);
}

//保存文档
pdf.saveToFile("平铺文字水印.pdf");
}

static void insertTextWatermark(PdfPageBase page, PdfTrueTypeFont font, String watermark, int row, int column) {

//计算两个偏移变量的值以用于计算坐标的平移量
float set1 = (float)(font.measureString(watermark).getWidth() * Math.sqrt(2)/4);
float set2 = (float)(font.measureString(watermark).getHeight() * Math.sqrt(2)/4);

//创建一个平铺笔刷
PdfTilingBrush brush = new PdfTilingBrush(new Dimension((int) (page.getActualSize().getWidth()/column), (int) (page.getActualSize().getHeight()/row)));
brush.getGraphics().setTransparency(0.3f);
brush.getGraphics().save();
brush.getGraphics().translateTransform(brush.getSize().getWidth()/2 - set1 - set2, brush.getSize().getHeight()/2 + set1 - set2);
brush.getGraphics().rotateTransform(-45);

//绘制水印文本到平铺笔刷
brush.getGraphics().drawString(watermark, font, PdfBrushes.getViolet(), 0, 0);
brush.getGraphics().restore();

//使用该平铺笔刷绘制水印
page.getCanvas().drawRectangle(brush, new Rectangle(new Point(0, 0), new Dimension((int)(page.getActualSize().getWidth()), (int)(page.getActualSize().getHeight()))));
}
}

liyao_zn
 
Posts: 4
Joined: Wed Nov 01, 2023 5:34 am

Wed Nov 01, 2023 6:42 am

您好,

感谢您的咨询。
您可以在绘制文本的时候,指定颜色,请参考以下代码:
Code: Select all
brush.getGraphics().drawString(watermark, font, PdfBrushes.getBlack(), 0, 0);

其中PdfBrushes.getBlack()可以返回一个黑色笔刷,你可以根据需要,指定颜色,如果您想自定义颜色,也可以在绘制文本的时候,传入new PdfSolidBrush(new PdfRGBColor(0,184,92)),注意,其中的RGB值可根据您的个人需要进行自定义。

如果您还有其他问题,欢迎您随时咨询。

Best regards,
Triste
E-iceblue support team
User avatar

Triste.Dai
 
Posts: 1000
Joined: Tue Nov 15, 2022 3:59 am

Return to 中文技术支持