整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          初探JavaScript PDF blob轉換為Word docx方法

          DF轉WORD為什么是歷史難題

          PDF 轉Word 是一個非常非常普遍的需求,可謂人人忌危,為什么如此普遍的需求,卻如此難行呢,還得看為什么會有這樣的一個需求。

          PDF文檔遵循iOS32000的規范是由Adobe 公司推出的文檔格式,之所以應用如此廣泛,是因為PDF精確定位了每個字符的坐標、根據坐標繪制的各種形狀,使用PDF格式傳輸和打印文檔可以保證格式的一致性,然后很多PDF文件是可用于閱讀,展示,打印,但編輯起來是非常困難,如格式調整,文字修改,樣式調整等,那么就衍生了PDF 轉Word這一歷史性的需求,但因為兩者之間采用的編碼規范以及布局機制的完全不一致,導致轉換起來會非常復雜,一般的工具不是格式錯亂,就是內容錯亂,很難達到客戶的原生期望。

          其難點在于建立從PDF基于元素位置的格式到Word基于內容的格式的映射。PDF文檔實際并不存在段落、表格的概念,PDF轉Word要做的就是將PDF文檔中“橫、豎線條圍繞著文本”解析為Word的“表格”,將“文本及下方的一條橫線”解析為“文本下劃線”,等等。

          兩個工具兩套規則,自古以來兩個工具之間的兼容轉換,除非是為一家所有,會有通用的標準和接口預留,達到很好的兼容性,但 Adobe和微軟都是巨大的科技企業,且兩款軟件功能都是非常強大且覆蓋面全,要做到完美的匹配所有規則更是非常苦難。

          對于報表用戶來說,很多用戶會將報表理解為報告,報告自然會聯想到Word,那么就很希望在頁面中展示的內容能夠成 Word 文件來進行存檔,編輯等作用。

          ActiveReportsJS 是一款前端的報表開發工具,不與后端關聯,因此想要將展示的HTML 生成Word,研發團隊經過一些調研發現整個過程會非常復雜非常困難,正如他們反饋:“不是一個sprint能解決的問題”,就PDF.js 背后都有強大的Mozilla支撐,更何況Word文檔是依托微軟的Office開發組件去生成的。

          但在實際接觸客戶的時候,許多用戶都會來詢問相關內容包括如何用報表設計類似審批表、人事履歷表、檢測報告等很常見的Word報告。用戶對結果都比較滿意,但唯一用戶不滿的是報表結果只能生成pdf。這是傳統,這也是核心需求,也是痛點。

          本葡萄就有些很著急,于是不信這個邪,在前端工具如此豐富的情況下,竟沒有一個這樣可用的工具?

          開始搜索,打開google,榨干全部腦汁的詞匯量輸入了我需要的關鍵詞,搜索到了以下結果。

          乍一看,第一條完全吻合,Node.js 雖說是服務端也不是不可以接受,只要有方案即可。

          使用cloudmersive-convert-api-client 實現任意文件格式的轉換

          看著非常有戲。

          代碼簡單:

          但仔細看看代碼,果然老天在為我們送東西的時候都在背后的標好了價格

          心想如果可以,付費就付費吧,畢竟我們也是做付費商業軟件的專業er,版權意識還是需要有的。

          點擊登錄,用谷歌賬號登陸成功后,即可在項目中引用cloudmersive-convert-api-client 安裝包。

          該JS 庫提供了將近幾十種的API及Class用于處理轉換不同的格式文件:除了將PDF轉Word外,還有其他發的文件格式轉換,使用起來也是非常簡單,

          轉換結果測評:

          可以識別本地的PDF 文件,轉換結果:

          1. 能夠保證90%的格式和樣式,達到要求
          2. 圖片可直接導入
          3. 背景色無法保留
          4. 表格無法直接導入為Word的表格,只能作為但文本
          5. 頁眉頁腳信息無法直接導入為Word的頁眉頁腳,只作為文本
          6. 部分內容丟失

          • 產品價格

          因為整個轉換API 只是CloudMersive 的一個API功能,整個產品還附加其他的安全檢驗等功能,因此產品是按月及并發數收費的。大家可自行搜索了解,不過他們網站倒是提供好了幾個文件轉換的工具非常好用,無需登錄直接獲取轉換結果

          嘗試既然有PDF流直接暴力轉換Word文檔,可否?

          通過搜索發現PDF對象流直接用JS 轉換為Word 文件是非常困難的, 而且經過驗證ARJS 導出PDF 文件可以用Word軟件打開,那么突然想到是否可以找一個中間件,將PDF流直接轉換為doc或docx格式,但搜索一番,嘗試之后,只是在.pdf前面加了document.docx.pdf

          該方法嘗試失敗。

          跟技術大咖聊了之后,才發現pdf和word雖然本質都是二進制流,但內部的聲明等都是各自文件特有的屬性,因此不能直接轉換,簡而言之就是是什么文件流就只能保存什么文件流。且PDF 和 Word是兩大技術公司背書,直接轉換得用專業的工具,因此此路不通

          曲線救Coder: HTML 轉換PDF 大工將成?

          于是乎,退而求其次,HTML 是萬能的,HTML 可以轉萬物, HTML 轉PDF, HTML 轉圖片,HTML 轉Excel等等等,那么 ActiveReportsJS 提供了可將報表導出為HTML 文件且格式完全一致,那么方法來了,我直接使用HTML 轉 Word不是更方便些?Google搜索果然此類資料比PDF 轉Word多了百倍,而且看代碼也是操作非常簡單:

          只需3步驟:

          1、將報表導出HTML

            var pageReport = new ARJS.PageReport();
                      pageReport.load('./BandedReport.rdlx-json')
                          .then(function() { return pageReport.run() })
                          .then(function(pageDocument) { return HTMLExport.exportDocument(pageDocument) })

          2、加工HTML 代碼增加office 標記

            var header = "<html xmlns:o='urn:schemas-microsoft-com:office:office' "+
                      "xmlns:w='urn:schemas-microsoft-com:office:word' "+
                      "xmlns='http://www.w3.org/TR/REC-html40'>"
                            let reg=/<html>/;
                          
                            console.log(reg.test(htmlcode));
                           var test= htmlcode.replace(reg,header);
                           var sourceHTML='data:application/vnd.ms-word;charset=utf-8,'+encodeURIComponent(test);

          3、 創建 a 標簽,直接下載 doc格式

             var fileDownload = document.createElement("a");
                 document.body.appendChild(fileDownload);
                 fileDownload.href = sourceHTML;
                 fileDownload.download = 'document.doc';
                 fileDownload.click();
                 document.body.removeChild(fileDownload);        

          看看結果:效果很Nice

          轉換結果測評:

          1. 樣式丟失,包括字體顏色,背景色,形狀
          2. 圖像丟失
          3. 表格可以直接導入為Word表格
          4. 圖標保留

          4.總結

          兩種轉化結果總結如下:

          通過一番嘗試也算是有一個Workaround,考慮到報告類的報表一般以文本內容為主,樣式也比較樸素,所以使用html到Word轉換不失為一個快速簡潔的方法,大部分需要保存為Word 還是為了進行二次編輯。本葡萄也在努力尋找HTML 轉Word 樣式保留的方法,有新的進展會給大家更新第二篇。

          轉載請注明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。微信公眾號:“葡萄城社區”。

          • Wiki百科:PDF介紹
          • Wiki 百科:Word介紹
          • pdf.js analog for Word Documents
          • 純前端報表控件 ActiveReportsJS

          AVA中將WORD轉換為HTML導入到CKEDITOR編輯器中(解決圖片問題,樣式,非常完美),ckeditor粘貼word,ckeditor3粘貼word,ckeditor4粘貼word,ckeditor5粘貼word內容,ckeditor復制word圖片,ckeditor復制粘貼word圖片,ckeditor復制word內容,ckeditor粘貼word圖片,復制word圖片粘貼到ckeditor,

          前端用了VUE2,VUE3,React,HTML5,也是一個新項目,為了方便用的這些框架,實際上這個是無所謂,功能的實現和前端這些框架沒什么關系。

          后端用了PHP,JSP,ASP,ASP.NET,SpringBoot,功能實現和后端用的什么開發語言無關,后端只提供一個文件上傳的接口,HTTP form協議,圖片上傳時會調這個接口。

          編輯器是ckeditor5,為ckeditor編輯器增加粘貼Word圖片的功能,支持快捷鍵操作(Ctrl+V),支持多種系統:Windows,macOS,Linux,信創國產化環境,中標麒麟,銀河麒麟,統信,龍芯。

          支持word粘貼,word內容粘貼,word圖文粘貼,word圖片粘貼,粘貼后圖片能夠自動上傳到服務器中,然后將圖片和內容HTML添加到編輯器中,上傳接口地址能夠自定義

          用戶使用操作起來更方便一些,一般發新聞,或者發文章用的比較多,基本上每天發新聞,發文章都會用到,

          這個功能確實為用戶帶來了方便。

          1.1. 集成到CKEditor3.x

          主要步驟如下:

          1.上傳WordPaster文件夾

          一般將WordPaster.cab放在WordPaster目錄下。

          2.上傳CKEditor插件目錄

          3.引入JS,初始化控件

          注意:不要重復引入jquery,如果您的項目已經引入了jq,則不用再引入jq-1.4

          如果希望添加到默認工具欄中,請修改ckeditor.js,在toolbar_Full中增加imagepaster,netpaster

          為ckeditor增加插件(imagepaster,netpaster,pptpaster,pdfimport):

          注意:

          1.如果接口字段名稱不是file,請配置FileFieldName。ueditor接口中使用的upfile字段

          參考:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45

          2.如果接口返回JSON,請配置ImageMatch

          參考:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1

          3.如果接口返回的圖片地址沒有域名,請配置ImageUrl

          參考:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936
          4.如果接口有權限驗證(登陸驗證,SESSION驗證),請配置COOKIE?;蛉∠麢嘞掾炞C。
          參考:http://www.ncmem.com/doc/view.aspx?id=8602DDBF62374D189725BF17367125F3

          常見問題:

          1.為什么整合到項目中圖片無法上傳?
          請先測試接口:http://www.ncmem.com/doc/view.aspx?id=61f361025c9247098f6a15c3dfc53db5

          TML編輯器 復制WORD里面帶圖文的文章,圖片可以直接顯示,JSP – 支持WORD上傳的富文本編輯器,EWEBEDITOR 從WORD中復制內容帶多張圖片,如何從WORD文檔復制公式到富文本編輯器,復制word圖片,從word中復制圖片,

          從word中粘貼圖片,粘貼word內容,粘貼word圖片,粘貼word圖文,復制粘貼word文檔,復制粘貼word圖片,復制粘貼word圖文,復制粘貼word內容,

          之前在網上找過相關的資料,論壇里面也有網友交流過,還加過不少QQ群和微信群,但是結果都不太令人滿意。相關的文章提問的人多,能夠給出方案的人少,能夠給出成熟產品的就更少了,說的直接一點根本就沒有,純屬浪費時間。要示例沒示例,要代碼沒代碼,根本就用不了,

          有幾個方面的原因吧,一個是網上的資料提的一些都是開源的方案,也不是說開源的方案不行,關鍵是提到的這些方案,公司項目組去評估發現聯系不到開發人員,而且方案本身也停止更新了,處于沒有人維護的狀態,所以項目組這邊不太敢用。主要是之前在這塊也踩過坑。

          客戶那邊也不差這點錢,之前公司項目組就是在這塊踩過坑,用了開源的方案,客戶那邊提了一個新需求,但是由于項目組對產品本身并不熟悉,導致沒辦法進行二次開發。

          從word中復制圖片和文字內容,然后粘貼到web富文本編輯器中,粘貼后word圖片自動上傳到web服務器中,自動將圖片和文字HTML添加到編輯器中,保留word中的文字格式,文字顏色,字體,樣式,

          用戶發布新聞的時候是從word里面復制圖片和文字,然后將word圖文內容粘貼到web富文本編輯器中,希望能夠將word的圖片自動上傳到服務器中,服務器地址能夠自定義,

          后端的話需要支持任意開發語言,比如ASP,ASP.NET,JSP,PHP,PYTHON等。只要是基于標準HTTP協議的都要支持。如果能夠不裝控件最好,視頻教程:https://www.ixigua.com/7233953214108795407

          1.下載示例:

          http://www.ncmem.com/webapp/wordpaster/versions.aspx

          2.復制WordPaster插件目錄

          3.引入插件文件

          注意:不要重復引入jquery,如果您的項目已經引入了jq,則不用再引入jq-1.4

          4.在工具欄中增加插件按鈕

          6.初始化控件

          注意:

          1.如果接口字段名稱不是file,請配置FileFieldName。ueditor接口中使用的upfile字段

          參考:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45

          2.如果接口返回JSON,請配置ImageMatch

          參考:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1

          3.如果接口返回的圖片地址沒有域名,請配置ImageUrl

          參考:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936

          4.如果接口有權限驗證(登陸驗證,SESSION驗證),請配置COOKIE?;蛉∠麢嘞掾炞C。

          參考:http://www.ncmem.com/doc/view.aspx?id=8602DDBF62374D189725BF17367125F3

          效果

          訂閱版報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAw70JsA8m
          政企版報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuqJtN30#/

          年費版報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwFouDIB4#/

          OEM版報價單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwV00mQSY

          產品源代碼:https://drive.weixin.qq.com/s?k=ACoAYgezAAwz13B5Tr
          授權碼生成器:https://drive.weixin.qq.com/s?k=ACoAYgezAAwzYuEEY1


          主站蜘蛛池模板: 亚洲综合av永久无码精品一区二区 | 一区二区高清视频在线观看| 99精品一区二区三区无码吞精| 精品深夜AV无码一区二区| 亚洲视频一区二区三区四区| 亚洲欧美日韩一区二区三区| 又紧又大又爽精品一区二区| 国产熟女一区二区三区四区五区| 少妇精品无码一区二区三区| 无码aⅴ精品一区二区三区| 亚洲AV无码一区二区三区国产| 久久久久久综合一区中文字幕| 亚洲国产日韩在线一区| 无码精品人妻一区二区三区AV| 亚洲熟妇av一区二区三区| 中文字幕乱码亚洲精品一区 | 国产一区二区精品久久岳| 亚洲福利一区二区| 亚洲成人一区二区| 91精品一区二区| 国产成人精品一区二区三区| 精品国产一区AV天美传媒| 一级特黄性色生活片一区二区| 农村乱人伦一区二区| 波多野结衣一区二区三区高清av | 一区二区三区美女视频| 无码乱人伦一区二区亚洲| 波多野结衣av高清一区二区三区| 亚洲国产国产综合一区首页| 国产一区二区三区日韩精品| 亚洲av鲁丝一区二区三区| 视频一区二区在线播放| 亚洲视频一区二区三区| 国产精品自在拍一区二区不卡| 亚洲AV无码一区二区一二区| 综合人妻久久一区二区精品| 国产成人精品亚洲一区 | 精品一区二区三区AV天堂| 久久伊人精品一区二区三区 | 亚洲国产精品无码久久一区二区| 能在线观看的一区二区三区|