这是我遵循一个示例的代码。我对代码做了一点修改。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));
添加回答
举报
0/150
提交
取消