Aspose实现word转pdf

举报
FeiLip 发表于 2022/01/07 15:02:25 2022/01/07
【摘要】 1、Aspose实现word转pdfgithub:https://github.com/aspose-words/Aspose.Words-for-Java参考:https://blog.csdn.net/qq_34315636/article/details/95358305具体实现:Maven依赖:<dependency> <groupId>com.aspose</groupId> ...

1、Aspose实现word转pdf

github:https://github.com/aspose-words/Aspose.Words-for-Java

参考:

https://blog.csdn.net/qq_34315636/article/details/95358305

具体实现:

Maven依赖:

<dependency>
   <groupId>com.aspose</groupId>
   <artifactId>aspose-words</artifactId>
   <version>19.8</version>
   <classifier>jdk17</classifier>
   <scope>system</scope>
   <systemPath>${project.basedir}/src/main/resources/lib/aspose-words-19.8-jdk17.jar</systemPath>
</dependency>

Java代码:

import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

/**
 * word转pdf
 */
@Slf4j
public class WordToPdfUtil {
    public static boolean getLicense() {
        boolean result = false;
        try {
            InputStream is = WordToPdfUtil.class.getClassLoader().getResourceAsStream("license.xml");
            License aposeLic = new License();
            aposeLic.setLicense(is);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }


    public static void wordToPdf(String docPath, String pdfPath) {
        try {
            // 验证License 若不验证则转化出的pdf文档会有水印产生
            if (!getLicense()) {
                return;
            }
//            String docPath = "C:\\Users \\Desktop\\原文.doc";
//            String pdfPath = "D:\\原文.pdf";
            long old = System.currentTimeMillis();
            FileOutputStream os = new FileOutputStream(new File(pdfPath));
            //inPath是要被转化的word文档
            Document doc = new Document(docPath);
            doc.save(os, SaveFormat.PDF);
            os.close();
            long now = System.currentTimeMillis();
            System.out.println("Aspose转PDF共耗时:" + ((now - old) / 1000.0) + "秒");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

license.xml文件放在resources文件夹下

license.xml:

<License>
<Data>
<Products>
<Product>Aspose.Total for Java</Product>
<Product>Aspose.Words for Java</Product>
</Products>
<EditionType>Enterprise</EditionType>
<SubscriptionExpiry>20991231</SubscriptionExpiry>
<LicenseExpiry>20991231</LicenseExpiry>
<SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
</Data>
<Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
</License>

2、可能遇到的问题

2.1  Maven打包引用项目目录下的jar包

参考:

https://blog.csdn.net/zhouzhouzuiqiang/article/details/84940359?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control


执行:

mvn clean

mvn package

2.2  Aspose在Linux下乱码问题解决

参考:

https://cxybb.com/article/GZSGZSgg/95641217(https://webcache.googleusercontent.com/search?q=cache:N1_fcEEqLXkJ:https://cxybb.com/article/GZSGZSgg/95641217+&cd=16&hl=zh-CN&ct=clnk

我的步骤:

1、

首先在 C:windows/fonts 找到windows下的字体,

在/usr/shared/fonts目录下新建一个目录xpfonts:
然后就是将上面的字体上传至/usr/shared/fonts/xpfonts目录下。

修改xpfonts目录的权限:
chmod -R 755 /usr/share/fonts/xpfonts

安装ttmkfdir来搜索目录中所有的字体信息,并汇总生成fonts.scale文件,输入命令:

yum -y install ttmkfdir

执行ttmkfdir命令:

ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir

修改字体配置文件,打开配置文件:

vi /etc/fonts/fonts.conf

可以看到一个Font list,即字体列表,在这里把添加的中文字体位置加进去:

然后输入:wq保存退出,最后刷新内存中的字体缓存,这样就不用reboot重启了:

fc-cache

最后fc-list看一下字体列表

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。