使用html-docx.js插件,引入的样式无效?

获取要导出的两张表,写了css的样式,只有table的样式生效,其余都没有生效。

daochuWord() {

let contentHtml = document.getElementById("table1").innerHTML;

let content2Html = document.getElementById("table2").innerHTML;

let cssHTML = `

table td {

border: 3px red solid;

font-family: '宋体';

}

textarea {

border: none;

padding: 0;

margin: 0;

margin-top: 6px;

font-size: 16px;

}

table {

width: 100%;

border-collapse: collapse;

border: 2px #000 solid;

}

td {

padding: 0 6px;

text-align: center;

font-size:17px;

box-sizing: border-box;

}

.tal {

text-align: left;

}

.tac {

text-align: center;

}

.zong {

height: 5em;

display: inline-block;

}

.title {

text-align: center;

font-size: 32px;

letter-spacing: 15px;

margin: 11px 0;

color: #000;

font-family: '宋体';

font-weight: 400;

margin-bottom: 9px;

padding-left: 20px;

/* letter-spacing: 15px; */

}

.photo {

position: relative;

}

.photo img {

width: 100%;

height: 100%;

position: absolute;

top: 0;

left: 0;

}

.jianli {

width: 100px;

text-align: left;

vertical-align: baseline;

overflow: auto;

box-sizing: border-box;

}

`;

let content = `

<!DOCTYPE html><html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<style>

${cssHTML}

</style>

</head>

<body>

<div class="title">干部任免审批表</div>

<table>

${contentHtml}

</table>

<table>

${content2Html}

</table>

<div class="cbr">出表人:</div>

</body>

</html>`

此时打印出content,可以获取到拼接后的数据;但就是样式不生效;

     let converted = htmlDocx.asBlob(content);

FileSaver.saveAs(converted, "干部任免表.docx");

}


回答:

在导出 Word 时,由于 Word 的样式不会直接读取你写在 HTML 中的样式,因此需要使用一些特殊的类和样式来将 HTML 样式应用于 Word。

在你提供的代码中,缺少了table-bordered和table-striped这两个类的定义。这两个类在 Bootstrap 中是用于设置表格边框和交替背景色的。如果你想使用这些类,需要先导入 Bootstrap 样式文件。

另外,由于 Word 使用的是不同的渲染引擎,一些 CSS 样式可能不支持(例如文本阴影等),因此有些样式可能无法在 Word 中生效。可以尝试使用 Word 中支持的样式

font-size 替换为字号,例如:font-size: 16px; -> font-size:16pt;;
margin 替换为页边距,例如:margin: 0 -> margin: 0pt;
padding 替换为内边距,例如:padding: 0 -> padding: 0pt。

下面是我修改后的代码

daochuWord() {

let contentHtml = document.getElementById("table1").innerHTML;

let content2Html = document.getElementById("table2").innerHTML;

let cssHTML = `

table td {

border: 3pt solid #FF0000;

font-family: '宋体';

}

textarea {

border: none;

padding: 0;

margin: 0;

margin-top: 6pt;

font-size: 16pt;

}

table {

width: 100%;

border-collapse: collapse;

border: 2pt solid #000000;

}

td {

padding: 0 6pt;

text-align: center;

font-size: 17pt;

box-sizing: border-box;

}

.tal {

text-align: left;

}

.tac {

text-align: center;

}

.zong {

height: 5em;

display: inline-block;

}

.title {

text-align: center;

font-size: 32pt;

letter-spacing: 15pt;

margin: 11pt 0;

color: #000;

font-family: '宋体';

font-weight: 400;

margin-bottom: 9pt;

padding-left: 20pt;

}

.photo {

position: relative;

}

.photo img {

width: 100%;

height: 100%;

position: absolute;

top: 0;

left: 0;

}

.jianli {

width: 100pt;

text-align: left;

vertical-align: baseline;

overflow: auto;

box-sizing: border-box;

}

/* 表格边框和交替背景色 */

.table-bordered td, .table-bordered th {

border: 2pt solid #000;

}

.table-striped tbody tr:nth-of-type(odd) {

background-color: #f9f9f9;

}

`;

let content = `

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<style>

${cssHTML}

</style>

</head>

<body>

<div class="title">干部任免审批表</div>

<table class="table-bordered table-striped">

${contentHtml}

</table>

<table class="table-bordered table-striped">

${content2Html}

</table>

<div class="cbr">出表人:</div>

</body>

</html>

`;

let converted = htmlDocx.asBlob(content);

FileSaver.saveAs(converted, "干部任免表.docx");

}

在这个代码中,添加了.table-bordered和.table-striped这两个类,并定义了它们的边框和交替背景色。同时修改了一些样式单位和取值,例如将px替换为pt,并将字号统一为pt。你可以根据实际需要进行调整。

以上是 使用html-docx.js插件,引入的样式无效? 的全部内容, 来源链接: utcz.com/p/934404.html

回到顶部