当前位置:   article > 正文

使用OpenOffice将文档格式转为PDF_openoffice转pdf格式变化

openoffice转pdf格式变化

1.下载OpenOffice

2.配置OpenOffice

2.1 在pom.xml中引入依赖

在这里插入图片描述

<!-- openoffice -->
        <dependency>
            <groupId>org.openoffice</groupId>
            <artifactId>unoil</artifactId>
            <version>${openoffice.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openoffice</groupId>
            <artifactId>ridl</artifactId>
            <version>${openoffice.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openoffice</groupId>
            <artifactId>juh</artifactId>
            <version>${openoffice.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-local</artifactId>
            <version>${jodconverter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-core</artifactId>
            <version>${jodconverter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jodconverter</groupId>
            <artifactId>jodconverter-spring-boot-starter</artifactId>
            <version>${jodconverter.version}</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

2.2 配置OpenOffice

# ===================================
# openOffice
# ===================================
# 默认不开启 需要开启的设置成true
jodconverter.local.enabled=false
# 设置openOffice主目录 默认会自动读取
# jodconverter.local.office-home=C:/Program Files (x86)/OpenOffice 4
# 开启多个openOffice进程,每个端口对应一个进程
jodconverter.local.portNumbers=8200
# openOffice进程重启前的最大进程数
jodconverter.local.maxTasksPerProcess=100
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.Java代码

因为在使用openOffice时,doc和ppt可以直接转pdf且不会乱码,txt文件会出现乱码,因此txt文件特殊处理,另外需要在本地磁盘配置一个目录存储转换好的PDF文件。

在这里插入图片描述

//下载文件
public byte[] downloadFile(String fileUrl) {
		byte[] by = null;
    	if (StringUtils.isEmpty(fileUrl)) {
            return null;
        }
    	try {
            StorePath storePath = StorePath.praseFromUrl(fileUrl);
            by = fastFileStorageClient.downloadFile(storePath.getGroup(), storePath.getPath(), new DownloadByteArray());
    	} catch (FdfsUnsupportStorePathException e) {
            logger.warn(e.getMessage());
        }
    	return by;
    }
//1、如果这个文件是已经上传了,根据文件路径从服务器下载为ByteArrayInputStream

ByteArrayInputStream inputStream = new ByteArrayInputStream(fastDfsUtil.downloadFile(ConverterUtils.toString(filePath)));

//2、定义文件格式  文件路径

String[] pdftypes = {".doc", ".docx", ".ppt", ".pptx"};
String pdfFilePath = "";//声明这个是文件为.pdf的路径
String nowStr = DateConvertor.getCurrentDateFormat();
String nf = nowStr.substring(0, 4);
String yf = nowStr.substring(5, 7);
String filedir = pdfdir + nf + "/" + yf + "/";//假如现在是2022年4月 则目录为D:/qlc/pdf/2022/04/

//3、转pdf存储到对应的目录

if(Arrays.asList(pdftypes).contains(kzm)) {//需要转pdf 
   pdfFilePath = filedir + zlid.replace("-", "") + ".pdf";//这里的目录为D:/qlc/pdf/2022/04/xx.pdf
   File pdfFile = new File(pdfFilePath);//声明一个.pdf文件的对象,并不会在本地磁盘真正创建
   new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                documentConverter.convert(inputStream).to(pdfFile).execute();
                inputStream.close();
            } catch (Exception e) {

            }
        }
    }).start();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
//txt文件特殊处理,需要先将目标文件下载到本地磁盘,然后在进行转化
if(".txt".equals(kzm)){
 //在磁盘中创建目录 用于存储上传的txt文件
  String dirPath = "D:/" + nf + "/";
  File dirs = new File(dirPath);
  if(!dirs.exists()){
      dirs.mkdirs();
  }
  //文件目录
  String txtPath = dirPath + zlid.replace("-", "") + ".txt";
  File txtFile = new File(txtPath);
  try{
      //写到磁盘
      FileOutputStream outputStream  =  new FileOutputStream(txtFile);
      outputStream.write(fastDfsUtil.downloadFile(ConverterUtils.toString(filePath)));
      outputStream.close();
  }catch (Exception e){
  }
  pdfFilePath = filedir + zlid.replace("-", "") + ".pdf";
  File pdfFile = new File(pdfFilePath);
  new Thread(new Runnable() {
      @Override
      public void run() {
          try {
              //txt转为pdf格式  并存储到指定目录下
              documentConverter.convert(new File(txtPath)).to(pdfFile).execute();
              //删除文件及目录
              File[] listFiles = dirs.listFiles();
              for(File files : listFiles){
                  files.delete();
              }
              dirs.delete();
          } catch (Exception e) {

          }
      }
  }).start();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/195451
推荐阅读
相关标签
  

闽ICP备14008679号