@fiduswriter/books-document 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +24 -0
- package/dist/exporter/bits/index.d.ts +42 -0
- package/dist/exporter/bits/index.d.ts.map +1 -0
- package/dist/exporter/bits/index.js +98 -0
- package/dist/exporter/bits/index.js.map +1 -0
- package/dist/exporter/bits/templates.d.ts +7 -0
- package/dist/exporter/bits/templates.d.ts.map +1 -0
- package/dist/exporter/bits/templates.js +78 -0
- package/dist/exporter/bits/templates.js.map +1 -0
- package/dist/exporter/docx/index.d.ts +27 -0
- package/dist/exporter/docx/index.d.ts.map +1 -0
- package/dist/exporter/docx/index.js +129 -0
- package/dist/exporter/docx/index.js.map +1 -0
- package/dist/exporter/docx/render.d.ts +14 -0
- package/dist/exporter/docx/render.d.ts.map +1 -0
- package/dist/exporter/docx/render.js +116 -0
- package/dist/exporter/docx/render.js.map +1 -0
- package/dist/exporter/epub/index.d.ts +65 -0
- package/dist/exporter/epub/index.d.ts.map +1 -0
- package/dist/exporter/epub/index.js +268 -0
- package/dist/exporter/epub/index.js.map +1 -0
- package/dist/exporter/epub/templates.d.ts +65 -0
- package/dist/exporter/epub/templates.d.ts.map +1 -0
- package/dist/exporter/epub/templates.js +223 -0
- package/dist/exporter/epub/templates.js.map +1 -0
- package/dist/exporter/epub/tools.d.ts +5 -0
- package/dist/exporter/epub/tools.d.ts.map +1 -0
- package/dist/exporter/epub/tools.js +59 -0
- package/dist/exporter/epub/tools.js.map +1 -0
- package/dist/exporter/html/index.d.ts +67 -0
- package/dist/exporter/html/index.d.ts.map +1 -0
- package/dist/exporter/html/index.js +300 -0
- package/dist/exporter/html/index.js.map +1 -0
- package/dist/exporter/html/templates.d.ts +40 -0
- package/dist/exporter/html/templates.d.ts.map +1 -0
- package/dist/exporter/html/templates.js +226 -0
- package/dist/exporter/html/templates.js.map +1 -0
- package/dist/exporter/html/tools.d.ts +2 -0
- package/dist/exporter/html/tools.d.ts.map +1 -0
- package/dist/exporter/html/tools.js +23 -0
- package/dist/exporter/html/tools.js.map +1 -0
- package/dist/exporter/latex/index.d.ts +32 -0
- package/dist/exporter/latex/index.d.ts.map +1 -0
- package/dist/exporter/latex/index.js +102 -0
- package/dist/exporter/latex/index.js.map +1 -0
- package/dist/exporter/latex/templates.d.ts +4 -0
- package/dist/exporter/latex/templates.d.ts.map +1 -0
- package/dist/exporter/latex/templates.js +26 -0
- package/dist/exporter/latex/templates.js.map +1 -0
- package/dist/exporter/native/index.d.ts +20 -0
- package/dist/exporter/native/index.d.ts.map +1 -0
- package/dist/exporter/native/index.js +109 -0
- package/dist/exporter/native/index.js.map +1 -0
- package/dist/exporter/odt/index.d.ts +27 -0
- package/dist/exporter/odt/index.d.ts.map +1 -0
- package/dist/exporter/odt/index.js +123 -0
- package/dist/exporter/odt/index.js.map +1 -0
- package/dist/exporter/odt/render.d.ts +15 -0
- package/dist/exporter/odt/render.d.ts.map +1 -0
- package/dist/exporter/odt/render.js +119 -0
- package/dist/exporter/odt/render.js.map +1 -0
- package/dist/exporter/print/index.d.ts +24 -0
- package/dist/exporter/print/index.d.ts.map +1 -0
- package/dist/exporter/print/index.js +60 -0
- package/dist/exporter/print/index.js.map +1 -0
- package/dist/exporter/print/templates.d.ts +2 -0
- package/dist/exporter/print/templates.d.ts.map +1 -0
- package/dist/exporter/print/templates.js +5 -0
- package/dist/exporter/print/templates.js.map +1 -0
- package/dist/exporter/tools.d.ts +29 -0
- package/dist/exporter/tools.d.ts.map +1 -0
- package/dist/exporter/tools.js +151 -0
- package/dist/exporter/tools.js.map +1 -0
- package/dist/i18n.d.ts +7 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +918 -0
- package/dist/i18n.js.map +1 -0
- package/dist/importer/native/index.d.ts +34 -0
- package/dist/importer/native/index.d.ts.map +1 -0
- package/dist/importer/native/index.js +152 -0
- package/dist/importer/native/index.js.map +1 -0
- package/dist/importer/native/reader.d.ts +26 -0
- package/dist/importer/native/reader.d.ts.map +1 -0
- package/dist/importer/native/reader.js +105 -0
- package/dist/importer/native/reader.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/schema/index.d.ts +4 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +4 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/types.d.ts +151 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +101 -0
- package/src/exporter/bits/index.ts +163 -0
- package/src/exporter/bits/templates.ts +107 -0
- package/src/exporter/docx/index.ts +239 -0
- package/src/exporter/docx/render.ts +142 -0
- package/src/exporter/epub/index.ts +426 -0
- package/src/exporter/epub/templates.ts +401 -0
- package/src/exporter/epub/tools.ts +68 -0
- package/src/exporter/html/index.ts +443 -0
- package/src/exporter/html/templates.ts +363 -0
- package/src/exporter/html/tools.ts +26 -0
- package/src/exporter/latex/index.ts +161 -0
- package/src/exporter/latex/templates.ts +35 -0
- package/src/exporter/native/index.ts +187 -0
- package/src/exporter/odt/index.ts +211 -0
- package/src/exporter/odt/render.ts +146 -0
- package/src/exporter/print/index.ts +92 -0
- package/src/exporter/print/templates.ts +8 -0
- package/src/exporter/tools.ts +233 -0
- package/src/global.d.ts +2 -0
- package/src/i18n.ts +936 -0
- package/src/importer/native/index.ts +233 -0
- package/src/importer/native/reader.ts +165 -0
- package/src/index.ts +19 -0
- package/src/modules.d.ts +11 -0
- package/src/schema/index.ts +4 -0
- package/src/types.ts +188 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# @fiduswriter/books-document
|
|
2
|
+
|
|
3
|
+
This package contains the Fidus Writer book-level importers and exporters.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```javascript
|
|
8
|
+
import {FidusBookReader} from "@fiduswriter/books-document/importer/native"
|
|
9
|
+
import {NativeBookExporter} from "@fiduswriter/books-document/exporter/native"
|
|
10
|
+
import {HTMLBookExporter} from "@fiduswriter/books-document/exporter/html"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Development
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install
|
|
17
|
+
npm run build # compile TypeScript to dist/
|
|
18
|
+
npm run typecheck # run tsc --noEmit
|
|
19
|
+
npm test # run the Jest test suite
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## License
|
|
23
|
+
|
|
24
|
+
AGPL-3.0 — see LICENSE.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BITS (Book Interchange Tag Suite) book exporter.
|
|
3
|
+
*/
|
|
4
|
+
import type { Schema } from "prosemirror-model";
|
|
5
|
+
import type { Book, CSL, DocumentListEntry, User } from "../../types.js";
|
|
6
|
+
interface TextFile {
|
|
7
|
+
filename: string;
|
|
8
|
+
contents: string;
|
|
9
|
+
}
|
|
10
|
+
interface HttpFile {
|
|
11
|
+
filename: string;
|
|
12
|
+
url: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class BITSBookExporter {
|
|
16
|
+
schema: Schema;
|
|
17
|
+
csl: CSL;
|
|
18
|
+
book: Book;
|
|
19
|
+
user: User;
|
|
20
|
+
docList: DocumentListEntry[];
|
|
21
|
+
updated: any;
|
|
22
|
+
type: string;
|
|
23
|
+
textFiles: TextFile[];
|
|
24
|
+
httpFiles: HttpFile[];
|
|
25
|
+
zipFileName: string;
|
|
26
|
+
constructor(schema: Schema, csl: CSL, book: Book, user: User, docList: DocumentListEntry[], updated: any);
|
|
27
|
+
init(): Promise<Blob> | false;
|
|
28
|
+
export(): Promise<Blob>;
|
|
29
|
+
createFiles(chapters: Array<{
|
|
30
|
+
front: string;
|
|
31
|
+
body: string;
|
|
32
|
+
back: string;
|
|
33
|
+
}>, imageDict: Record<string, {
|
|
34
|
+
image: string;
|
|
35
|
+
title?: string;
|
|
36
|
+
}>): Promise<Blob>;
|
|
37
|
+
createZip(): Promise<Blob>;
|
|
38
|
+
download(blob: Blob): Blob;
|
|
39
|
+
get defaultFilename(): string;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exporter/bits/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AAQ7C,OAAO,KAAK,EAAC,IAAI,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAC,MAAM,gBAAgB,CAAA;AAItE,UAAU,QAAQ;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED,UAAU,QAAQ;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,gBAAgB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,OAAO,EAAE,GAAG,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;gBAGf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,iBAAiB,EAAE,EAC5B,OAAO,EAAE,GAAG;IAchB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK;IAa7B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BvB,WAAW,CACP,QAAQ,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,EAC5D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,GAC3D,OAAO,CAAC,IAAI,CAAC;IAsChB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI1B,IAAI,eAAe,IAAI,MAAM,CAE5B;CACJ"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BITS (Book Interchange Tag Suite) book exporter.
|
|
3
|
+
*/
|
|
4
|
+
import pretty from "pretty";
|
|
5
|
+
import { JATSExporterConverter } from "@fiduswriter/document/exporter/jats/convert";
|
|
6
|
+
import { darManifest } from "@fiduswriter/document/exporter/jats/templates";
|
|
7
|
+
import { createSlug } from "@fiduswriter/document/exporter/tools/file";
|
|
8
|
+
import { ZipFileCreator } from "@fiduswriter/document/exporter/tools/zip";
|
|
9
|
+
import { addAlert } from "fwtoolkit";
|
|
10
|
+
import { getMissingChapterData } from "../tools.js";
|
|
11
|
+
import { bitsTemplate } from "./templates.js";
|
|
12
|
+
export class BITSBookExporter {
|
|
13
|
+
schema;
|
|
14
|
+
csl;
|
|
15
|
+
book;
|
|
16
|
+
user;
|
|
17
|
+
docList;
|
|
18
|
+
updated;
|
|
19
|
+
type;
|
|
20
|
+
textFiles;
|
|
21
|
+
httpFiles;
|
|
22
|
+
zipFileName;
|
|
23
|
+
constructor(schema, csl, book, user, docList, updated) {
|
|
24
|
+
this.schema = schema;
|
|
25
|
+
this.csl = csl;
|
|
26
|
+
this.book = book;
|
|
27
|
+
this.user = user;
|
|
28
|
+
this.docList = docList;
|
|
29
|
+
this.updated = updated;
|
|
30
|
+
this.type = "book";
|
|
31
|
+
this.textFiles = [];
|
|
32
|
+
this.httpFiles = [];
|
|
33
|
+
this.zipFileName = "";
|
|
34
|
+
}
|
|
35
|
+
init() {
|
|
36
|
+
if (this.book.chapters.length === 0) {
|
|
37
|
+
addAlert("error", gettext("Book cannot be exported due to lack of chapters."));
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return getMissingChapterData(this.book, this.docList, this.schema).then(() => this.export());
|
|
41
|
+
}
|
|
42
|
+
export() {
|
|
43
|
+
this.book.chapters.sort((a, b) => (a.number > b.number ? 1 : -1));
|
|
44
|
+
const imageDict = {};
|
|
45
|
+
return Promise.all(this.book.chapters.map(chapter => {
|
|
46
|
+
const doc = this.docList.find(d => d.id === chapter.text);
|
|
47
|
+
if (!doc) {
|
|
48
|
+
return Promise.resolve({ front: "", body: "", back: "" });
|
|
49
|
+
}
|
|
50
|
+
const converter = new JATSExporterConverter(this.type, doc, this.csl, { db: doc.images || {} }, { db: doc.bibliography || {} });
|
|
51
|
+
return converter.init().then(({ front, body, back, imageIds }) => {
|
|
52
|
+
imageIds.forEach((imageId) => (imageDict[imageId] = doc.images?.[imageId]));
|
|
53
|
+
return { front, body, back };
|
|
54
|
+
});
|
|
55
|
+
})).then(chapters => this.createFiles(chapters, imageDict));
|
|
56
|
+
}
|
|
57
|
+
createFiles(chapters, imageDict) {
|
|
58
|
+
const images = Object.values(imageDict).map(image => ({
|
|
59
|
+
filename: image.image.split("/").pop()?.split("?")[0] || "",
|
|
60
|
+
url: image.image.split("?")[0],
|
|
61
|
+
title: image.title || ""
|
|
62
|
+
}));
|
|
63
|
+
this.zipFileName = `${createSlug(this.book.title)}.bits.zip`;
|
|
64
|
+
this.textFiles = [
|
|
65
|
+
{
|
|
66
|
+
filename: "manuscript.xml",
|
|
67
|
+
contents: pretty(bitsTemplate(this.book, chapters), { ocd: true })
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
filename: "manifest.xml",
|
|
71
|
+
contents: pretty(darManifest({
|
|
72
|
+
title: this.book.title,
|
|
73
|
+
type: this.type,
|
|
74
|
+
images
|
|
75
|
+
}), { ocd: true })
|
|
76
|
+
}
|
|
77
|
+
];
|
|
78
|
+
images.forEach(image => {
|
|
79
|
+
this.httpFiles.push({
|
|
80
|
+
filename: image.filename,
|
|
81
|
+
url: image.url,
|
|
82
|
+
title: image.title
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
return this.createZip();
|
|
86
|
+
}
|
|
87
|
+
createZip() {
|
|
88
|
+
const zipper = new ZipFileCreator(this.textFiles, this.httpFiles, undefined, undefined, this.updated);
|
|
89
|
+
return zipper.init().then(blob => this.download(blob));
|
|
90
|
+
}
|
|
91
|
+
download(blob) {
|
|
92
|
+
return blob;
|
|
93
|
+
}
|
|
94
|
+
get defaultFilename() {
|
|
95
|
+
return this.zipFileName;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exporter/bits/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/exporter/bits/templates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAqB,MAAM,gBAAgB,CAAA;AAK5D,eAAO,MAAM,YAAY,GACrB,MAAM,IAAI,EACV,UAAU,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC,WAiG/D,CAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { escapeText } from "fwtoolkit";
|
|
2
|
+
const bookPartTemplate = ({ front, body, back }) => `<book-part book-part-type="chapter" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ali="http://www.niso.org/schemas/ali/1.0/" xmlns:mml="http://www.w3.org/1998/Math/MathML">${front}${body}${back}</book-part>`;
|
|
3
|
+
export const bitsTemplate = (book, chapters) => {
|
|
4
|
+
const updated = new Date((book.updated || 0) * 1000);
|
|
5
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
6
|
+
<!DOCTYPE book PUBLIC "-//NLM//DTD BITS Book Interchange DTD v2.1 20220202//EN" "https://jats.nlm.nih.gov/extensions/bits/2.1/BITS-book2-1.dtd">
|
|
7
|
+
<book dtd-version="2.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ali="http://www.niso.org/schemas/ali/1.0/">
|
|
8
|
+
<processing-meta tagset-family="bits" table-model="xhtml" math-representation="tex mathml"></processing-meta>
|
|
9
|
+
<book-meta>
|
|
10
|
+
<book-title-group>
|
|
11
|
+
<book-title>${escapeText(book.title)}</book-title>
|
|
12
|
+
${book.metadata.subtitle?.length ? `<subtitle>${escapeText(book.metadata.subtitle)}</subtitle>` : ""}
|
|
13
|
+
</book-title-group>
|
|
14
|
+
${book.metadata.version?.length
|
|
15
|
+
? `<content-version>${escapeText(book.metadata.version)}</content-version>`
|
|
16
|
+
: ""}
|
|
17
|
+
<content-language>${book.settings.language.split("-")[0]}</content-language>
|
|
18
|
+
${book.metadata.description?.length
|
|
19
|
+
? `<abstract>
|
|
20
|
+
<p>${escapeText(book.metadata.description)}</p>
|
|
21
|
+
</abstract>`
|
|
22
|
+
: ""}
|
|
23
|
+
${book.metadata.author?.length
|
|
24
|
+
? `<contrib-group>
|
|
25
|
+
<contrib contrib-type="author">
|
|
26
|
+
<name>
|
|
27
|
+
<surname>${escapeText(book.metadata.author.split(" ").slice(1).join(" "))}</surname>
|
|
28
|
+
<given-names>${escapeText(book.metadata.author.split(" ").pop() || "")}</given-names>
|
|
29
|
+
</name>
|
|
30
|
+
</contrib>
|
|
31
|
+
</contrib-group>`
|
|
32
|
+
: ""}
|
|
33
|
+
<pub-date>
|
|
34
|
+
<year>${updated.getFullYear()}</year>
|
|
35
|
+
<month>${updated.getMonth() + 1}</month>
|
|
36
|
+
<day>${updated.getDate()}</day>
|
|
37
|
+
</pub-date>
|
|
38
|
+
${book.metadata.publication_date?.length
|
|
39
|
+
? `<pub-date date-type="pub" publication-format="electronic">
|
|
40
|
+
<string-date>${escapeText(book.metadata.publication_date)}</string-date>
|
|
41
|
+
</pub-date>`
|
|
42
|
+
: ""}
|
|
43
|
+
${book.metadata.isbn?.length
|
|
44
|
+
? `<isbn>${escapeText(book.metadata.isbn)}</isbn>`
|
|
45
|
+
: ""}
|
|
46
|
+
${book.metadata.publisher?.length
|
|
47
|
+
? `<publisher>
|
|
48
|
+
<publisher-name>${escapeText(book.metadata.publisher)}</publisher-name>
|
|
49
|
+
</publisher>`
|
|
50
|
+
: ""}
|
|
51
|
+
${book.metadata.series_title?.length
|
|
52
|
+
? `<series>
|
|
53
|
+
<series-title>${escapeText(book.metadata.series_title)}</series-title>
|
|
54
|
+
${book.metadata.series_position?.length
|
|
55
|
+
? `<series-text>${escapeText(book.metadata.series_position)}</series-text>`
|
|
56
|
+
: ""}
|
|
57
|
+
</series>`
|
|
58
|
+
: ""}
|
|
59
|
+
${book.metadata.copyright?.length
|
|
60
|
+
? `<permissions>
|
|
61
|
+
<copyright-holder>
|
|
62
|
+
<name>${escapeText(book.metadata.copyright)}</name>
|
|
63
|
+
</copyright-holder>
|
|
64
|
+
</permissions>`
|
|
65
|
+
: ""}
|
|
66
|
+
${book.metadata.keywords?.length
|
|
67
|
+
? `<kwd-group>${book.metadata.keywords
|
|
68
|
+
.split(",")
|
|
69
|
+
.map(keyword => `<kwd>${escapeText(keyword.trim())}</kwd>`)
|
|
70
|
+
.join("")}</kwd-group>`
|
|
71
|
+
: ""}
|
|
72
|
+
</book-meta>
|
|
73
|
+
<book-body>
|
|
74
|
+
${chapters.map(chapter => bookPartTemplate(chapter)).join("\n")}
|
|
75
|
+
</book-body>
|
|
76
|
+
</book>`;
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/exporter/bits/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX book exporter.
|
|
3
|
+
*/
|
|
4
|
+
import type { Schema } from "prosemirror-model";
|
|
5
|
+
import type { CSL, User } from "@fiduswriter/document";
|
|
6
|
+
import type { Book, DocumentListEntry } from "../../types.js";
|
|
7
|
+
import { DOCXBookExporterRender } from "./render.js";
|
|
8
|
+
export declare class DOCXBookExporter {
|
|
9
|
+
schema: Schema;
|
|
10
|
+
csl: CSL;
|
|
11
|
+
book: Book;
|
|
12
|
+
user: User;
|
|
13
|
+
docList: DocumentListEntry[];
|
|
14
|
+
templateUrl: string;
|
|
15
|
+
updated: any;
|
|
16
|
+
textFiles: Array<Record<string, unknown>>;
|
|
17
|
+
httpFiles: Array<Record<string, unknown>>;
|
|
18
|
+
mimeType: string;
|
|
19
|
+
constructor(schema: Schema, csl: CSL, book: Book, user: User, docList: DocumentListEntry[], updated: any);
|
|
20
|
+
init(): Promise<Blob> | false;
|
|
21
|
+
export(): Promise<Blob>;
|
|
22
|
+
exportChapters(xml: any, render: DOCXBookExporterRender, rels: any, math: any, tables: any): Promise<void>;
|
|
23
|
+
getBaseMetadata(): Record<string, unknown>;
|
|
24
|
+
download(blob: Blob): Blob;
|
|
25
|
+
get defaultFilename(): string;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exporter/docx/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,uBAAuB,CAAA;AAqBpD,OAAO,KAAK,EAAC,IAAI,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAA;AAE3D,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAA;AAElD,qBAAa,gBAAgB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,GAAG,CAAA;IACZ,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACzC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACzC,QAAQ,EAAE,MAAM,CAAA;gBAGZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,iBAAiB,EAAE,EAC5B,OAAO,EAAE,GAAG;IAgBhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK;IAgB7B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBvB,cAAc,CACV,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,sBAAsB,EAC9B,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,GAAG,GACZ,OAAO,CAAC,IAAI,CAAC;IAuGhB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAiB1C,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI1B,IAAI,eAAe,IAAI,MAAM,CAE5B;CACJ"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOCX book exporter.
|
|
3
|
+
*/
|
|
4
|
+
import { fixTables, removeHidden } from "@fiduswriter/document/exporter/tools/doc_content";
|
|
5
|
+
import { createSlug } from "@fiduswriter/document/exporter/tools/file";
|
|
6
|
+
import { XmlZip } from "@fiduswriter/document/exporter/tools/xml_zip";
|
|
7
|
+
import { addAlert } from "fwtoolkit";
|
|
8
|
+
import { DOCXExporterCitations } from "@fiduswriter/document/exporter/docx/citations";
|
|
9
|
+
import { DOCXExporterComments } from "@fiduswriter/document/exporter/docx/comments";
|
|
10
|
+
import { DOCXExporterFootnotes } from "@fiduswriter/document/exporter/docx/footnotes";
|
|
11
|
+
import { DOCXExporterImages } from "@fiduswriter/document/exporter/docx/images";
|
|
12
|
+
import { DOCXExporterLists } from "@fiduswriter/document/exporter/docx/lists";
|
|
13
|
+
import { DOCXExporterMath } from "@fiduswriter/document/exporter/docx/math";
|
|
14
|
+
import { DOCXExporterMetadata } from "@fiduswriter/document/exporter/docx/metadata";
|
|
15
|
+
import { DOCXExporterRels } from "@fiduswriter/document/exporter/docx/rels";
|
|
16
|
+
import { DOCXExporterRichtext } from "@fiduswriter/document/exporter/docx/richtext";
|
|
17
|
+
import { DOCXExporterTables } from "@fiduswriter/document/exporter/docx/tables";
|
|
18
|
+
import { moveFootnoteComments } from "@fiduswriter/document/exporter/docx/tools";
|
|
19
|
+
import { getMissingChapterData } from "../tools.js";
|
|
20
|
+
import { DOCXBookExporterRender } from "./render.js";
|
|
21
|
+
export class DOCXBookExporter {
|
|
22
|
+
schema;
|
|
23
|
+
csl;
|
|
24
|
+
book;
|
|
25
|
+
user;
|
|
26
|
+
docList;
|
|
27
|
+
templateUrl;
|
|
28
|
+
updated;
|
|
29
|
+
textFiles;
|
|
30
|
+
httpFiles;
|
|
31
|
+
mimeType;
|
|
32
|
+
constructor(schema, csl, book, user, docList, updated) {
|
|
33
|
+
this.schema = schema;
|
|
34
|
+
this.csl = csl;
|
|
35
|
+
this.book = book;
|
|
36
|
+
this.user = user;
|
|
37
|
+
this.docList = docList;
|
|
38
|
+
this.templateUrl = book.docx_template || "";
|
|
39
|
+
this.updated = updated;
|
|
40
|
+
this.textFiles = [];
|
|
41
|
+
this.httpFiles = [];
|
|
42
|
+
this.mimeType =
|
|
43
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document";
|
|
44
|
+
}
|
|
45
|
+
init() {
|
|
46
|
+
if (this.book.chapters.length === 0) {
|
|
47
|
+
addAlert("error", gettext("Book cannot be exported due to lack of chapters."));
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return getMissingChapterData(this.book, this.docList, this.schema, { rawContent: true }).then(() => this.export());
|
|
51
|
+
}
|
|
52
|
+
export() {
|
|
53
|
+
this.book.chapters.sort((a, b) => (a.number > b.number ? 1 : -1));
|
|
54
|
+
const xml = new XmlZip(this.templateUrl, this.mimeType);
|
|
55
|
+
const tables = new DOCXExporterTables(xml);
|
|
56
|
+
const math = new DOCXExporterMath(xml);
|
|
57
|
+
const render = new DOCXBookExporterRender(xml);
|
|
58
|
+
const rels = new DOCXExporterRels(xml, "document");
|
|
59
|
+
const metadata = new DOCXExporterMetadata(xml, this.getBaseMetadata());
|
|
60
|
+
return xml
|
|
61
|
+
.init()
|
|
62
|
+
.then(() => metadata.init())
|
|
63
|
+
.then(() => tables.init())
|
|
64
|
+
.then(() => math.init())
|
|
65
|
+
.then(() => render.init())
|
|
66
|
+
.then(() => rels.init())
|
|
67
|
+
.then(() => this.exportChapters(xml, render, rels, math, tables))
|
|
68
|
+
.then(() => xml.prepareBlob())
|
|
69
|
+
.then(blob => this.download(blob));
|
|
70
|
+
}
|
|
71
|
+
exportChapters(xml, render, rels, math, tables) {
|
|
72
|
+
return this.book.chapters
|
|
73
|
+
.map((chapter, chapterIndex) => {
|
|
74
|
+
return () => {
|
|
75
|
+
const doc = this.docList.find(d => d.id === chapter.text);
|
|
76
|
+
if (!doc) {
|
|
77
|
+
return Promise.resolve();
|
|
78
|
+
}
|
|
79
|
+
const docContent = moveFootnoteComments(fixTables(removeHidden(doc.rawContent)));
|
|
80
|
+
const images = new DOCXExporterImages(docContent, { db: doc.images || {} }, xml, rels);
|
|
81
|
+
const lists = new DOCXExporterLists(docContent, xml, rels);
|
|
82
|
+
const citations = new DOCXExporterCitations(docContent, doc.settings, { db: doc.bibliography || {} }, this.csl, xml);
|
|
83
|
+
const footnotes = new DOCXExporterFootnotes(doc, docContent, doc.settings, { db: doc.images || {} }, { db: doc.bibliography || {} }, xml, citations, this.csl, lists, math, tables, rels);
|
|
84
|
+
const richtext = new DOCXExporterRichtext(doc, doc.settings, lists, footnotes, math, tables, rels, citations, images);
|
|
85
|
+
const comments = new DOCXExporterComments(docContent, doc.comments || {}, xml, rels, richtext);
|
|
86
|
+
return citations
|
|
87
|
+
.init()
|
|
88
|
+
.then(() => images.init())
|
|
89
|
+
.then(() => comments.init())
|
|
90
|
+
.then(() => lists.init())
|
|
91
|
+
.then(() => footnotes.init())
|
|
92
|
+
.then(() => {
|
|
93
|
+
const pmBib = footnotes.pmBib || citations.pmBib;
|
|
94
|
+
render.render(docContent, pmBib, doc.settings, richtext, citations, chapterIndex);
|
|
95
|
+
return Promise.resolve();
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
})
|
|
99
|
+
.reduce((promiseChain, currentChapter) => promiseChain.then(() => currentChapter()), Promise.resolve())
|
|
100
|
+
.then(() => render.renderAmbles(Object.assign({
|
|
101
|
+
title: this.book.title,
|
|
102
|
+
language: this.book.settings.language
|
|
103
|
+
}, this.book.metadata)))
|
|
104
|
+
.then(() => render.assemble());
|
|
105
|
+
}
|
|
106
|
+
getBaseMetadata() {
|
|
107
|
+
const authors = this.book.metadata.author?.length
|
|
108
|
+
? [{ institution: this.book.metadata.author }]
|
|
109
|
+
: [];
|
|
110
|
+
const keywords = this.book.metadata.keywords?.length
|
|
111
|
+
? this.book.metadata.keywords
|
|
112
|
+
.split(",")
|
|
113
|
+
.map(keyword => keyword.trim())
|
|
114
|
+
: [];
|
|
115
|
+
return {
|
|
116
|
+
authors,
|
|
117
|
+
keywords,
|
|
118
|
+
title: this.book.title,
|
|
119
|
+
language: this.book.settings.language
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
download(blob) {
|
|
123
|
+
return blob;
|
|
124
|
+
}
|
|
125
|
+
get defaultFilename() {
|
|
126
|
+
return `${createSlug(this.book.title)}.docx`;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exporter/docx/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DOCXExporterRender } from "@fiduswriter/document/exporter/docx/render";
|
|
2
|
+
export declare class DOCXBookExporterRender extends DOCXExporterRender {
|
|
3
|
+
preamble: any;
|
|
4
|
+
bodyTemplate: any;
|
|
5
|
+
postamble: any;
|
|
6
|
+
fileXML: any;
|
|
7
|
+
bodyParts: any[];
|
|
8
|
+
constructor(xml: any);
|
|
9
|
+
init(): Promise<void>;
|
|
10
|
+
render(...args: any[]): void;
|
|
11
|
+
renderAmbles({ title, subtitle, version, publisher, copyright, author, keywords, language, description, isbn, publication_date, series_title, series_position }: Record<string, unknown>): void;
|
|
12
|
+
assemble(): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/exporter/docx/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,4CAA4C,CAAA;AAE7E,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC1D,QAAQ,EAAE,GAAG,CAAA;IACb,YAAY,EAAE,GAAG,CAAA;IACjB,SAAS,EAAE,GAAG,CAAA;IACd,OAAO,EAAE,GAAG,CAAA;IACZ,SAAS,EAAE,GAAG,EAAE,CAAA;gBAEJ,GAAG,EAAE,GAAG;IAUpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BrB,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAa5B,YAAY,CAAC,EACT,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,gBAAgB,EAChB,YAAY,EACZ,eAAe,EAClB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiCjC,QAAQ,IAAI,IAAI;CAiCnB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { DOCXExporterRender } from "@fiduswriter/document/exporter/docx/render";
|
|
2
|
+
export class DOCXBookExporterRender extends DOCXExporterRender {
|
|
3
|
+
preamble;
|
|
4
|
+
bodyTemplate;
|
|
5
|
+
postamble;
|
|
6
|
+
fileXML;
|
|
7
|
+
bodyParts;
|
|
8
|
+
constructor(xml) {
|
|
9
|
+
super(xml);
|
|
10
|
+
this.preamble = null;
|
|
11
|
+
this.bodyTemplate = null;
|
|
12
|
+
this.postamble = null;
|
|
13
|
+
this.fileXML = null;
|
|
14
|
+
this.bodyParts = [];
|
|
15
|
+
}
|
|
16
|
+
init() {
|
|
17
|
+
return super.init().then(() => {
|
|
18
|
+
this.fileXML = this.text;
|
|
19
|
+
const text = this.fileXML.query("w:body");
|
|
20
|
+
this.preamble = text.cloneNode(false);
|
|
21
|
+
this.bodyTemplate = text.cloneNode(false);
|
|
22
|
+
this.postamble = text.cloneNode(false);
|
|
23
|
+
let currentSection = this.bodyTemplate;
|
|
24
|
+
const textChildren = Array.from(text.children);
|
|
25
|
+
textChildren.forEach((node) => {
|
|
26
|
+
const bookmarkStart = node.query("w:bookmarkStart");
|
|
27
|
+
if (bookmarkStart) {
|
|
28
|
+
const bookmarkName = String(bookmarkStart.getAttribute("w:name")).toLowerCase();
|
|
29
|
+
if (bookmarkName === "preamble") {
|
|
30
|
+
currentSection = this.preamble;
|
|
31
|
+
}
|
|
32
|
+
else if (bookmarkName === "body") {
|
|
33
|
+
currentSection = this.bodyTemplate;
|
|
34
|
+
}
|
|
35
|
+
else if (bookmarkName === "postamble") {
|
|
36
|
+
currentSection = this.postamble;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
currentSection.appendChild(node);
|
|
40
|
+
});
|
|
41
|
+
return Promise.resolve();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
render(...args) {
|
|
45
|
+
const [docContent, pmBib, settings, richtext, citations, chapterIndex] = args;
|
|
46
|
+
this.text = this.bodyTemplate.cloneNode(true);
|
|
47
|
+
const bodyBookmark = this.text.query("w:bookmarkStart", {
|
|
48
|
+
"w:name": "body"
|
|
49
|
+
});
|
|
50
|
+
if (bodyBookmark) {
|
|
51
|
+
bodyBookmark.setAttribute("w:name", `chapter ${chapterIndex + 1}`);
|
|
52
|
+
}
|
|
53
|
+
super.render(docContent, pmBib, settings, richtext, citations);
|
|
54
|
+
this.bodyParts.push(this.text);
|
|
55
|
+
}
|
|
56
|
+
renderAmbles({ title, subtitle, version, publisher, copyright, author, keywords, language, description, isbn, publication_date, series_title, series_position }) {
|
|
57
|
+
const tags = [
|
|
58
|
+
{ title: "book.title", content: title },
|
|
59
|
+
{ title: "book.subtitle", content: subtitle },
|
|
60
|
+
{ title: "book.version", content: version },
|
|
61
|
+
{ title: "book.publisher", content: publisher },
|
|
62
|
+
{ title: "book.copyright", content: copyright },
|
|
63
|
+
{ title: "book.author", content: author },
|
|
64
|
+
{ title: "book.keywords", content: keywords },
|
|
65
|
+
{ title: "book.language", content: language },
|
|
66
|
+
{ title: "book.description", content: description },
|
|
67
|
+
{ title: "book.isbn", content: isbn },
|
|
68
|
+
{ title: "book.publication_date", content: publication_date },
|
|
69
|
+
{ title: "book.series_title", content: series_title },
|
|
70
|
+
{ title: "book.series_position", content: series_position }
|
|
71
|
+
];
|
|
72
|
+
const usedTags = [];
|
|
73
|
+
const ambles = [this.preamble, this.postamble];
|
|
74
|
+
ambles.forEach(amble => {
|
|
75
|
+
const blocks = amble.queryAll(["w:p", "w:sectPr"]);
|
|
76
|
+
blocks.forEach((block) => {
|
|
77
|
+
const text = block.textContent;
|
|
78
|
+
tags.forEach(tag => {
|
|
79
|
+
const tagString = tag.title;
|
|
80
|
+
if (text.includes(`{${tagString}}`)) {
|
|
81
|
+
usedTags.push(Object.assign({ block }, tag));
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
usedTags.forEach(tag => this.inlineRender(tag));
|
|
87
|
+
}
|
|
88
|
+
assemble() {
|
|
89
|
+
const text = this.fileXML.query("w:body");
|
|
90
|
+
Array.from(this.preamble.children).forEach((node) => text.appendChild(node));
|
|
91
|
+
this.bodyParts.forEach((bodyPart, index) => {
|
|
92
|
+
const children = bodyPart.children.slice();
|
|
93
|
+
children.forEach((node) => {
|
|
94
|
+
text.appendChild(node);
|
|
95
|
+
});
|
|
96
|
+
if (index < this.bodyParts.length - 1) {
|
|
97
|
+
text.appendXML(`<w:p>
|
|
98
|
+
<w:pPr>
|
|
99
|
+
<w:pStyle w:val="Normal"/>
|
|
100
|
+
<w:bidi w:val="0"/>
|
|
101
|
+
<w:jc w:val="start"/>
|
|
102
|
+
<w:rPr/>
|
|
103
|
+
</w:pPr>
|
|
104
|
+
<w:r>
|
|
105
|
+
<w:rPr/>
|
|
106
|
+
</w:r>
|
|
107
|
+
<w:r>
|
|
108
|
+
<w:br w:type="page"/>
|
|
109
|
+
</w:r>
|
|
110
|
+
</w:p>`);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
Array.from(this.postamble.children).forEach((node) => text.appendChild(node));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/exporter/docx/render.ts"],"names":[],"mappings":"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"}
|