为了账号安全,请及时绑定邮箱和手机立即绑定

如何给pdf添加水印(itext7.1.2 java)

如何给pdf添加水印(itext7.1.2 java)

HUH函数 2021-07-29 17:19:44
这是我遵循一个示例的代码。我对代码做了一点修改。public class MyEventHandler implements IEventHandler {@Overridepublic void handleEvent(Event event) {    // TODO Auto-generated method stub    PdfDocumentEvent docEvent = (PdfDocumentEvent) event;    PdfDocument pdfDoc = docEvent.getDocument();    PdfPage page = docEvent.getPage();    PdfCanvas pdfCanvas = new PdfCanvas(        page.newContentStreamBefore(), page.getResources(), pdfDoc);    DeviceRgb colorWatermark = new DeviceRgb(220,36,31);    //Add watermark    Canvas canvas = new Canvas(pdfCanvas, pdfDoc, page.getPageSize());    canvas.setProperty(Property.FONT_COLOR, colorWatermark);    canvas.setProperty(Property.FONT_SIZE, 60);    try {        canvas.setProperty(Property.FONT, PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H",true));    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    canvas.showTextAligned(new Paragraph("CONFIDENTIAL"),        298, 421, pdfDoc.getPageNumber(page),        TextAlignment.CENTER, VerticalAlignment.MIDDLE, 45);    pdfCanvas.release();  }}当代码转到该行时:canvas.showTextAligned()它抛出一个异常:Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Integer cannot be cast to com.itextpdf.layout.property.UnitValueat com.itextpdf.layout.renderer.AbstractRenderer.getPropertyAsUnitValue(AbstractRenderer.java:405)at com.itextpdf.layout.renderer.TextRenderer.layout(TextRenderer.java:196)at com.itextpdf.layout.renderer.LineRenderer.layout(LineRenderer.java:327)at com.itextpdf.layout.renderer.ParagraphRenderer.layout(ParagraphRenderer.java:205)at com.itextpdf.layout.renderer.BlockRenderer.layout(BlockRenderer.java:219)at com.itextpdf.layout.renderer.RootRenderer.addChild(RootRenderer.java:287)发生了什么?什么是单位值?怎么改?
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

我终于解决了这个问题。我放弃了canvas的方法。然后,我将document参数传输到MyEventHandler. 使用以下句子:document.add(new Paragraph("Hello World").setFixedPosition(298, 421, 100).setRotationAngle(45).setFontColor(colorWatermark).setFontSize(100));


查看完整回答
反对 回复 2021-08-04
  • 2 回答
  • 0 关注
  • 464 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信