Merge pull request #697 from devoidfury/master
Add defaultStyles option to overwrite the core default styles
This commit is contained in:
@ -18,13 +18,8 @@ import {
|
|||||||
|
|
||||||
const doc = new Document({
|
const doc = new Document({
|
||||||
styles: {
|
styles: {
|
||||||
paragraphStyles: [
|
default: {
|
||||||
{
|
heading1: {
|
||||||
id: "Heading1",
|
|
||||||
name: "Heading 1",
|
|
||||||
basedOn: "Normal",
|
|
||||||
next: "Normal",
|
|
||||||
quickFormat: true,
|
|
||||||
run: {
|
run: {
|
||||||
font: "Calibri",
|
font: "Calibri",
|
||||||
size: 52,
|
size: 52,
|
||||||
@ -40,12 +35,7 @@ const doc = new Document({
|
|||||||
spacing: { line: 340 },
|
spacing: { line: 340 },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
heading2: {
|
||||||
id: "Heading2",
|
|
||||||
name: "Heading 2",
|
|
||||||
basedOn: "Normal",
|
|
||||||
next: "Normal",
|
|
||||||
quickFormat: true,
|
|
||||||
run: {
|
run: {
|
||||||
font: "Calibri",
|
font: "Calibri",
|
||||||
size: 26,
|
size: 26,
|
||||||
@ -55,12 +45,7 @@ const doc = new Document({
|
|||||||
spacing: { line: 340 },
|
spacing: { line: 340 },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
heading3: {
|
||||||
id: "Heading3",
|
|
||||||
name: "Heading 3",
|
|
||||||
basedOn: "Normal",
|
|
||||||
next: "Normal",
|
|
||||||
quickFormat: true,
|
|
||||||
run: {
|
run: {
|
||||||
font: "Calibri",
|
font: "Calibri",
|
||||||
size: 26,
|
size: 26,
|
||||||
@ -70,12 +55,7 @@ const doc = new Document({
|
|||||||
spacing: { line: 276 },
|
spacing: { line: 276 },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
heading4: {
|
||||||
id: "Heading4",
|
|
||||||
name: "Heading 4",
|
|
||||||
basedOn: "Normal",
|
|
||||||
next: "Normal",
|
|
||||||
quickFormat: true,
|
|
||||||
run: {
|
run: {
|
||||||
font: "Calibri",
|
font: "Calibri",
|
||||||
size: 26,
|
size: 26,
|
||||||
@ -85,6 +65,8 @@ const doc = new Document({
|
|||||||
alignment: AlignmentType.JUSTIFIED,
|
alignment: AlignmentType.JUSTIFIED,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
|
paragraphStyles: [
|
||||||
{
|
{
|
||||||
id: "normalPara",
|
id: "normalPara",
|
||||||
name: "Normal Para",
|
name: "Normal Para",
|
||||||
@ -139,12 +121,6 @@ const doc = new Document({
|
|||||||
spacing: { line: 276, before: 20 * 72 * 0.1, after: 20 * 72 * 0.05 },
|
spacing: { line: 276, before: 20 * 72 * 0.1, after: 20 * 72 * 0.05 },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: "ListParagraph",
|
|
||||||
name: "List Paragraph",
|
|
||||||
basedOn: "Normal",
|
|
||||||
quickFormat: true,
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -8,13 +8,8 @@ const doc = new Document({
|
|||||||
title: "Sample Document",
|
title: "Sample Document",
|
||||||
description: "A brief example of using docx",
|
description: "A brief example of using docx",
|
||||||
styles: {
|
styles: {
|
||||||
paragraphStyles: [
|
default: {
|
||||||
{
|
heading1: {
|
||||||
id: "Heading1",
|
|
||||||
name: "Heading 1",
|
|
||||||
basedOn: "Normal",
|
|
||||||
next: "Normal",
|
|
||||||
quickFormat: true,
|
|
||||||
run: {
|
run: {
|
||||||
size: 28,
|
size: 28,
|
||||||
bold: true,
|
bold: true,
|
||||||
@ -27,12 +22,7 @@ const doc = new Document({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
heading2: {
|
||||||
id: "Heading2",
|
|
||||||
name: "Heading 2",
|
|
||||||
basedOn: "Normal",
|
|
||||||
next: "Normal",
|
|
||||||
quickFormat: true,
|
|
||||||
run: {
|
run: {
|
||||||
size: 26,
|
size: 26,
|
||||||
bold: true,
|
bold: true,
|
||||||
@ -48,6 +38,13 @@ const doc = new Document({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
listParagraph: {
|
||||||
|
run: {
|
||||||
|
color: '#FF0000'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
paragraphStyles: [
|
||||||
{
|
{
|
||||||
id: "aside",
|
id: "aside",
|
||||||
name: "Aside",
|
name: "Aside",
|
||||||
@ -75,12 +72,6 @@ const doc = new Document({
|
|||||||
spacing: { line: 276, before: 20 * 72 * 0.1, after: 20 * 72 * 0.05 },
|
spacing: { line: 276, before: 20 * 72 * 0.1, after: 20 * 72 * 0.05 },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: "ListParagraph",
|
|
||||||
name: "List Paragraph",
|
|
||||||
basedOn: "Normal",
|
|
||||||
quickFormat: true,
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
numbering: {
|
numbering: {
|
||||||
|
@ -106,7 +106,7 @@ export class File {
|
|||||||
this.styles = stylesFactory.newInstance(options.externalStyles);
|
this.styles = stylesFactory.newInstance(options.externalStyles);
|
||||||
} else if (options.styles) {
|
} else if (options.styles) {
|
||||||
const stylesFactory = new DefaultStylesFactory();
|
const stylesFactory = new DefaultStylesFactory();
|
||||||
const defaultStyles = stylesFactory.newInstance();
|
const defaultStyles = stylesFactory.newInstance(options.styles.default);
|
||||||
this.styles = new Styles({
|
this.styles = new Styles({
|
||||||
...defaultStyles,
|
...defaultStyles,
|
||||||
...options.styles,
|
...options.styles,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { DocumentAttributes } from "../document/document-attributes";
|
import { DocumentAttributes } from "../document/document-attributes";
|
||||||
import { IStylesOptions } from "./styles";
|
import { IStylesOptions } from "./styles";
|
||||||
|
|
||||||
import { DocumentDefaults } from "./defaults";
|
import { DocumentDefaults, IDocumentDefaultsOptions } from "./defaults";
|
||||||
import {
|
import {
|
||||||
FootnoteReferenceStyle,
|
FootnoteReferenceStyle,
|
||||||
FootnoteText,
|
FootnoteText,
|
||||||
@ -13,12 +13,30 @@ import {
|
|||||||
Heading5Style,
|
Heading5Style,
|
||||||
Heading6Style,
|
Heading6Style,
|
||||||
HyperlinkStyle,
|
HyperlinkStyle,
|
||||||
|
IBaseCharacterStyleOptions,
|
||||||
|
IBaseParagraphStyleOptions,
|
||||||
ListParagraph,
|
ListParagraph,
|
||||||
TitleStyle,
|
TitleStyle,
|
||||||
} from "./style";
|
} from "./style";
|
||||||
|
|
||||||
|
export interface IDefaultStylesOptions {
|
||||||
|
readonly document?: IDocumentDefaultsOptions;
|
||||||
|
readonly title?: IBaseParagraphStyleOptions;
|
||||||
|
readonly heading1?: IBaseParagraphStyleOptions;
|
||||||
|
readonly heading2?: IBaseParagraphStyleOptions;
|
||||||
|
readonly heading3?: IBaseParagraphStyleOptions;
|
||||||
|
readonly heading4?: IBaseParagraphStyleOptions;
|
||||||
|
readonly heading5?: IBaseParagraphStyleOptions;
|
||||||
|
readonly heading6?: IBaseParagraphStyleOptions;
|
||||||
|
readonly listParagraph?: IBaseParagraphStyleOptions;
|
||||||
|
readonly hyperlink?: IBaseCharacterStyleOptions;
|
||||||
|
readonly footnoteReference?: IBaseCharacterStyleOptions;
|
||||||
|
readonly footnoteText?: IBaseParagraphStyleOptions;
|
||||||
|
readonly footnoteTextChar?: IBaseCharacterStyleOptions;
|
||||||
|
}
|
||||||
|
|
||||||
export class DefaultStylesFactory {
|
export class DefaultStylesFactory {
|
||||||
public newInstance(): IStylesOptions {
|
public newInstance(options: IDefaultStylesOptions = {}): IStylesOptions {
|
||||||
const documentAttributes = new DocumentAttributes({
|
const documentAttributes = new DocumentAttributes({
|
||||||
mc: "http://schemas.openxmlformats.org/markup-compatibility/2006",
|
mc: "http://schemas.openxmlformats.org/markup-compatibility/2006",
|
||||||
r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
|
||||||
@ -30,51 +48,58 @@ export class DefaultStylesFactory {
|
|||||||
return {
|
return {
|
||||||
initialStyles: documentAttributes,
|
initialStyles: documentAttributes,
|
||||||
importedStyles: [
|
importedStyles: [
|
||||||
new DocumentDefaults(),
|
new DocumentDefaults(options.document),
|
||||||
new TitleStyle({
|
new TitleStyle({
|
||||||
run: {
|
run: {
|
||||||
size: 56,
|
size: 56,
|
||||||
},
|
},
|
||||||
|
...options.title,
|
||||||
}),
|
}),
|
||||||
new Heading1Style({
|
new Heading1Style({
|
||||||
run: {
|
run: {
|
||||||
color: "2E74B5",
|
color: "2E74B5",
|
||||||
size: 32,
|
size: 32,
|
||||||
},
|
},
|
||||||
|
...options.heading1,
|
||||||
}),
|
}),
|
||||||
new Heading2Style({
|
new Heading2Style({
|
||||||
run: {
|
run: {
|
||||||
color: "2E74B5",
|
color: "2E74B5",
|
||||||
size: 26,
|
size: 26,
|
||||||
},
|
},
|
||||||
|
...options.heading2,
|
||||||
}),
|
}),
|
||||||
new Heading3Style({
|
new Heading3Style({
|
||||||
run: {
|
run: {
|
||||||
color: "1F4D78",
|
color: "1F4D78",
|
||||||
size: 24,
|
size: 24,
|
||||||
},
|
},
|
||||||
|
...options.heading3,
|
||||||
}),
|
}),
|
||||||
new Heading4Style({
|
new Heading4Style({
|
||||||
run: {
|
run: {
|
||||||
color: "2E74B5",
|
color: "2E74B5",
|
||||||
italics: true,
|
italics: true,
|
||||||
},
|
},
|
||||||
|
...options.heading4,
|
||||||
}),
|
}),
|
||||||
new Heading5Style({
|
new Heading5Style({
|
||||||
run: {
|
run: {
|
||||||
color: "2E74B5",
|
color: "2E74B5",
|
||||||
},
|
},
|
||||||
|
...options.heading5,
|
||||||
}),
|
}),
|
||||||
new Heading6Style({
|
new Heading6Style({
|
||||||
run: {
|
run: {
|
||||||
color: "1F4D78",
|
color: "1F4D78",
|
||||||
},
|
},
|
||||||
|
...options.heading6,
|
||||||
}),
|
}),
|
||||||
new ListParagraph({}),
|
new ListParagraph(options.listParagraph || {}),
|
||||||
new HyperlinkStyle({}),
|
new HyperlinkStyle(options.hyperlink || {}),
|
||||||
new FootnoteReferenceStyle({}),
|
new FootnoteReferenceStyle(options.footnoteReference || {}),
|
||||||
new FootnoteText({}),
|
new FootnoteText(options.footnoteText || {}),
|
||||||
new FootnoteTextChar({}),
|
new FootnoteTextChar(options.footnoteTextChar || {}),
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
|
import { IDefaultStylesOptions } from "file/styles/factory";
|
||||||
import { BaseXmlComponent, ImportedXmlComponent, XmlComponent } from "file/xml-components";
|
import { BaseXmlComponent, ImportedXmlComponent, XmlComponent } from "file/xml-components";
|
||||||
|
|
||||||
import { StyleForCharacter, StyleForParagraph } from "./style";
|
import { StyleForCharacter, StyleForParagraph } from "./style";
|
||||||
import { ICharacterStyleOptions } from "./style/character-style";
|
import { ICharacterStyleOptions } from "./style/character-style";
|
||||||
import { IParagraphStyleOptions } from "./style/paragraph-style";
|
import { IParagraphStyleOptions } from "./style/paragraph-style";
|
||||||
export * from "./border";
|
export * from "./border";
|
||||||
|
|
||||||
export interface IStylesOptions {
|
export interface IStylesOptions {
|
||||||
|
readonly default?: IDefaultStylesOptions;
|
||||||
readonly initialStyles?: BaseXmlComponent;
|
readonly initialStyles?: BaseXmlComponent;
|
||||||
readonly paragraphStyles?: IParagraphStyleOptions[];
|
readonly paragraphStyles?: IParagraphStyleOptions[];
|
||||||
readonly characterStyles?: ICharacterStyleOptions[];
|
readonly characterStyles?: ICharacterStyleOptions[];
|
||||||
|
Reference in New Issue
Block a user