Java Web世界中PDF处理及预览那些事

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/wjw521wjw521/article/details/102761339

  在浏览器上预览PDF文件,某些情况下来说是一件比较简单的事情,为什么说某些情况下呢,大多数情况下,由于现代浏览器提供的优秀功能,预览PDF文件是一件简单的事情。但某些情况下,由于PDF文件的特殊,我们在操作程序修改或签名PDF文件后的预览功能会出现这样那样的问题,或某些情况下,我们不希望我们的PDF文件被客户直接下载,这时候我们也不能用最直接的方式将PDF文件直接暴露给客户,或者,我们需要在移动端对PDF文件进行预览,这种种情况,都会让我们的PDF预览变的没开头说的那么简单。

  为什么说PDF文件比较特殊,如果我们日常处理PDF文件,最好的软件无疑是Adobe公司的ADOBE ACROBAT,但有时候你编辑PDF文件,某些情况下你会感觉PDF文件像个蒸不烂、煮不熟、捶不匾、炒不爆、响珰珰一粒铜豌豆,PDF转Word,Word转PDF,PDF转图片,PDF转HTML。同时由于中文在编程世界的特殊性,也给处理PDF带来各种乱码问题。

 下面是引用自维基百科的一段关于PDF文件的介绍:

PDF是Adobe在1990年代开发的一种文件格式,用于以独立于应用程序软件,硬件和操作系统的方式显示文档,包括文本格式和图像。 基于PostScript语言,每个PDF文件都封装了固定布局的平面文档的完整描述,包括文本,字体,矢量图形,光栅图像以及显示该文档所需的其他信息。 PDF在2008年被标准化为开放格式ISO 32000,并且不再需要任何使用费。

不管PDF文件怎么难搞,我们该克服还是要克服,如果在开发web应用的只是PC端预览PDF,可以找到一些不错的插件完成这些功能,如jquery.media.js。

如果在移动端预览,我们也可以使用比较不错的插件:

pdf.js  github地址:https://github.com/mozilla/pdf.js

pdfh5 github地址:  https://github.com/gjTool/pdfh5

当然,如果我们用以上方法预览一般PDF文件基本没问题,但是如果我们用程序对PDF进行过处理,如:表单域内容填充、签名等操作,由于以上插件(pdf.js pdfh5)的原理(对PDF文件重新进行渲染显示),在渲染过程中,由于字体或操作系统的特殊性或者其他问题,就会出现某些填充内容或签名内容不显示或在某种移动设备中不显示或者中文乱码问题。

遇到这些问题的时候,我们应该另辟蹊径,比如渲染后显示有问题,我们就不显示PDF,可以显示转化后的图片,这在Java世界也有很多工具供你使用,如:pdfbox(https://pdfbox.apache.org/)、icepdf(http://www.icesoft.org/java/projects/ICEpdf/overview.jsf)等。

如果遇到中文乱码问题,一般是字体问题,如果您在Windows上显示正常,部署到生产环境如Linux服务器上,那你可以将Windows上字体复制进Linux系统,刷新字体后使用,相关具体解决办法搜索即可。

end

如有错误,欢迎指正

猜你喜欢

转载自blog.csdn.net/wjw521wjw521/article/details/102761339