aspose.pdf 实现 pdf 转image(学习交流,请勿商用)
网页上要上传一些证件照,但是手头给我的的证件是pdf,不多几十张,由于需要一页显示,所以需要把他们转成图片.
百度在线pdf转jpg,好家伙,一大堆积网页,随便点一个开搞,一张,有点慢,算了等等,转换完成点下载,WHT? 12kb,好几分钟后,下载完成,然后上传第二个,你妹,需要会员,好吧注册个,终于转换了第二个,准备第三个,你妹,又不够了,要订阅,有着个订阅的钱,我还不如开个wps会员呢,连续试了几个网页,全是一个尿性,下载慢,数量少,不能批量,于是突然想到以前用aspose.word把word 转pdf,于是赶紧试了下,发现原来aspose产品的license是分开用的,
感谢这位大佬手把手教会我们怎么破解
报错借用这个图,只不过我是z122的类
1.下载[JavaAssit](http://www.javassist.org/)
http://www.javassist.org/
2.生成想要的class
public class JavaAssit {
public static void main(String[] args) {
try{
JavaAssit.changeMethod();
}catch (Exception e){
e.printStackTrace();
}
}
public static void changeMethod() throws Exception {
ClassPool.getDefault().insertClassPath("/home/xxx/Desktop/oa2/WebRoot/WEB-INF/lib/aspose-pdf-18.1.jar");
CtClass c2 =ClassPool.getDefault().getCtClass("com.aspose.pdf.z122");
CtMethod[] ms =c2.getDeclaredMethods();
for (CtMethod c: ms){
CtClass[] ps =c.getParameterTypes();
if(c.getName().equals("m1") && ps .length ==2
&& ps[0].getName().equals("org.w3c.dom.Node")
&& ps[1].getName().equals("org.w3c.dom.Node")){
String aaa ="{return;}";
System.out.println(aaa);
c.setBody(aaa);
c2.writeFile("/home/xxx/Desktop/oa2/");
System.out.println("done");
}
}
}
}
把原版的jar包解压出来,替换class即可,再打ar放回去,对了2个LE开通的签名文件要删除
jar cvf aspose-pdf-18.1.jar .
放回项目,ok了
public class PdfToImageUtil {
/**
* 获取license
*
* @return
*/
private static boolean getLicense() {
boolean result = false;
try {
// 凭证
String license =
"<License>\n" +
" <Data>\n" +
" <Products>\n" +
" <Product>Aspose.Total for Java</Product>\n" +
" </Products>\n" +
" <EditionType>Enterprise</EditionType>\n" +
" <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +
" <LicenseExpiry>20991231</LicenseExpiry>\n" +
" <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +
" </Data>\n" +
" <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" +
"</License>";
InputStream is = new ByteArrayInputStream(license.getBytes("UTF-8"));
License asposeLic = new License();
asposeLic.setLicense(is);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* pfd转图片
* @param pdf 源文件全路径
* @param outPath 转后的文件夹路径
* @param reso 分辨率
*/
public static void pdfToImage(String pdf, String outPath,int reso){
// 验证License
if(!getLicense()) {
return;
}
try {
String pdffullname = pdf.substring(pdf.lastIndexOf("/")).replaceAll("/","");
System.out.println(pdffullname);
String pdfname = pdffullname.substring(0,pdffullname.lastIndexOf("."));
System.out.println(pdfname);
Document pdfDocument = new Document(pdf);
//图片宽度:800
//图片高度:100
// 分辨率 960
//Quality [0-100] 最大100
//例: new JpegDevice(800, 1000, resolution, 90);
Resolution resolution = new Resolution(reso);
JpegDevice jpegDevice = new JpegDevice(resolution);
for (int index=1;index<=pdfDocument.getPages().size();index++) {
// 输出路径
File file = new File(outPath +"/"+ pdfname+"_"+index+".jpg");
FileOutputStream fileOs = new FileOutputStream(file);
jpegDevice.process(pdfDocument.getPages().get_Item(index), fileOs);
fileOs.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 批量pdf转图片
* @param pdflj 源文件所在目录
* @param fbl 分辨率
*/
public static void plpdf2image(String pdflj,int fbl) {
System.out.println("本次转换"+pdflj+"下的pdf文件");
File file=new File(pdflj);
for(File temp:file.listFiles()){
if(temp.isFile()){
String ljfile=temp.toString();
System.out.println("本次转换"+ljfile);
String suffix = ljfile.substring(ljfile.lastIndexOf(".") + 1);
// System.out.println(suffix);
// String suffix2 = ljfile.substring(ljfile.lastIndexOf("/")).replaceAll("/","");
// System.out.println(suffix2);
// String suffix3 = suffix2.substring(0,suffix2.lastIndexOf("."));
// System.out.println(suffix3);
int zindex7 = "pdf".indexOf(suffix);
if(zindex7 != -1){
System.out.println(ljfile+ "开始转换");
pdfToImage(ljfile,pdflj+"/out",fbl);
System.out.println(ljfile+ "转换完成");
}else {
System.out.println(ljfile+ "非PDF文件无法转换成pdf");
}
}
}
System.out.println("转换完成");
}
public static void main(String[] args) {
plpdf2image("/home/xxx/Downloads/",300);
}
}
破解文件因为版权问题我不放了 自行破解啊吧
终于可以不要钱批量转了