Preserve empty QWord tables in DOCX export

This commit is contained in:
Курнат Андрей
2026-06-02 09:06:22 +03:00
parent a9f9aa6cca
commit e5537b726e
2 changed files with 28 additions and 5 deletions
+27
View File
@@ -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>&nbsp;</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", () => {
const blocks = htmlToWordBlocks(`
<p>Normal <span style="font-size: 18pt;">Large</span> <span style="font-size: 24px;">Pixel size</span></p>
+1 -5
View File
@@ -647,11 +647,7 @@ function parseHtmlFragment(html: string) {
function tableRows(table: Element) {
return Array.from(table.querySelectorAll("tr"))
.map((row) =>
Array.from(row.querySelectorAll("th,td"))
.map(elementText)
.filter((cell) => cell.length > 0)
)
.map((row) => Array.from(row.querySelectorAll("th,td")).map(elementText))
.filter((row) => row.length > 0);
}