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

这是我遵循一个示例的代码。


我对代码做了一点修改。


public class MyEventHandler implements IEventHandler {

@Override

public 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.UnitValue

at 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)


发生了什么?什么是单位值?怎么改?




HUH函数
浏览 465回答 2
2回答

白猪掌柜的

我终于解决了这个问题。我放弃了canvas的方法。然后,我将document参数传输到MyEventHandler. 使用以下句子:document.add(new Paragraph("Hello World").setFixedPosition(298, 421, 100).setRotationAngle(45).setFontColor(colorWatermark).setFontSize(100));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java