Added in the ability to create borders for paragraphs
This commit is contained in:
@ -135,7 +135,7 @@ class DocumentCreator {
|
|||||||
|
|
||||||
for (const education of educations) {
|
for (const education of educations) {
|
||||||
document.addParagraph(
|
document.addParagraph(
|
||||||
this.createInstitutionHeader(education.schoolName, `${education.startDate.year} - ${education.endDate.year}`),
|
this.createInstitutionHeader(education.schoolName, `${education.startDate.year} - ${education.endDate.year}`)
|
||||||
);
|
);
|
||||||
document.addParagraph(this.createRoleText(`${education.fieldOfStudy} - ${education.degree}`));
|
document.addParagraph(this.createRoleText(`${education.fieldOfStudy} - ${education.degree}`));
|
||||||
|
|
||||||
@ -151,8 +151,8 @@ class DocumentCreator {
|
|||||||
document.addParagraph(
|
document.addParagraph(
|
||||||
this.createInstitutionHeader(
|
this.createInstitutionHeader(
|
||||||
position.company.name,
|
position.company.name,
|
||||||
this.createPositionDateText(position.startDate, position.endDate, position.isCurrent),
|
this.createPositionDateText(position.startDate, position.endDate, position.isCurrent)
|
||||||
),
|
)
|
||||||
);
|
);
|
||||||
document.addParagraph(this.createRoleText(position.title));
|
document.addParagraph(this.createRoleText(position.title));
|
||||||
|
|
||||||
@ -182,14 +182,14 @@ class DocumentCreator {
|
|||||||
|
|
||||||
document.addParagraph(
|
document.addParagraph(
|
||||||
new docx.Paragraph(
|
new docx.Paragraph(
|
||||||
"Dr. Dean Mohamedally Director of Postgraduate Studies Department of Computer Science, University College London Malet Place, Bloomsbury, London WC1E d.mohamedally@ucl.ac.uk",
|
"Dr. Dean Mohamedally Director of Postgraduate Studies Department of Computer Science, University College London Malet Place, Bloomsbury, London WC1E d.mohamedally@ucl.ac.uk"
|
||||||
),
|
)
|
||||||
);
|
);
|
||||||
document.addParagraph(new docx.Paragraph("More references upon request"));
|
document.addParagraph(new docx.Paragraph("More references upon request"));
|
||||||
document.addParagraph(
|
document.addParagraph(
|
||||||
new docx.Paragraph(
|
new docx.Paragraph(
|
||||||
"This CV was generated in real-time based on my Linked-In profile from my personal website www.dolan.bio.",
|
"This CV was generated in real-time based on my Linked-In profile from my personal website www.dolan.bio."
|
||||||
).center(),
|
).center()
|
||||||
);
|
);
|
||||||
return document;
|
return document;
|
||||||
}
|
}
|
||||||
|
23
demo/demo26.js
Normal file
23
demo/demo26.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Creates two paragraphs, one with a border and one without
|
||||||
|
*/
|
||||||
|
|
||||||
|
const docx = require("../build");
|
||||||
|
|
||||||
|
let doc = new docx.Document();
|
||||||
|
|
||||||
|
let paragraph = new docx.Paragraph("No border!");
|
||||||
|
|
||||||
|
doc.addParagraph(paragraph);
|
||||||
|
|
||||||
|
let borderParagraph = new docx.Paragraph("I have a border on all but one side!");
|
||||||
|
console.log(borderParagraph.Borders);
|
||||||
|
borderParagraph.Borders.addTopBorder();
|
||||||
|
borderParagraph.Borders.addBottomBorder();
|
||||||
|
borderParagraph.Borders.addLeftBorder();
|
||||||
|
console.log(borderParagraph.Borders);
|
||||||
|
|
||||||
|
doc.addParagraph(borderParagraph);
|
||||||
|
|
||||||
|
let exporter = new docx.LocalPacker(doc);
|
||||||
|
exporter.packPdf('My Document');
|
@ -1,23 +1,61 @@
|
|||||||
// http://officeopenxml.com/WPborders.php
|
// http://officeopenxml.com/WPborders.php
|
||||||
import { Attributes, XmlComponent } from "file/xml-components";
|
import { Attributes, XmlComponent } from "file/xml-components";
|
||||||
|
|
||||||
class Border extends XmlComponent {
|
class BorderProperty extends XmlComponent {
|
||||||
|
public setProperties(space: string, value: string, size: string): XmlComponent {
|
||||||
|
const attrs = new Attributes({
|
||||||
|
space: space,
|
||||||
|
val: value,
|
||||||
|
sz: size
|
||||||
|
});
|
||||||
|
this.root.push(attrs);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Border extends XmlComponent {
|
||||||
constructor() {
|
constructor() {
|
||||||
super("w:bottom");
|
super("w:pBdr");
|
||||||
this.root.push(
|
}
|
||||||
new Attributes({
|
|
||||||
color: "auto",
|
public addTopBorder(space: string = "1", value: string = "single", size: string = "6"): XmlComponent {
|
||||||
space: "1",
|
const top = new BorderProperty("w:top");
|
||||||
val: "single",
|
top.setProperties(space, value, size);
|
||||||
sz: "6",
|
this.root.push(top);
|
||||||
}),
|
|
||||||
);
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public addBottomBorder(space: string = "1", value: string = "single", size: string = "6"): XmlComponent {
|
||||||
|
const bottom = new BorderProperty("w:bottom");
|
||||||
|
bottom.setProperties(space, value, size);
|
||||||
|
this.root.push(bottom);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public addLeftBorder(space: string = "1", value: string = "single", size: string = "6"): XmlComponent {
|
||||||
|
const left = new BorderProperty("w:left");
|
||||||
|
left.setProperties(space, value, size);
|
||||||
|
this.root.push(left);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public addRightBorder(space: string = "1", value: string = "single", size: string = "6"): XmlComponent {
|
||||||
|
const right = new BorderProperty("w:right");
|
||||||
|
right.setProperties(space, value, size);
|
||||||
|
this.root.push(right);
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ThematicBreak extends XmlComponent {
|
export class ThematicBreak extends XmlComponent {
|
||||||
constructor() {
|
constructor() {
|
||||||
super("w:pBdr");
|
super("w:pBdr");
|
||||||
this.root.push(new Border());
|
const bottom = new BorderProperty("w:bottom");
|
||||||
|
this.root.push(bottom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import { XmlComponent } from "file/xml-components";
|
|||||||
|
|
||||||
import { Alignment } from "./formatting/alignment";
|
import { Alignment } from "./formatting/alignment";
|
||||||
import { Bidirectional } from "./formatting/bidirectional";
|
import { Bidirectional } from "./formatting/bidirectional";
|
||||||
import { ThematicBreak } from "./formatting/border";
|
import { ThematicBreak, Border } from "./formatting/border";
|
||||||
import { Indent } from "./formatting/indent";
|
import { Indent } from "./formatting/indent";
|
||||||
import { KeepLines, KeepNext } from "./formatting/keep";
|
import { KeepLines, KeepNext } from "./formatting/keep";
|
||||||
import { PageBreak, PageBreakBefore } from "./formatting/page-break";
|
import { PageBreak, PageBreakBefore } from "./formatting/page-break";
|
||||||
@ -30,6 +30,10 @@ export class Paragraph extends XmlComponent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public get Borders(): Border {
|
||||||
|
return this.properties.paragraphBorder;
|
||||||
|
}
|
||||||
|
|
||||||
public addRun(run: Run): Paragraph {
|
public addRun(run: Run): Paragraph {
|
||||||
this.root.push(run);
|
this.root.push(run);
|
||||||
return this;
|
return this;
|
||||||
|
@ -1,9 +1,14 @@
|
|||||||
// http://officeopenxml.com/WPparagraphProperties.php
|
// http://officeopenxml.com/WPparagraphProperties.php
|
||||||
import { XmlComponent } from "file/xml-components";
|
import { XmlComponent } from "file/xml-components";
|
||||||
|
import { Border } from "./formatting/border";
|
||||||
|
|
||||||
export class ParagraphProperties extends XmlComponent {
|
export class ParagraphProperties extends XmlComponent {
|
||||||
|
public paragraphBorder: Border;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super("w:pPr");
|
super("w:pPr");
|
||||||
|
this.paragraphBorder = new Border();
|
||||||
|
this.push(this.paragraphBorder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public push(item: XmlComponent): void {
|
public push(item: XmlComponent): void {
|
||||||
|
Reference in New Issue
Block a user