Preserve empty QWord tables in DOCX export
This commit is contained in:
@@ -349,6 +349,33 @@ describe("wordOffice helpers", () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("сохраняет пустые ячейки и строки таблицы для DOCX", async () => {
|
||||||
|
const html = `
|
||||||
|
<table>
|
||||||
|
<tr><td><br></td><td></td><td>Итог</td></tr>
|
||||||
|
<tr><td></td><td> </td><td><br></td></tr>
|
||||||
|
</table>
|
||||||
|
`;
|
||||||
|
const blocks = htmlToWordBlocks(html);
|
||||||
|
const blob = await exportDocxBlob("Пустая таблица.docx", html);
|
||||||
|
const zip = await JSZip.loadAsync(await blob.arrayBuffer());
|
||||||
|
const documentXml = (await zip.file("word/document.xml")?.async("string")) ?? "";
|
||||||
|
|
||||||
|
expect(blocks).toEqual([
|
||||||
|
{
|
||||||
|
type: "table",
|
||||||
|
rows: [
|
||||||
|
["", "", "Итог"],
|
||||||
|
["", "", ""]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
expect(documentXml).toContain("<w:tbl>");
|
||||||
|
expect(documentXml.match(/<w:tr>/g)).toHaveLength(2);
|
||||||
|
expect(documentXml.match(/<w:tc>/g)).toHaveLength(6);
|
||||||
|
expect(documentXml).toContain("Итог");
|
||||||
|
});
|
||||||
|
|
||||||
it("сохраняет размер шрифта из HTML inline-стилей для DOCX", () => {
|
it("сохраняет размер шрифта из HTML inline-стилей для DOCX", () => {
|
||||||
const blocks = htmlToWordBlocks(`
|
const blocks = htmlToWordBlocks(`
|
||||||
<p>Normal <span style="font-size: 18pt;">Large</span> <span style="font-size: 24px;">Pixel size</span></p>
|
<p>Normal <span style="font-size: 18pt;">Large</span> <span style="font-size: 24px;">Pixel size</span></p>
|
||||||
|
|||||||
@@ -647,11 +647,7 @@ function parseHtmlFragment(html: string) {
|
|||||||
|
|
||||||
function tableRows(table: Element) {
|
function tableRows(table: Element) {
|
||||||
return Array.from(table.querySelectorAll("tr"))
|
return Array.from(table.querySelectorAll("tr"))
|
||||||
.map((row) =>
|
.map((row) => Array.from(row.querySelectorAll("th,td")).map(elementText))
|
||||||
Array.from(row.querySelectorAll("th,td"))
|
|
||||||
.map(elementText)
|
|
||||||
.filter((cell) => cell.length > 0)
|
|
||||||
)
|
|
||||||
.filter((row) => row.length > 0);
|
.filter((row) => row.length > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user