电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JAVA實現DOC轉PDF的示例代碼

瀏覽:11日期:2023-12-07 17:31:48
目錄一、下載依賴二、代碼實現三、轉換結果四、后續研究五、總結

Word作為目前主流的文本編輯軟件之一,功能十分強大,應用人群廣,但是它也存在一些問題。像是Word文件在不同軟件或操作平臺之間傳輸的時候,時不時會出現各種格式的“變化”,也會有點“不穩定”,例如內容和格式經常容易篡動。

相較于Word,pdf格式文件顯然優秀不少。雖然在內容編輯和修改方面表現不佳,但pdf格式文件在不同平臺和軟件上的穩定性表現著實出色。日常辦公中,越來越多的會選擇將編輯好的Word文件轉換成Pdf格式文件,然后再分享給第三方瀏覽。

如果只是1個Word文件轉換成Pdf文件,簡直so easy;10個Word文件轉換成pdf文件,雖煩躁,但能忍;如果是將1000個word文件轉換成pdf文件呢?這會估計一股無名之火直沖天靈蓋,立馬想摔電腦的沖動都有了。

但對于程序猿來說,操作起來顯然會容易很多,正好接到一個任務,索性就來和大家分享一下:將docx轉成PDF文檔,還要以代碼的方式實現批量操作。先后參考了Apache poi java庫以及docx4j組件,于是選擇以docx4j組件來進行文檔操作。

第一批次的文檔共90篇:

JAVA實現DOC轉PDF的示例代碼

以下開始實現docx4j的文檔轉PDF功能:

一、下載依賴

docx4j所有的依賴jar包使用marven去處理還是蠻簡潔的:

<dependency><groupId>org.docx4j</groupId><artifactId>docx4j-JAXB-Internal</artifactId><version>8.2.4</version></dependency><dependency><groupId>org.docx4j</groupId><artifactId>docx4j-export-fo</artifactId><version>8.2.4</version></dependency>

就兩個,短暫等待下載依賴之后發現,docx4j的依賴jar包還是挺多的:

JAVA實現DOC轉PDF的示例代碼

手動開始敲代碼吧。

二、代碼實現

package com.convert.test;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import org.docx4j.Docx4J;import org.docx4j.fonts.IdentityPlusMapper;import org.docx4j.fonts.Mapper;import org.docx4j.fonts.PhysicalFonts;import org.docx4j.openpackaging.exceptions.Docx4JException;import org.docx4j.openpackaging.packages.WordprocessingMLPackage;public class ConvertTest {public static void main(String[] args) {word2pdf('D:tran2.doc', 'D:tran2.pdf');}public static void word2pdf(String source, String target) {try { WordprocessingMLPackage pkg = Docx4J.load(new File(source)); Mapper fontMapper = new IdentityPlusMapper(); fontMapper.put('隸書', PhysicalFonts.get('LiSu')); fontMapper.put('宋體', PhysicalFonts.get('SimSun')); fontMapper.put('微軟雅黑', PhysicalFonts.get('Microsoft Yahei')); fontMapper.put('黑體', PhysicalFonts.get('SimHei')); fontMapper.put('楷體', PhysicalFonts.get('KaiTi')); fontMapper.put('新宋體', PhysicalFonts.get('NSimSun')); fontMapper.put('華文行楷', PhysicalFonts.get('STXingkai')); fontMapper.put('華文仿宋', PhysicalFonts.get('STFangsong')); fontMapper.put('仿宋', PhysicalFonts.get('FangSong')); fontMapper.put('幼圓', PhysicalFonts.get('YouYuan')); fontMapper.put('華文宋體', PhysicalFonts.get('STSong')); fontMapper.put('華文中宋', PhysicalFonts.get('STZhongsong')); fontMapper.put('等線', PhysicalFonts.get('SimSun')); fontMapper.put('等線 Light', PhysicalFonts.get('SimSun')); fontMapper.put('華文琥珀', PhysicalFonts.get('STHupo')); fontMapper.put('華文隸書', PhysicalFonts.get('STLiti')); fontMapper.put('華文新魏', PhysicalFonts.get('STXinwei')); fontMapper.put('華文彩云', PhysicalFonts.get('STCaiyun')); fontMapper.put('方正姚體', PhysicalFonts.get('FZYaoti')); fontMapper.put('方正舒體', PhysicalFonts.get('FZShuTi')); fontMapper.put('華文細黑', PhysicalFonts.get('STXihei')); fontMapper.put('宋體擴展', PhysicalFonts.get('simsun-extB')); fontMapper.put('仿宋_GB2312', PhysicalFonts.get('FangSong_GB2312')); fontMapper.put('新細明體', PhysicalFonts.get('SimSun')); pkg.setFontMapper(fontMapper); Docx4J.toPDF(pkg, new FileOutputStream(target));} catch (FileNotFoundException e) { e.printStackTrace();} catch (Docx4JException e) { e.printStackTrace();} catch (Exception e) { e.printStackTrace();}}}三、轉換結果

SLF4J: Failed to load class 'org.slf4j.impl.StaticLoggerBinder'.SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.Using pdbs 420=7mmUsing pdbs 420=7mm

有一點報錯,不過并不影響pdf的生成,打開生成的pdf,內容也是完整的。算是完成了吧,只要再寫一個for循環,去遍歷所有的文檔就可以了。但是后來發現轉換下來的pdf數量少了10個,所有的文檔并沒有全都轉換成功。

四、后續研究

排查一番,發現這些文檔中有10個doc文檔,就該就是這10個沒有成功了,單獨拎出來轉換一下,結果就報錯了:

SLF4J: Failed to load class 'org.slf4j.impl.StaticLoggerBinder'.SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.org.docx4j.openpackaging.exceptions.Docx4JException: This file seems to be a binary doc/ppt/xls, not an encrypted OLE2 file containing a doc/pptx/xlsxat org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:612)at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:414)at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:287)at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:265)at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:168)at org.docx4j.Docx4J.load(Docx4J.java:232)at com.convert.test.ConvertTest.word2pdf(ConvertTest.java:26)at com.convert.test.ConvertTest.main(ConvertTest.java:19)

This file seems to be a binary doc/ppt/xls, not an encrypted OLE2 file containing a doc/pptx/xlsx“此文件似乎是一個二進制文件doc/ppt/xls,而不是包含doc/pptx/xlsx的加密OLE2文件”貌似docx4j并不能完美的支持所有的word文檔,至少doc文檔并不能支持。我想到之前有小伙伴也遇到過這樣問題,后來說是用了永中的office轉換,索性今天自己也來嘗試一下。

三下五除二,一頓操作,永中office官網上的office直接就能把我的doc文檔轉成html展示在瀏覽器上,心細如塵的我,還在其官網上發現有一款“PDF工具集”的產品:

JAVA實現DOC轉PDF的示例代碼

在文章的右側有“開發者”選項,可以直接點擊它進入到轉換的界面。進入之后,發現永中支持的格式還是不少的,在頁面的上半部分就列出了當前支持的所有格式:

JAVA實現DOC轉PDF的示例代碼

繼續向下滾動鼠標滾輪,到達文檔轉換的位置:

JAVA實現DOC轉PDF的示例代碼

可以直接點擊上傳一份doc文檔,等待上傳完畢,就可以直接將doc文檔轉換成PDF文檔了,這樣一來,不管多少個文件,都能一鍵實現word文件轉換成pdf文件,小伙伴們再也不用擔心了。

五、總結

其實,目前市面上已有的文檔轉換類的產品非常多,市場競爭十分激烈。但依舊不妨礙有好的產品涌現出來,受到一眾用戶的喜歡和追捧。

一款好的產品一定是契合用戶的本性,能夠對用戶形成一種強大的吸引力,將其牢牢“粘住”。就像永中的這款產品,緊跟市場需求,更看到了用戶的痛點,真正做到用一款簡單、實用、好操作的產品,贏得市場,更贏得了用戶!

到此這篇關于JAVA實現DOC轉PDF的示例代碼的文章就介紹到這了,更多相關JAVA實現DOC轉PDF功能內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 影视模板素材_原创专业影视实拍视频素材-8k像素素材网 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 深圳3D打印服务-3D打印加工-手板模型加工厂-悟空打印坊 | 高速龙门架厂家_监控杆_多功能灯杆_信号灯杆_锂电池太阳能路灯-鑫世源照明 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 传爱自考网_传爱自学考试网 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 机构创新组合设计实验台_液压实验台_气动实训台-戴育教仪厂 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 方源木业官网-四川木门-全国木门专业品牌 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | AGV无人叉车_激光叉车AGV_仓储AGV小车_AGV无人搬运车-南昌IKV机器人有限公司[官网] | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 阁楼货架_阁楼平台_仓库仓储设备_重型货架_广州金铁牛货架厂 | 智能家居全屋智能系统多少钱一套-小米全套价格、装修方案 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 盘装氧量分析仪-防爆壁挂氧化锆分析仪-安徽吉帆仪表有限公司 | QQ房产导航-免费收录优秀房地产网站_房地产信息网 | 杭州门窗厂家_阳光房_包阳台安装电话-杭州窗猫铝合金门窗 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 学习安徽网| 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 网站制作优化_网站SEO推广解决方案-无锡首宸信息科技公司 | 碳纤维布-植筋胶-灌缝胶-固特嘉加固材料公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 国资灵活用工平台_全国灵活用工平台前十名-灵活用工结算小帮手 | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 冲击式破碎机-冲击式制砂机-移动碎石机厂家_青州市富康机械有限公司 | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 裹包机|裹膜机|缠膜机|绕膜机-上海晏陵智能设备有限公司 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 上海宿田自动化设备有限公司-双面/平面/单面贴标机 | 整合营销推广|营销网络推广公司|石家庄网站优化推广公司|智营销 好物生环保网、环保论坛 - 环保人的学习交流平台 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 |