解决水印代码报错问题

解决水印代码报错问题

实现pdf增加水印的代码,Tomcat不报错,weblogic报错,报错内容如下:
java.lang.NoClassDefFoundError:Could not initialize class javax.swing.RepaintManager…
在这里插入图片描述
在这里插入图片描述
给pdf添加水印的代码如下:(来源网络)
注释了 label.setText(waterMarkName); 改为JLabel实例化时传入水印内容。而且将JLabel设置成了final。

//给PDF添加水印
		//inputFile 文件路径+名称
		//outputFile 添加水印后输出文件保存的路径+名称
		//waterMarkName 添加水印的内容
		public static void waterMark(String inputFile,String outputFile, String waterMarkName) {    
	        try {    
	            PdfReader reader = new PdfReader(inputFile);  //切记这里的参数是文件的路径 ,路径必须是双斜杠的如F:\\123.pdf,不能是F:/123.pdf 或者F:\123.pdf
	            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile));    
	            BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",   BaseFont.EMBEDDED);        
	            Rectangle pageRect = null;  
	            PdfGState gs = new PdfGState();  
	            gs.setFillOpacity(0.3f);  
	            gs.setStrokeOpacity(0.4f);  
	            int total = reader.getNumberOfPages() + 1;   	              
	            final JLabel label = new JLabel(waterMarkName);  
	            FontMetrics metrics;  
	            int textH = 0;   
	            int textW = 0;   
	            //label.setText(waterMarkName);   
	            metrics = label.getFontMetrics(label.getFont());   
	            textH = metrics.getHeight();
	            textW = metrics.stringWidth(label.getText());                  
	            PdfContentByte under;    
	            pageRect = reader.getPageSizeWithRotation(1);   
	            under = stamper.getOverContent(1);   
	            under.saveState();  
	            under.setGState(gs);  
	            under.beginText();    
	            under.setFontAndSize(base, 20);   
	            float x =  (float) (reader.getPageSize(1).getWidth()*0.1);
	            float y = (float) (reader.getPageSize(1).getHeight()*0.95);
	            under.setColorFill(BaseColor.RED);
	            under.showTextAligned(Element.ALIGN_LEFT  , waterMarkName,x ,  y, 0);  
	            // 添加水印文字    
	            under.endText();    
	            stamper.close();  
	            reader.close();
	        } catch (Exception e) {    
	            e.printStackTrace();    
	        }    
	    }

解决方案:百度说是JVM无法初始化该类,所以:welogic的setDomainEnv.sh中加入 -Djava.awt.headless=true。
成功解决。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值