function _initData(exPortData) { exPortData.fileName = typeof exPortData.fileName !== "undefined" ? exPortData.fileName : "jQuery-Word-Export"; exPortData.fileType = typeof exPortData.fileType !== "undefined" ? exPortData.fileType : ".doc"; } function getModelHtml(mhtml, mhtmlBottom, exPortData) { // console.log(exPortData.dev); var styles, updateStyles, Brow = '', direction = typeof exPortData.direction !== "undefined" ? exPortData.direction : "Vertical", header, dev = typeof exPortData.dev !== "undefined" ? exPortData.dev : " margin:72.0pt 90.0pt 72.0pt 90.0pt;", footer = ""; let devStyle = typeof exPortData.style !== 'undefined' ? exPortData.style : '' if (exPortData.styles) { styles = exPortData.styles.html(); } if (exPortData.updateExportCss) { updateStyles = exPortData.updateExportCss.html(); } if (exPortData.direction == "Horizontal") { // 横向 direction = ` @page Section1{ size:841.95pt 595.35pt; mso-page-orientation:landscape; margin:90.0pt 72.0pt 90.0pt 72.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-gutter-margin:0.0pt; mso-paper-source:0; padding:24.0pt 24.0pt 24.0pt 24.0pt; layout-grid:16.3pt; } div.Section1{ page:Section1; } `; } else { // 纵向 direction = ` @page Section1{ size:595.35pt 841.95pt; mso-page-orientation:luprightness; ${dev} mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-gutter-margin:0.0pt; mso-paper-source:0; padding:24.0pt 24.0pt 24.0pt 24.0pt; layout-grid:16.3pt; } div.Section1{ page:Section1; } `; } if (typeof exPortData.header !== 'undefined') { header = '
\n' + '

' + exPortData.header + "

\n" + "
"; } if (typeof exPortData.footer !== 'undefined') { footer = '
\n' + '

' + exPortData.footer + "

\n" + '

/\n

\n' + "
"; } if (typeof exPortData.header !== 'undefined' && typeof exPortData.footer !== 'undefined') { Brow = `
${header} ${footer}
` } // console.log(devStyle); return `
${mhtml} ${Brow}
${mhtmlBottom} `; } const exportWord = function (exPortData) { // console.log(exPortData, 1); // 文档类型 fileType 可以doc xls html 其他的自己去试 if (typeof jQuery !== "undefined" && typeof saveAs !== "undefined") { _initData(exPortData); var options = { maxWidth: 624, }; // Clone selected element before manipulating it var markup = $(exPortData.dom).clone(); // Remove hidden elements from the output markup.each(function () { var self = $(exPortData.dom); if (self.is(":hidden")) self.remove(); }); // Embed all images using Data URLs var images = Array(); var img = markup.find("img"); for (var i = 0; i < img.length; i++) { // Calculate dimensions of output image var w = Math.min(img[i].width, options.maxWidth); var h = img[i].height * (w / img[i].width); // Create canvas for converting image to data URL var canvas = document.createElement("CANVAS"); canvas.width = w; canvas.height = h; // Draw image to canvas var context = canvas.getContext("2d"); context.drawImage(img[i], 0, 0, w, h); // Get data URL encoding of image var uri = canvas.toDataURL("image/png"); $(img[i]).attr("src", img[i].src); img[i].width = w; img[i].height = h; // Save encoded image to array images[i] = { type: uri.substring(uri.indexOf(":") + 1, uri.indexOf(";")), encoding: uri.substring(uri.indexOf(";") + 1, uri.indexOf(",")), location: $(img[i]).attr("src"), data: uri.substring(uri.indexOf(",") + 1), }; } // Prepare bottom of mhtml file with image data var mhtmlBottom = "\n"; for (var i = 0; i < images.length; i++) { mhtmlBottom += "--NEXT.ITEM-BOUNDARY\n"; mhtmlBottom += "Content-Location: " + images[i].location + "\n"; mhtmlBottom += "Content-Type: " + images[i].type + "\n"; mhtmlBottom += "Content-Transfer-Encoding: " + images[i].encoding + "\n\n"; mhtmlBottom += images[i].data + "\n\n"; } mhtmlBottom += "--NEXT.ITEM-BOUNDARY--"; var fileContent = getModelHtml(markup.html(), mhtmlBottom, exPortData); // console.log(fileContent, 22); var blob = new Blob([fileContent], { type: "application/msword;charset=utf-8", }); saveAs(blob, exPortData.fileName + exPortData.fileType); } else { if (typeof jQuery === "undefined") { console.error("Please make sure your (jQuery) exists --faith"); } if (typeof saveAs === "undefined") { console.error("Please make sure your (FileSaver.js) exists --faith"); } } }; export default exportWord;