aspose.pdf 实现 pdf 转image(学习交流,请勿商用)

aspose.pdf 实现 pdf 转image(学习交流,请勿商用)

网页上要上传一些证件照,但是手头给我的的证件是pdf,不多几十张,由于需要一页显示,所以需要把他们转成图片.
百度在线pdf转jpg,好家伙,一大堆积网页,随便点一个开搞,一张,有点慢,算了等等,转换完成点下载,WHT? 12kb,好几分钟后,下载完成,然后上传第二个,你妹,需要会员,好吧注册个,终于转换了第二个,准备第三个,你妹,又不够了,要订阅,有着个订阅的钱,我还不如开个wps会员呢,连续试了几个网页,全是一个尿性,下载慢,数量少,不能批量,于是突然想到以前用aspose.word把word 转pdf,于是赶紧试了下,发现原来aspose产品的license是分开用的,
感谢这位大佬手把手教会我们怎么破解
报错借用这个图,只不过我是z122的类
通过idea轻松定位

	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);
    }
}

破解文件因为版权问题我不放了 自行破解啊吧
终于可以不要钱批量转了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值