java word转pdf

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

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();
   }
posted @ 2023-08-04 18:44  鲸鱼zhang  阅读(274)  评论(0编辑  收藏  举报