这是我遵循一个示例的代码。
我对代码做了一点修改。
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)
发生了什么?什么是单位值?怎么改?
白猪掌柜的
相关分类