word文档转pdf并在任意浏览器预览打印一体化方案
近日,遇到一个需求,要将 word 文档转化为 pdf 文档,并且能在 IE 浏览器、火狐浏览器、谷歌浏览器等主流浏览器上展示 pdf 内容。
分析:目前在线预览 word 文档用的是卓正的 pageoffice 控件,只需要将这份 word 文档转成 pdf ,再展示在浏览器即可。
一、将 word 文件转化成 pdf 文件
这个需求,实现的方案有很多,之前也使用过开源的工具进行转化,比如 openOffice、libreOffice 。他们的好处是提供免费的接口,但是弊端也很明显,那就是需要在服务器安装软件。鉴于项目的拓展和实施现场的增加,决定换一种配置更加简单的方式来实现需求。
在项目中,引入 aspose.words.jar ,然后只需要简单的几行代码,便可实现 word 文件转化为 pdf 文件的功能:
package com.cdw.master;import java.io.File;import com.aspose.words.Document;public class WordToPdf {public static void main(String[] args) {try {// doc路径Document document = new Document("C:\\Users\\Administrator\\Desktop\\de115dc0dfc34e1da9a4d8e0b6b3cbd2.doc");// pdf路径File outputFile = new File("C:\\Users\\Administrator\\Desktop\\java实现word转pdf文件.pdf");// 操作文档保存document.save(outputFile.getAbsolutePath(), com.aspose.words.SaveFormat.PDF);} catch (Exception e) {e.printStackTrace();}}
}
而后,只需要将生成的 pdf 文件路径存入数据库,转化的简单需求就完成了。
注意:
linux 服务器下如果出现中文乱码,那可能是服务器缺少中文字体,安装中文字体就可以解决。
安装字体的方法如下:
- 查看系统支持的字体
fc-list- 查看系统支持的中文字体
fc-list :lang=zh- 创建字体目录(需要root权限,linux系统默认的字体存放路径为/usr/share/fonts,没有可自行创建)
cd /usr/share/fonts
mkdir windows- cp字体文件(将需要新增的字体文件拷贝到指定目录中)
cd windows
cp ~/fonts/* ./- 目录和字体文件设置为所有用户可见
chmod 755 …/windows
chmod 755 ./*- 应用字体
mkfontscale (如果提示 mkfontscale: command not found,需自行安装 # yum install mkfontscale )
mkfontdir
fc-cache -fv (如果提示 fc-cache: command not found,则需要安装# yum install fontconfig )- 再次查看系统支持的字体
fc-list
二、在浏览器直接打开 pdf 文件
这个需求,原本的实现方案是,谷歌、火狐等现代浏览器,可以直接打开 pdf 文件,不做处理,但是 IE 浏览器打开 pdf 文件会显示下载,这时候,需要安装 Adobe_Reader 软件,然后在 IE 浏览器的加载项中,启用 Adobe PDF Reader。
这样的实现方式对用户来说需要安装软件,不够友好,于是采用新的方案,引入 pdf.js 来实现 pdf 预览。
官网:http://mozilla.github.io/pdf.js/
源码地址:https://github.com/mozilla/pdf.js
下载后,文件目录如下:
其中代表的含义如下:
├── LICENSE
├── build/
│ ├── pdf.js - 显示层
│ └── pdf.worker.js - 核心层
└── web/
├── cmaps/ - 字符映射(由核心要求)
├── compressed.tracemonkey-pldi-09.pdf - 测试 pdf
├── debugger.js - 有帮助的PDF调试功能
├── images/ - 观看者和注释图标的图像
├── l10n.js - 汉化
├── locale/ - 翻译文件
├── viewer.css - viewer 页面样式
├── viewer.html - viewer 页面
└── viewer.js - viewer js
使用的方法也很简单,只需要在页面调用即可,下面给出演示代码:
<script type="text/javascript">var pdfFilePath = '${pdfFilePath}';//后台传过来的 pdf 文件路径$(function() {showPdf(pdfFilePath);});function showPdf(pdfFilePath){document.getElementsByTagName('iframe')[0].src = "${resource}/pdfjs/web/viewer.html?file="+encodeURIComponent("${root}/writPrint/download.do?path=" + pdfFilePath + "&fileType=pdf");document.getElementsByTagName('iframe')[0].height = document.documentElement.clientHeight-10;}/*** 页面变化调整高度*/window.onresize = function(){var fm = document.getElementsByTagName("iframe")[0];fm.height = window.document.documentElement.clientHeight-10;}</script><div style="margin:10px auto;"><iframe src="" width="100%" frameborder="0"></iframe></div>
最终效果:
附录
aspose.words.jar 三个破解版的 jar 包:
点击下载 aspose.words.jar
pdf.js 调试可用的文件:
点击下载 调试可用 pdf.js
word文档转pdf并在任意浏览器预览打印一体化方案相关推荐
- 附件预览(可用于图片、word文档、pdf、.xls表格等预览)
一.fileView.vue文件里的完整代码(fileView.vue即为抽离出的附件预览组件) 1.html部分 <template><div class="docCon ...
- 永中word页码怎么从第二页开始_快捷的word文档转pdf好方法推荐
阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都会有分享,都是免费订阅,请您放心关注.注图文来源网络,侵删 wo ...
- Word文档转PDF的功能
最近项目中有用到Word文档转PDF的功能,做了一些尝试,也遇到了一些困难. 下面把尝试的情况记录下来,也希望做过类似工作的童鞋能一起探讨一下. http://www.iteye.com/topi ...
- Java 将 Word 文档转换为 PDF 的完美工具
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:为什么魂斗罗只有 128 KB却可以实现那么长的剧情?个人原创+1博客:点击前往,查看更多 来源:https:/ ...
- 如何将Microsoft Word文档转换为PDF
PDFs are handy for distributing documents so that they're seen the same way by all parties. Typicall ...
- poi doc转docx_编写简历及Python转Word文档为Pdf(续)
续上文,讲述了前端求职面试,本文将讲述怎么找简历模板和怎么将Word文档转换pdf文件. [点击文末"阅读原文"即可查看我的简历(word版本.pdf版本)作为参考] 上文已说清楚 ...
- azw3转换为pdf_干货:如何Java 将 Word 文档转换为 PDF
在日常工作中,PDF格式良好的视觉阅读性和稳定性使其使用越来越广泛.因此我们常会遇到需要将成型的Word文档转换为PDF格式的情况.本文就将通过使用Java程序来演示如何将Word文档转换成PDF格式 ...
- Java将Word文档转换为PDF的完美工具
引用至:https://mp.weixin.qq.com/s/JIgo3f98HufGJx23mgtvag Java 将 Word 文档转换为 PDF 的完美工具 在日常工作中,PDF格式良好的视觉阅 ...
- 简要介绍word文档转换为pdf格式文档的工具
找了很多工具,其实都是乱七八糟的,没几个好用的,最好还是用Adobe Acrobat Pro吧,这个就很方便了,而且转换的也不错. ABC Amber PDF Converter ABC Amber ...
最新文章
- linux c 屏幕触摸_交互式拼接屏应用互动触摸屏实现大屏幕拼接墙
- 【Groovy】MOP 元对象协议与元编程 ( 方法合成 | 动态注入方法 )
- 调研机构称明年全球数据中心基础设施支出将增长6%
- 如何进入鸿蒙系统,魅族确认接入鸿蒙系统!并且即将亮相和用户碰面
- 代码雨代码源复制_小程序基于Parser添加长按复制、代码高亮等功能
- Java面向对象(4)--封装和隐藏
- linux下qq怎么截图,ubuntu 12.04使用QQ截图安装教程
- 使用思科asa防火墙deny QQ农场
- 【数据库系统原理】实体-联系模型
- 单例模式(含多线程处理)
- 高等代数期末考试题库及答案_复旦大学2019--2020学年第一学期19级高等代数I期末考试第六大题...
- 新库上线 | CnOpenData中国工业企业绿色专利及引用被引用数据简介
- 推荐5款超实用的小软件,建议先收藏再下载
- 计算机硬盘常用分区工具,三款好用的磁盘分区工具推荐
- qq里面发送图片显示服务器被拒绝,如何解决qq无法发送图片的问题
- Java实现简单模拟购物程序
- cydia多开微信_cydia怎么安装微信
- 浅谈老妈的QQ号被盗之后
- jsp表单提交中文乱码的解决
- ART-Pi系列文章