1. 程式人生 > >html 轉doc文件

html 轉doc文件

html轉doc的場景可能比較少見,但近期就遇到了一個,例如一份合同,需要後臺不定期修改編輯,儲存後,前端可直接下載doc。如果一份內容需要編輯,我能想到的就只有利用線上編輯器直接編輯html內容了,所以我考慮的就是建一份html模版,後臺可以通過編輯器編輯,儲存也是一份html模版,當前端使用者下載的時候可以將html轉成偽doc檔案,然後再提供下載。

首先需要的是一份html模版,內容隨意,例如:

<h4>
		第四條:甲方權利與義務
	</h4>
	<p>
		1. 甲方的權利;
	</p>
	<p>
		2. 均由甲方負責解決。
	</p>

編輯部分此處省略,就是讀出模版內容放到線上編輯器修改儲存。

這裡只需要模版的html內容,不需要html head等標籤。

接下來就是利用php來生成doc檔案並下載。先獲取到模版內容,然後將內容包含到預設的html內,此html標籤宣告的是doc檔案:

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
</head>
<body>
<!--此處用於替換成模版內容-->
{=tpl_content=}
</body>
</html>

設定好兩個模版檔案後,就可以提供下載操作了:
$tpl_content = file_get_contents('html.tpl');
$doc_tpl = 'doc.tpl';//此處為doc預設部分,儲存在檔案或者直接寫在程式都可以。
$content = str_replace('{=tpl_content=}', $tpl_content, $doc_tpl);
$content = iconv('UTF-8', 'GB2312//IGNORE', $content);//轉換成gb2312格式
//宣告頭部下載
header('Content-type:application/word');
header('Content-Disposition: attachment; filename=download.doc');
echo $content;
exit;

這樣,一份簡單的word檔案就算是生成了,此方法html轉word會有很多限制,複雜的word排版相容性非常差,例如現在有個需要,在文件內容中加入一張浮在文字上面的圖片,你可以認為是公司的蓋章(png格式),蓋在公司名稱上面那種。如果你單純寫成html的情況,可以將圖片定位到對應位置,但經上面的方法下載回來的doc裡面,圖片就沒有了浮在上面的效果了。

此處,我使用了一種很笨的方法,就是生成一份word,下載回來後。由於是偽word文件,可以直接用編輯器開啟檔案直接編輯裡面的html內容的。

利用microsoft office 開啟這份文件,在文件內將圖片設定成浮於文字上面,然後移動到你合適的位置,也就是直接在office裡面直接編輯內容,完成效果,然後儲存。此時,你再用編輯器開啟doc檔案檢視裡面的內容,你會發覺doc裡面的標籤被office軟體重寫了,加了很多我看不懂的標籤樣式等,圖片那裡也做了處理,這些應該就是office裡面認可的編碼方式了。既然這樣,我可以抽出img處理的那部分及一些設定好的標籤等資料。保留到doc.tpl內,就可以實現我想要的效果了。

例如,office編輯後儲存的doc開啟,img部分會處理成這樣:

<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
 o:spt="75" o:preferrelative="t" path="[email protected]@[email protected]@[email protected]@[email protected]@5xe" filled="f"
 stroked="f">
 <v:stroke joinstyle="miter"/>
 <v:formulas>
  <v:f eqn="if lineDrawn pixelLineWidth 0"/>
  <v:f eqn="sum @0 1 0"/>
  <v:f eqn="sum 0 0 @1"/>
  <v:f eqn="prod @2 1 2"/>
  <v:f eqn="prod @3 21600 pixelWidth"/>
  <v:f eqn="prod @3 21600 pixelHeight"/>
  <v:f eqn="sum @0 0 1"/>
  <v:f eqn="prod @6 1 2"/>
  <v:f eqn="prod @7 21600 pixelWidth"/>
  <v:f eqn="sum @8 21600 0"/>
  <v:f eqn="prod @7 21600 pixelHeight"/>
  <v:f eqn="sum @10 21600 0"/>
 </v:formulas>
 <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
 <o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="圖片_x0020_1" o:spid="_x0000_s1027" type="#_x0000_t75"
 alt="http://xxx.com/zhang.png" style='position:absolute;
 margin-left:94.35pt;margin-top:20.35pt;width:91.1pt;height:91.1pt;z-index:1;
 visibility:visible;mso-wrap-style:square;mso-wrap-distance-left:9pt;
 mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;
 mso-wrap-distance-bottom:0;mso-position-horizontal:absolute;
 mso-position-horizontal-relative:text;mso-position-vertical:absolute;
 mso-position-vertical-relative:text'>
 <v:imagedata src="http://xxx.com/zhang.png"/>
</v:shape><![endif]--><![if !vml]><span style='mso-ignore:vglayout;position:
absolute;z-index:1;margin-left:126px;margin-top:27px;width:121px;height:121px'><img
width=121 height=121 src="http://xxx.com/zhang.png"
alt="http://xxx.com/zhang.png" v:shapes="圖片_x0020_1"></span><![endif]>(以下無正文)

此處我的章就是蓋在無正文下面的文字中,上面的程式碼也大概能夠理解是什麼意思,除了這部分及樣式,頭部資訊被修改後,html模版裡面的標籤內容,大部分一致,也可以完全一致不影響效果。

還有一個地方需要注意的是,利用wps開啟doc編輯完成上面效果後,儲存再重新開啟,圖片浮於文字上的效果就不見了,也就是實現不了,只有在microsoft office裡面編輯儲存才有效果。wps還有待完善啊。

此處只做一下實現過程的記錄,不深入研究。

相關推薦

html doc

html轉doc的場景可能比較少見,但近期就遇到了一個,例如一份合同,需要後臺不定期修改編輯,儲存後,前端可直接下載doc。如果一份內容需要編輯,我能想到的就只有利用線上編輯器直接編輯html內容了,所以我考慮的就是建一份html模版,後臺可以通過編輯器編輯,儲存也是一份h

史上最強php生成pdf,htmlpdf方法

是不是 下載地址 註意 pdflib min views 開發者 lan 輸入 之前有個客戶需要把一些html頁面生成pdf文件,然後我就找一些用php把html頁面圍成pdf文件的類。方法是可謂是找了很多很多,什麽html2pdf,pdflib,FPDF這些都試過了,但是

使用java將html原始碼(拼裝、可獲取頁面原始碼)轉換成為("html頁面",“doc檔案”,“pdf格式”),,doc檔案轉換成為pdf,,檔案的刪除、壓縮...

目錄: 1、轉換成為html頁面 2、html原始碼轉換成為doc檔案 3、html原始碼轉換成為pdf檔案 4、壓縮多個檔案成為一個zip檔案

wave 解析

chan col logs add gin mem lock fprintf rsa 轉 1 WAVE 文件格式分析 WAVE 文件作為多媒體中使用的聲音波形文件格式之一,它是以RIFF(Resource Interchange File Format)格式為標準的。每

導入的時候:Error Code: 1406. Data too long for column - MySQL

some sql_mod ict and query long switch oba -m MySQL will truncate any insert value that exceeds the specified column width. to make this

EditPlus設置html和js的註釋快捷鍵

一個 script 新的 mage scrip src edi 重新 避免 EditPlus默認是可以通過快捷鍵註釋html的,格式是 <!-- </label> <label>類型</label>

用到了base64圖片的函數,記錄一下

base64 圖片 import java.io.*; import sun.misc.*; //對圖片文件進行Base64編碼 public String getImagebase64(String imgFileName) { byte[] data = null

PDFCAD的選擇

現在我們在做很多事的時候,需要用到工具、軟件之類的進行操作,好點的工具、軟件在使用過程中肯定好用些,所以我們在選擇操作工具時選擇一款好用的,這樣會讓工作很快捷完成,用起來也會得心順手。PDF文件轉CAD文件格式時,我們也需要選擇一款好點的軟件,那麽我們應該什麽選擇呢? 在選擇PDF轉CAD轉換器時我們應

PDFCAD格式過程

PDF作為不可二次編輯的文件,若是想將文件修改,我們需要將PDF文件轉換為CAD文件,PDF文件轉換CAD文件有很多的方式,我們怎麽操作最簡單的方法呢,很多時候事情復雜了很容易出錯,簡單快捷的方式會讓人一目了然,下面就為大家介紹怎麽簡單將PDF文件轉換為CAD文件。 小編為大家推薦的是迅捷PDF轉CAD

各種上傳,離不開的表單

dal 不變 沒有 each post str 線程 order bmi 閱讀目錄 利用表單實現文件上傳 表單異步上傳(jquery.form插件) 模擬表單數據上傳(FormData) 分片上傳 使用HTML5 拖拽、粘貼上傳 上傳插件(WebUploader

網頁靜態動態的區分,js/doc獲取

16px log 市場 statement txt 紅色 ont 本地 代碼 靜態頁面查看源代碼 url:http://www.shfe.com.cn/products/cu/ 目標內容:紅色框中部分 將網頁源代碼復制到本地txt,用瀏覽器打開 結果:合約信息,國

系統藍屏獲取內存

ndb 圖片 load b2c microsoft width www. this 系統 如果系統出現頻繁的藍屏和重啟,則需要註意了,這個時候分析藍屏原因就需要崩潰當時的內存轉儲文件。 首先當然是要配置好轉儲文件。 (1)WIN+R 輸入sysdm.cpl打開系統

下載之斷點續傳(客戶端與服務端的實現)

http協議 當前時間 end box [] ada demo 服務端 sem 【轉】文件下載之斷點續傳(客戶端與服務端的實現) 【轉】文件下載之斷點續傳(客戶端與服務端的實現) 前面講了文件的上傳,今天來聊聊文件的下載。 老規矩,還是從最簡單粗暴的開始。那麽多簡單算簡單

.py.exe (轉載並減掉很多)

ioe setup spa 命令 就是 mes 下載地址 install man 首先下載pyinstaller 下載地址:http://www.pyinstaller.org/downloads.html 我的是windows操作系統,所以我選擇了支持3.6版本的zip格

[] 配置解析利器-Config庫

boa test com tail with pri 配置 itl alt [From] https://blog.csdn.net/zero__007/article/details/51493851 Typesafe的Config庫,純Java寫成、零外部依賴、代

html,css,js,管理上傳

play += orm 系統 cli ESS quest splay content 實現效果如圖: 實現代碼如下: <!DOCTYPE html><html> <head> <meta charset="utf-8" />

免費提取百度文庫 doc

ont str 福利 文檔 image soft 其他 alt gin 首先說明,今天要推薦的這款軟件,不能不能不能免費提取百度文庫裏 PDF 格式的文件。 對於其他的格式,無論收費與否都能免費提取。 只是口頭說說免不了耍流氓的嫌疑,舉栗如下: 百度文庫裏《喜迎黨的十九大知

Web開發——HTML基礎(和網站結構)

情況 擁有 navig extern 主動 value 基本 query 搜索引擎優化   參考:https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/Document_and_we

指定htmlpdf

.com data com change creat one his cat div 1.資源 <script type="text/javascript" src="./js/canvg2.js"></script> <script

推薦一個yamljson的在線工具

spec container href cimage containe node img class 類比 YAML的全稱是YAML Ain’t Markup Language,是一種簡潔的非標記語言,以數據為中心,使用空白,縮進,和分行組織數據,從而使得表示更加簡潔易讀。