icePDF去水印的方法(推荐)_java

使用icePDF带字体架包进行pdf转图片时,会有官方的水印。可以通过反编译架包来去除水印,只需修改架包中的两个类即可。

 1、首先下载到icepdf的架包。

2、用解压缩软件,对该jar文件进行解压,得到名为icepdf-core的文件夹。

3、找到2个要修改的class文件,用反编译软件,另存成java文件。

在icepdf-core\org\icepdf\core\application文件夹下的ProductInfo.class文件,

在icepdf-core\org\icepdf\core\pobjects\graphics文件夹下的Padding.class文件。

4、修改两个java文件中的内容。

(1)修改ProductInfo.java文件中的getVersion()方法,使其返回一个空字符串。

(2)Padding.java文件有两处要修改,一是修改最上面的两个字符数组为空。

二是在static语句块的第二个for循环中增加int定义。

5、将两个java文件编译成class文件,装有java环境的可以直接用javac命令进行编译。(java文件要放在执行命令的对应目录,这个例子里是在c盘执行命令,所以java文件也要放在c盘,如下图)

注:(1)如果编译时报下图红圈处错误,是因为java文件是UTF-8编码问题,将java文件用记事本打开,另存为ANSI格式,再重新编译。

(2)编译Padding.java文件时报如下错误,是因为缺少依赖的包,将第2步中解压出的icepdf-core文件夹下的org文件夹整个复制到c盘,再重新编译。

6、最后用压缩软件,将两个编译好的class替换进jar文件中。这样ok了!

时间: 2024-09-30 10:52:09

icePDF去水印的方法(推荐)_java的相关文章

Java之递归求和的两种简单方法(推荐)_java

方法一: package com.smbea.demo; public class Student { private int sum = 0; /** * 递归求和 * @param num */ public void sum(int num) { this.sum += num--; if(0 < num){ sum(num); } else { System.out.println("sum = " + sum); } } } 方法二: package com.smbea

Java中获取类路径classpath的简单方法(推荐)_java

如下所示: <SPAN style="FONT-SIZE: 18px"> System.out.println("++++++++++++++++++++++++"); String path = System.getProperty("java.class.path"); String path2 = FreeMarkerWriter.class.getProtectionDomain().getCodeSource().getLo

java实现文件变化监控的方法(推荐)_java

一. spring配置文件:application.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://ww

利用java反射机制调用类的私有方法(推荐)_java

试想一下,如果你可以轻易地调用一个类的私有方法,那么是不是说你的封装都失效了?最近在看java的反射机制,发现居然可以利用java的反射机制去调用其他类的私有方法,至于这能干什么,那就见人见智了.. 我写的一段简易实例代码如下: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @author thomaslwq * @version 创建时间:Sep 4, 201

java POI解析Excel 之数据转换公用方法(推荐)_java

如下所示: public static String reThreeStr(String ss){ boolean result= ss.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"); if(result&&ss!=null&&!"".equals(ss)){ Double sss=Double.valueOf(ss); String numStr=new java

正确遍历删除List中的元素方法(推荐)_java

遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题.下面主要看看以下几种遍历删除List中元素的形式: 1.通过增强的for循环删除符合条件的多个元素 2.通过增强的for循环删除符合条件的一个元素 3.通过普通的for删除删除符合条件的多个元素 4.通过Iterator进行遍历删除符合条件的多个元素 /** * 使用增强的for循环 * 在循环过程中从List中删除元素以后,继续循环List时会报ConcurrentModificationException */ public

java操作mongodb时,对象bean和DBObject相互转换的方法(推荐)_java

如下所示: package com.iqbon.spider.util; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.Date; import org.apache.commons.beanutils.BeanUtils; import com.mongodb.BasicDBObject; import com.mongodb.DBObje

java中循环遍历删除List和Set集合中元素的方法(推荐)_java

今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常: ConcurrentModificationException 为了以后不忘记,使用烂笔头把它记录如下: 错误代码的写法,也就是报出上面异常的写法: Set<CheckWork> set = this.getUserDao().getAll(qf).get(0).getActionCheckWorks(); for(CheckWork checkWork : set){ if(checkWor

ArrayList删除集合中某一属性相同的元素方法(推荐)_java

如果想要集合中的元素不会有重复,那么推荐使用hashSet,如下: // list是有重复元素的ArrayList HashSet hSet = new HashSet(list); list.clear(); list.addAll(hSet); 但是有时我们想删除某一个重复属性值(值相同)的某个元素,如下: NetWork nw1 = new NetWork(); nw1.id = 1; nw1.destip = "192.168.1.3"; NetWork nw2 = new N