首页 > 编程语言 >java word转pdf

java word转pdf

时间:2023-08-04 18:56:24浏览次数:38  
标签:xml java Aspose new Java aspose word pdf com

经过几天研究 有以下方式:

POI			格式问题(不考虑)
docx4j		转换后格式问题(待定)
aspose 		收费(破解)(待定)
spire.doc     收费(不考虑)
document4j  windows(不能跨平台)(不考虑)
jacob		  windows(不能跨平台)(不考虑)

最开始采用docx4j 到最后结果发现格式有问题,表格中文可以换行,但是数字和字符并没有换行(弃用)

当文档中含有中文字符时,该段代码的执行需要调用操作系统的本地字体库支持,否则所有中文字符都将乱码。

该段代码如果想要在Linux服务器上完美运行,需要给Linux服务器安装中文字体库

如何在Linux环境安装Windows字体库,将在本人的另一篇文章里详细讲解
Java使用Spire.Pdf或Aspose-Words实现Word转换Pdf在Linux服务器上的中文乱码问题

建议将jar包下载下来并上传私服里去
依赖

<dependencies>
	<dependency>
		<groupId>com.aspose</groupId>
		<artifactId>aspose-words</artifactId>
		<version>18.2</version>
		<classifier>jdk16</classifier>
	</dependency>
	<dependency>
		<groupId>com.aspose</groupId>
		<artifactId>aspose-pdf</artifactId>
		<version>18.2</version>
	</dependency>
	<dependency>
		<groupId>com.aspose</groupId>
		<artifactId>aspose-cells</artifactId>
		<version>18.2</version>
	</dependency>
</dependencies>

<repositories>
	<repository>
		<id>AsposeJavaAPI</id>
		<name>Aspose Java API</name>
		<url>https://repository.aspose.com/repo/</url>
	</repository>
</repositories>
<pluginRepositories>
	<pluginRepository>
		<id>AsposeJavaAPI</id>
		<url>https://repository.aspose.com/repo/</url>
	</pluginRepository>
</pluginRepositories>

如果maven坐标还是无法下载 可以试试如下的操作
除了用eclipse添加到maven仓库,我见到还有一种处理方式
内置属性:主要有两个常用内置属性——b a s e d i r 表 示 项 目 根 目 录 , 即 包 含 p o m . x m l 文 件 的 目 录 ; {basedir}表示项目根目录,即包含pom.xml文件的目录;basedir表示项目根目录,即包含pom.xml文件的目录;{version}表示项目版本。

license.xml如下:

<?xml version="1.0" encoding="UTF-8" ?> 
<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>

aspose

  public static boolean getLicense() {
          boolean result = false;
          try {
              Resource resource = new ClassPathResource("docx_template"+File.separator+"license"+File.separator+"word-license.xml"); 
              License aposeLic = new License();
              aposeLic.setLicense(resource.getInputStream());
              result = true;
          } catch (Exception e) {
              e.printStackTrace();
          }
          return result;
      }
   public static boolean download() {
          getLicense()
          Document wordDoc = new Document(inputStream);
          PdfSaveOptions pso = new PdfSaveOptions();
          wordDoc.save(bos, SaveFormat.PDF);
          inputStream.close();
   }

标签:xml,java,Aspose,new,Java,aspose,word,pdf,com
From: https://www.cnblogs.com/jingyu-zhang/p/17606760.html

相关文章

  • JavaScript基础05
    函数参数的校验/***@判断参数是否为数字类型*@参数,一个参数*@返回值,如果参数是数字类型返回true,否则返回false*/functionisNumber(num){​ //1.第一版,把条件拆开判断​ //判断num是否是什么数据类型 if(typeofnum!=='number'){  console.log('num不是......
  • 简简单单,带你学会使用Java线程池
    在前面几篇文章中,波哥给小伙伴们讲解了什么是线程,以及创建线程的几种方法。这就有小伙伴问了,我们工作中用得最多的是线程池,波哥你能不能再给我们讲一讲线程池呀?既然小伙伴们提出需求了,波哥我就得满足大家了,今天我就为小伙伴们讲一讲线程池! 一.线程池1.什么是线程池在面向对象编程......
  • 记一次JavaScript异或算法加密 , 异或加密
     公司业务代码constBase64=require('base-64')functionxorEncrypt(str,key){letresultconstlist=[]for(leti=0;i<str.length;i++){constcharCode=str.charCodeAt(i)^key.charCodeAt(i%key.length)list.push(String.......
  • java--并发容器 ConcurrentMap
    在JDK1.4以下只有Vector和Hashtable是线程安全的集合(也称并发容器,Collections.synchronized*系列也可以看作是线程安全的实现)。从JDK5开始增加了线程安全的Map接口ConcurrentMap和线程安全的队列BlockingQueue(尽管Queue也是同时期引入的新的集合,但是规范并没有规定一定是线程安全......
  • C# 转 Java
    代码级转换,目前唯一可用的方案是TangibleC#toJavaConverter。把编译后的IL转为bytecode再反编译也是一个思路,没有找到相关实现。转换难点并不是语法,语法用CodeDOM解析后重新生成Java就好了。真正的难点是库,Tangible提供了不少辅助函数,比如Split之类的。当然,任......
  • 学习Java第14天
    条件运算符packageoperator;//**三元运算符publicclassDemo08{publicstaticvoidmain(String[]args){//x?y:x**//**如果x==true,则结果为y,否则结果为z*intscore=80;Stringtype=score<60?"不及格":"及格";//**必须掌握**//ifSystem.out*.print......
  • 为什么您应该考虑这些 AnyWord 替代方案
    如果您通过此页面上的链接购买商品,我们可能会从我们的联盟合作伙伴那里赚钱。您可能需要考虑使用AnyWord替代方案有几个原因。首先,一些AnyWord替代品更实惠。这意味着您可以以更低的价格获得相同或更好的特性和功能。其次,一些AnyWord替代品提供了更多的特性和功能。这意味着您......
  • java导出word加水印,使用aspose.words加freemaker实现
    先通过freemaker模板得到word文档通过aspose.words中的Document读取文档,使用aspose.wordsShape添加水印publicstaticvoidexportWordWaterMark(StringtemplateName,Map<String,Object>data,StringdocName,HttpServletResponseresponse,StringwatermarkText,Stringfo......
  • zookeeper JavaApi 删除节点
    /**删除节点*1.删除单个节点*2.删除带有子节点的节点*3.必须成功的删除*4.回调***/@Testpublicvoiddelete1()throwsException{//1.删除单个节点client.delete().forPath("/app1");}@Testpublicvoiddelete2()throw......
  • Java性能监控的一些记录
    本篇所有内容都是基于JDK5,如使用JDK6会有差别。工作,有一些值得记录的地方:JDK自身提供了很多工具,基于命令行和GUI的都有,学会合理应用它们是很有用处的。首先是jmap,这是一个命令行程序,用来查看JVM中对象数量情况,直接输入jmap会显示用法,下面是两个常用的功能:Java代码 jmap-h......