word转pdf (Centors环境下)

1.背景

最近在做网上打印系统,需要计算用户上传文件的页数计算价格,主要文档格式有pdf,txt,doc,docx
(1)对于PDF比较简单直接用api 操作得到页数 准确率挺高的测了很多都对
Maven导包:

<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.1</version>
</dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.1</version>
</dependency>

代码:

  public static void main(String args[]) throws IOException {String file1 = "C:\\Users\\win10\\Desktop\\书本\\pdf\\Java编程思想第四版完整中文高清版.pdf"; //String file2 = "C:\\Users\\win10\\Desktop\\书本\\pdf\\阿里巴巴Java开发手册(纪念版).pdf"; //String file3 = "I:\\高代\\高等代数下(复习)-chenqh.pdf"; // 4File pdfFile = new File(file3);PDDocument document = null;try{// 方式一:/**InputStream input = null;input = new FileInputStream( pdfFile );//加载 pdf 文档PDFParser parser = new PDFParser(new RandomAccessBuffer(input));parser.parse();document = parser.getPDDocument();**/// 方式二:document=PDDocument.load(pdfFile);// 获取页码int pages = document.getNumberOfPages();System.out.println(pages);
//            // 读文本内容
//            PDFTextStripper stripper=new PDFTextStripper();
//            // 设置按顺序输出
//            stripper.setSortByPosition(true);
//            stripper.setStartPage(1);
//            stripper.setEndPage(pages);
//            String content = stripper.getText(document);
//            System.out.println(content);}catch(Exception e){System.out.println(e);}finally {document.close();}}

(2)对于txt,doc,docx这类文档虽然可以用poi操作读取页数 这个准确率相信也有同学测过,准确率可能就50-60%左右吧,对于设置价格误差太大,不适合。
但我还是说一下吧,有空的同学可以逛逛
maven导包

   <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency>

代码:

   public static void main(String[] args) throws Exception {// TODO code application logic here// parse2007();parse97();
}// docx文档
public static void parse2007()  throws Exception {String fileName1 = "D:\\count\\软1-新生班导工作计划.docx";  // 2  OKString fileName2 = "D:\\count\\软3-新生班导工作计划.docx";  // 2  OKString fileName3 = "D:\\count\\软4-新生班导工作计划.docx";  // 2  OKString fileName4 = "D:\\count\\数2-新生班导工作计划.docx";  // x1   4String fileName5 = "D:\\count\\数3-新生班导工作计划.docx";  // 3   OKString fileName6 = "D:\\count\\信安-新生班导工作计划.docx";  //x1   5XWPFDocument docx = new XWPFDocument(POIXMLDocument.openPackage(fileName6));int pages = docx.getProperties().getExtendedProperties().getUnderlyingProperties().getPages();//总页数int wordCount = docx.getProperties().getExtendedProperties().getUnderlyingProperties().getCharacters();// 忽略空格的总字符数 另外还有getCharactersWithSpaces()方法获取带空格的总字数。System.out.println ("pages=" + pages + " wordCount=" + wordCount);
}// doc 文档
public static void parse97()  throws Exception {String fileName1 = "D:\\count\\福州大学本科生科研训练计划(SRTP)项目申请表(2018年创新类) (1).doc"; // 11 OKString fileName2 = "D:\\count\\软2-新生班导工作计划.doc";   // 7 okString fileName3 = "D:\\count\\数1-新生班导工作计划.doc";   // x1  4WordExtractor doc = new WordExtractor(new FileInputStream(fileName2));int pages = doc.getSummaryInformation().getPageCount();//总页数int wordCount = doc.getSummaryInformation().getWordCount();//总字符数System.out.println ("pages=" + pages + " wordCount=" + wordCount);
}

2.转变思想

对于pdf可以精准的计算出页数,剩下的就是doc,doxc,ppt博主在网上搜了一大堆资料,方法各异最后我总结出一种最简便高效,且转换后还原度非常高的方法,最重要的是跨平台,接下来就分享给大家。
(1)在linux 上装 unoconv

yum install unoconv

然后

  unoconv -help

查看是否安装成功
(2) 现在就可以通过linux命令

unoconv -f pdf /home/a.doc
unoconv -f pdf /home/a.docx
unoconv -f pdf /home/a.txt

把这三类文件转为pdf且效率高

(3)
对含有中文的文件会出现乱码问题
解决方法:

yum groupinstall chinese-support //安装中文支持vim /etc/sysconfig/i18n   //修改编码文件添加 没有就创建一个添加下面三行(locale  可以查看编码)
LANG=”zh_CN.GB18030″
SUPPORTED=”zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en”
SYSFONT=”latarcyrheb-sun16″vim /etc/vimrc 修改文件在文件最后添加下面两行
set fileencoding=utf-8
set fileencodings=utf-8,gb18030,gbk,big5
保存修改
reboot 重启服务器首先,在D:盘创建一个文件夹win
进入C:\WINDOWS\Fonts把此文件夹下的所以字体复制 到D:\win
由于win文件夹比较大,进行打包 win.zip //解压
unzip win.zip
mv win /usr/share/fonts  cd /usr/share/fonts/win
chmod  -Rf 755 Fonts  //加载字体
mkfontscale  如果没有这个命令 就yum install mkfontscale
mkfontdir  如果没有这个命令 就yum install mkfontdir
fc-cache –fv  reboot 重启服务器如果启动后转文件出现 段错误或者Segmentation fault
或者Error: Unable to connect or start own listener. Aborting.
重启一下服务器就ok了

接下来就是用java 操作一下linux命令行 把目标文件转为pdf
最后用pdf计算页数最后计算出结果

下一篇博客讲解如何用java操作linux

备注:
祝各位同学成功。

word转pdf (Centors环境下)相关推荐

  1. Confluence 自定义html禁用Word、PDF导出权限

    Confluence 自定义html禁用Word.PDF导出权限 1. 空间权限中关闭导出权限配置 仅关闭空间导出权限:单页面导出仍然无限制 2.获取要做导出Word.PDF限制的空间标识key 2. ...

  2. 在linux环境下com.aspose.words将word文件转为pdf后乱码,window环境下不会

    在linux环境下com.aspose.words将word文件转为pdf后乱码,window环境下不会 乱码原因是因为在linux系统下没有中文字体,所以转换的时候乱码,需要我们手动把window系 ...

  3. 转 安装 Microsoft Office 环境下,几种常见的Word转换PDF方法

    PDF转WORD请参见:http://www.portablesoft.org/tags/pdf%E8%BD%AC%E6%8D%A2%E5%99%A8/ 1.Microsoft Office 2010 ...

  4. 在Springboot环境下,使用Docx4J + Freemarker 完成word docx文件生成与Pdf文件转换(附带兼容linux字体问题处理办法)

    在Springboot环境下,使用Docx4J + Freemarker 完成word docx文件生成与Pdf文件转换(附带兼容linux字体问题处理办法) 前言 效果展示 正文 docx文件模板创 ...

  5. 【Python】comtypes模块Windows环境下使用批量转换成PDF文件

    最近在微信看到一篇文章介绍说批量将ppt文件转化为pdf文件,自己尝试了一下,后面想能否自己封装一个类,既能将ppt转换为pdf,而且能够将word转换为pdf,或者其他类型转化为pdf.花了半天时间 ...

  6. Java项目在Linux环境使用aspose把word转pdf乱码问题

    Java项目在Linux环境使用aspose把word转pdf乱码问题 一.问题 在项目中有word转pdf并展示的功能,在本地的windows环境下没有问题.但是放在Linux中部署运行,生成的pd ...

  7. python word转pdf linux_Linux下使用LibreOffice+python将doc/docx/wps格式的文档转成html/txt/docx等格式...

    Linux下的word文档格式转换工具 最近接到一个需求,要将所有不同格式的文档(包括.doc/.docx/.wps)转成统一格式,如都转为.docx,或直接转为.html 或.txt.经调研后,发现 ...

  8. java下freemarker2.3.28+aspose实现生成word文档生成、word转pdf转换

    一.java生成word文档 java生成word文档常用的两种方式: (1)apache下的poi类库处理office文档 (2)freemarker编辑word文件转换的xml文件 通过网上了解, ...

  9. java excel转pdf linux_linux php 环境word转pdf、excel转pdf、office转pdf

    最近项目中遇到一个需求,将word.excel文件转换成pdf,并且打上水印,我利用的是libreoffice,这个需要Java 的jdk环境.废话不多说,开撸 1.在linux上搭建jdk环境 2. ...

最新文章

  1. java主类结构设计,设计结构(1)
  2. 注册中心 Spring Cloud Eureka
  3. CentOS报错:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7arch=x86_64repo=osi...
  4. c语言创建文件的作用,c语言文件创建与建立
  5. Cisco PT模拟实验(8) 三层交换机的基本配置
  6. 【clickhouse】Too many parts . Merges are processing significantly slower than inserts
  7. 使用WinSCP命令上传文件到CentOS
  8. Visio2010绘制用例图
  9. ## STAMP使用中数据上传注意事项
  10. echarts Map(地图) 波纹数据点
  11. 关于 Photoshop 图层
  12. Could not inflate Behavior subclass
  13. Java volatile 关键字的作用
  14. HttpMediaTypeNotSupportedException:Content type 'multipart/form-data;boundary=W10Jdm..'not supported
  15. ClickOnce 程序安装路径
  16. 多线程+socket 实现群聊服务器
  17. 卡方检验的基本原理详解
  18. Biopython 安装
  19. 用计算机高新证成都入户,关于2021年成都高新区小升初“报名电脑随机录取”的公告发布!...
  20. PS 小技巧让你好用到哭

热门文章

  1. 【蓝桥杯】基础练习 杨辉三角形 Java
  2. STVP下载提示“Warning: Old ST-Link firmware version detected”
  3. TED的字幕到哪里下载?介绍一个很好的网站
  4. SwitchResX for Mac 屏幕分辨率修改工具
  5. SAP系统PM模块概述-OVERVIEW
  6. 【毕业设计】18-基于单片机的数字直流电源设计(源代码工程+仿真工程+答辩论文+答辩PPT)
  7. 经验分享:有关数学建模的几种方法论
  8. 如何使用Sklearn生成自己的数据集
  9. 结巴分词----去停用词
  10. unionid openid微信php,openid与unionid