家好,很高興又見面了,我是"高級前端?進階?",由我帶著大家一起關注前端前沿、深入前端底層技術,大家一起進步,也歡迎大家關注、點贊、收藏、轉發,您的支持是我不斷創作的動力。
今天給大家帶來的主題是HTML5 和word的互相轉化,話不多說,直接進入正題!
html-docx-js 是一個非常小的庫,能夠將 HTML 文檔轉換為 Microsoft Word 2007 及更高版本使用的 DOCX 格式。 html-docx-js 設法使用稱為“altchunks”的功能在瀏覽器中執行轉換。 簡而言之,它允許以不同的標記語言嵌入內容。 開發者使用 MHT 文檔將嵌入內容發送到 Word,因為它允許處理圖像。 Word 打開此類文件后,會將外部內容轉換為 Word Processing ML(這是 DOCX 文件的標記語言的調用方式)并替換引用。
Microsoft Word for Mac 2008 不支持 Altchunk,LibreOffice 和 Google Docs 也不支持 Altchunk。
關于 html-docx-js 庫有幾點需要說明:
目前 Mammoth 在 Github 上通過 MIT 協議開源,有超過 1k 的 star、0.3k 的 fork、0.7k 的項目依賴量、NPM 周平均下載量 9k,是一個值得關注的前端開源項目。
var converted = htmlDocx.asBlob(content);
saveAs(converted, "test.docx");
asBlob 可以采用其他選項來控制文檔的頁面設置:
比如下面的例子:
var converted = htmlDocx.asBlob(content, {
orientation: "landscape",
margins: { top: 720 },
});
saveAs(converted, "test.docx");
需要注意的是,開發者需要傳遞完整、有效的 HTML(包括 DOCTYPE、html 和 body 標簽)。 這可能不太方便,但可以讓開發者在樣式標簽中包含 CSS 規則。
html-docx-js 作為獨立”Browserify 模塊(UMD)分發。 開發者可以將其作為 html-docx 要求。 如果沒有可用的模塊加載器,它將把自己注冊在 window.htmlDocx。
Mammoth.js 旨在轉換 .docx 文檔,例如:由 Microsoft Word、Google Docs 和 LibreOffice 創建的文檔,并將其轉換為 HTML。 Mammoth 的目標是通過使用文檔中的語義信息并忽略其他細節來生成簡單且干凈的 HTML。 例如,Mammoth 將任何具有標題 1 樣式的段落轉換為 h1 元素,而不是嘗試精確復制標題的樣式(字體、文本大小、顏色等)。
.docx 使用的結構與 HTML 的結構之間存在很大的不匹配,這意味著對于更復雜的文檔來說,轉換不太可能完美。 如果開發者僅使用樣式來對文檔進行語義標記,那么 Mammoth 效果最佳。
Mammoth.js 目前支持以下功能:
Mammoth 在眾多平臺可用,比如:Python、WordPress、Java/JVM、.NET 等等。目前 Mammoth 在 Github 上通過 BSD-2-Clause 開源,有超過 4.1k 的 star、0.5k 的 fork、4.4k 的項目依賴量、NPM 周平均下載量 76k,是一個值得關注的前端優質開源項目。
以文檔轉換為例。
Mammoth 允許在轉換文檔之前對其進行處理。 例如,假設該文檔尚未進行語義標記,但開發者知道任何居中對齊的段落都應該是標題,則可以使用 transformDocument 參數來適當地修改文檔:
function transformElement(element) {
if (element.children) {
var children = _.map(element.children, transformElement);
element = { ...element, children: children };
}
if (element.type === "paragraph") {
element = transformParagraph(element);
}
return element;
}
function transformParagraph(element) {
if (element.alignment === "center" && !element.styleId) {
return { ...element, styleId: "Heading2" };
} else {
return element;
}
}
var options = {
transformDocument: transformElement,
};
TransformDocument 的返回值在 HTML 生成期間使用。同時,上面的代碼可以使用 mammoth.transforms.paragraph 函數進行優化,比如:
function transformParagraph(element) {
if (element.alignment === "center" && !element.styleId) {
return { ...element, styleId: "Heading2" };
} else {
return element;
}
}
var options = {
transformDocument: mammoth.transforms.paragraph(transformParagraph),
};
或者,如果開發者希望已明確設置為使用等寬字體來表示代碼的段落:
const monospaceFonts = ["consolas", "courier", "courier new"];
function transformParagraph(paragraph) {
var runs = mammoth.transforms.getDescendantsOfType(paragraph, "run");
var isMatch =
runs.length > 0 &&
runs.every(function (run) {
return run.font && monospaceFonts.indexOf(run.font.toLowerCase()) !== -1;
});
if (isMatch) {
return {
...paragraph,
styleId: "code",
styleName: "Code",
};
} else {
return paragraph;
}
}
var options = {
transformDocument: mammoth.transforms.paragraph(transformParagraph),
styleMap: ["p[style-name='Code'] => pre:separator('\n')"],
};
關于 Mammoth 庫的更多用法,更多 API 示例可以參考文末資料,本文不再過多展開。
本文主要和大家介紹 HTML5 和word互轉的兩個開源庫,分別為:html-docx-js、mammoth.js。相信通過本文的閱讀,大家對 html-docx-js、mammoth.js 會有一個初步的了解。
因為篇幅有限,關于 html-docx-js、mammoth.js 的更多用法和特性文章并沒有過多展開,如果有興趣,可以在我的主頁繼續閱讀,同時文末的參考資料提供了大量優秀文檔以供學習。最后,歡迎大家點贊、評論、轉發、收藏,您的支持是我不斷創作的動力。
https://github.com/evidenceprime/html-docx-js
https://github.com/mwilliamson/mammoth.js
https://www.npmjs.com/package/html-docx-js
https://www.npmjs.com/package/mammoth
https://www.tutorialswebsite.com/export-html-to-word-document-with-javascript/
https://www.vecteezy.com/vector-art/136754-free-vector-documents
全球旅行網站HTML5模板是一款適合重新旅游行業服務網站模板下載。提示:本模板調用到谷歌字體庫,可能會出現頁面打開比較緩慢。
下載鏈接:
地址:https://yy123.ink/mobanDetail/21507
TML5 代表未來;W3C ( World Wide Web Consortium, 萬維網聯盟) 已經放棄 XHTML,從而使 HTML5 成為正式標準并得到認可。
HTML5 是下一代的 HTML。
HTML5 將成為 HTML、XHTML 以及 HTML DOM 的新標準,目標是取代現有的HTML4.01和XHTML1.0標準。它希望能夠減少互聯網富應用(RIA)對Flash、Silverlight、JavaFX等的依賴,并且提供更多能有效增強網絡應用的API。
HTML 的上一個版本誕生于 1999 年。自從那以后,Web 世界已經經歷了巨變。
HTML5 仍處于完善之中。然而,大部分現代瀏覽器已經具備了某些 HTML5 支持。
HTML5 是 W3C 與 WHATWG 合作的結果。
WHATWG 致力于 web 表單和應用程序,而 W3C 專注于 XHTML 2.0。在 2006 年,雙方決定進行合作,來創建一個新版本的 HTML。
為 HTML5 建立的一些規則:
新特性應該基于 HTML、CSS、DOM 以及 JavaScript。
減少對外部插件的需求(比如 Flash)
更優秀的錯誤處理
更多取代腳本的標記
HTML5 應該獨立于設備
開發進程應對公眾透明
最簡單的 HTML5 文檔
<!doctype html>
<title>A Tiny HTML Document</title>
<p>Let's rock the browser, HTML5 style.</p>
只包含一行文本的超簡單的 HTML5 文檔,它在瀏覽器中效果如下:
更常見的結構用<head>和<body>來分塊,把頁面的信息和頁面的實際內容分開,并用<html>來封裝整個文檔,現在的文檔樣子如下:
<!doctype html>
<html>
<head>
<title>A Tiny HTML Document</title>
</head>
<body>
<p>Let's rock the browser, HTML5 style.</p>
</body>
</html>
<html>、<head>和<body><HTML5 >不要求這些元素,但是這種書寫風格比較好。
<!doctype html>
第一行都必須是一個特定的文檔類型聲明,用于告訴后面的文檔標記遵循哪個標準。HTML5 的文檔類型聲明極其簡單。
字符編碼
現在大部分網站都使用 UTF-8 的編碼,這種編碼簡潔、轉換速度快,而且支持任何你想要的非英文字符。
在 HTML5 中增加字符編碼信息很簡單,在 <head>中增加 <meta>元素,如下:
<head>
<meta charset="utf-8">
<title>A Tiny HTML Document</title>
</head>
Dreamweaver 設計工具在創建新的網頁時會自動添加這個元信息,并且也會將文件保存為 UTF 編碼格式。如果你使用的是最簡單的文本編輯器,在保存的時候記得選擇正確的編碼(UTF-8)。
頁面語言
指明網頁中使用的自然語言是一種好的習慣。為給內容指定語言,可在任何元素上使用 lang 屬性。
為整個頁面添加語言說明,就是為 元素指定 lang 屬性,如下代碼:
<html>
如果頁面包含多種語言的文本,那么這個信息細節對于屏幕閱讀器也是很有用的。
添加樣式表
只要是經過特意設計的專業網站,就一定會使用樣式表。指定要使用的 CSS 樣式表時,需要在 <head>中增加 <link>元素,如下:
<head>
<meta charset="utf-8">
<title>A Tiny HTML Document</title>
<link rel="stylesheet" href="TinyHTML5.css">
</head>
添加 JavaScript
在 HTML5 中添加 JavaScript 與在傳統頁面上添加差不多,例如:
<head>
<meta charset="utf-8">
<title>A Tiny HTML Document</title>
<link rel="stylesheet" href="TinyHTML5.css">
<script src="TinyHTML5.js"></script>
</head>
沒有必要添加 language=”JavaScript”屬性。瀏覽器假定你要使用的 JavaScript。
特別注意:
如果你要在 IE 中花大量時間測試包含 JavaScript 的頁面,還應該增加一個特殊的注釋,叫Web標志(saved from url=),這行注釋要放在指定字符編碼元素的后面,如下:
<head>
<meta charset="utf-8">
<!-- saved from url=(0014)about:internet -->
<title>A Tiny HTML Document</title>
這條注釋告訴 IE 將頁面視為從遠程網站上下載下來的,否則,IE 會切換到一種特殊鎖定模式,彈出一條安全警告,在你點了“允許阻止的內容”按鈕之后才會執行 JavaScript 代碼。
(0014) 指的是 about:internet 字符串的長度。
最終結果
一個完整美觀的 HTML5 代碼最終如下:
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<!-- saved from url=(0014)about:internet -->
<title>A Tiny HTML Document</title>
<link rel="stylesheet" href="TinyHTML5.css">
<script src="TinyHTML5.js"></script>
</head>
<body>
<p>Let's rock the browser, HTML5 style.</p>
</body>
</html>
微信搜索公眾號華清遠見成都中心(cdfarsight),回復免費資料,免費領取嵌入式、Java、HTML5/WEB前端開發書籍!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。