JAVA PPT转PDF和Word转PDF,不用Jacob包的一种可行方法

只需要导入的JAR包后几行代码就可以搞定转成PDF的问题,再转成SVG还是PNG就有很多的方法去使用了。可惜这个工具是要花钱买执照验证才能用正版,从网上找到的JAR包都太过古老,只好参考破解字的方法来破解幻灯片。

更多阅读阅读Aspose功能请参考阅读的Aspose官网

import com.aspose.slides.License;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.words.Document;
import java.io.InputStream;

/**
 * @description:
 * @author: ezio
 * @date: 
 */
public class Testaspose {

    private static InputStream license;

    public static void main(String[] args) throws Exception {

        // 验证License
        if (!getLicense()) {
            return;
        }


        Presentation pres = new Presentation("D://2.pptx");

        pres.save("D://2.pdf", SaveFormat.Pdf);

        Document doc = new Document( "D://1.doc");

        doc.save("D://1.pdf");
    }

    public static boolean getLicense() {
        boolean result = false;
        try {

            license = Testaspose.class.getClassLoader().getResourceAsStream("\\license.xml");// license路径
            License aposeLic = new License();
            aposeLic.setLicense(license);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

使用的阅读Aspose工具的瓶子包前需要破解验证码。

破解工具JByteMode和jboss-javassist

有关于aspose.words的破解可以尝试:https://blog.csdn.net/csdnsevenn/article/details/81713727

参考之前的大神破解的话来分析aspose.slides

找到包com.aspose.slides;内的类许可证

再根据以下方法

public void setLicense(final InputStream stream)抛出AsposeLicenseException {
        try {
            InputStream inputStream = null;
            if(stream!= null){
                final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                final byte [] array = new byte [1024];
                int read;
                while((read = stream.read(array))> 0){
                    byteArrayOutputStream.write(array,0,read);
                }
                byteArrayOutputStream.flush();
                inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
            }
            新的回报()做(的inputStream)。
        }
        catch(IOException ex){
            throw new InvalidOperationException(“许可证流不可用于阅读”);
        }
    }

找到package.com.aspose.slides.internal.ld; 内的do

得出关键验证方法

private static void do(final Node node,final Node node2){
        PublicKey generatePublic = null;
        尝试{
            generatePublic = KeyFactory.getInstance(“RSA”)。generatePublic(void.do());
        }
        catch(Exception ex){
            new return.return $ 17()。do(new return.return $ 16()。if,ex);
        }
        try {
            final byte [] bytes =((node!= null)?do(node):“”)。getBytes(“UTF-16LE”);
            final byte [] do1 = com.aspose.slides.internal.ld.try.do((node2!= null)?node2.getFirstChild()。getNodeValue():“”);
            final Signature instance = Signature.getInstance(“SHA1withRSA”);
            instance.initVerify(generatePublic);
            instance.update(字节);
            if(!instance.verify(do1)){
                new return.return $ 19()。do(new return.return $ 18()。for);
            }
        }
        赶上(例外EX2){
            新return.return $ 21()做(新return.return $ 20()INT,EX2);
        }
    }

 

在此之后使用了一种很奇怪的方法来替换原本的JAR包里的类文件:

1.用的的winrar来解压原本Aspose-18.7-jdk16.jar文件到文件夹

2.用的jboss-Javassist是将上面的关键方法内的语句删除,另存为类文件并替换原jar包中的文件

3.删除MATE-INF文件夹,这个文件夹中的文件是用来验证的JAR包是否被修改。

4.用的winrar的压缩文件夹成zip文件,再将后缀名转成jar即可替换原本的jar包来使用

 

注:字的许可和幻灯片的许可不能通用,使用时需要分别验证

注:使用的Aspose转成图片后字体异常是因为电脑中的控制面板 - >字体中缺少该字体,自行下载安装可以解决这个问题。但是会出现排版与office看起来不符合的问题,因为时间原因我只找到不同的中文字体显示的大小和office不同这一点。还等大神出手指点迷津。

破解版jar包下载地址:https://download.csdn.net/download/ezio9527/10619841

破解工具下载地址:https://download.csdn.net/download/ezio9527/10619831

猜你喜欢

转载自blog.csdn.net/ezio9527/article/details/81943156