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", () => {
|
||||
const blocks = htmlToWordBlocks(`
|
||||
<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) {
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user