61 lines
1.5 KiB
TypeScript
61 lines
1.5 KiB
TypeScript
import * as plugins from './plugins.js';
|
|
import * as helpers from './helpers.js';
|
|
|
|
export interface IPdfServiceConstructorOptions {
|
|
|
|
}
|
|
|
|
/**
|
|
* a pdf service for generating pdfs
|
|
*/
|
|
export class PdfService {
|
|
// STATIC
|
|
public static async createAndStart(optionsArg: IPdfServiceConstructorOptions) {
|
|
const pdfService = new PdfService(optionsArg);
|
|
await pdfService.start();
|
|
return pdfService;
|
|
}
|
|
|
|
// INSTANCE
|
|
options: IPdfServiceConstructorOptions;
|
|
|
|
public smartpdfInstance: plugins.smartpdf.SmartPdf;
|
|
|
|
constructor(optionsArg: IPdfServiceConstructorOptions) {
|
|
this.options = optionsArg;
|
|
}
|
|
|
|
/**
|
|
* starts the PdfService
|
|
*/
|
|
public async start() {
|
|
this.smartpdfInstance = new plugins.smartpdf.SmartPdf();
|
|
await this.smartpdfInstance.start();
|
|
}
|
|
|
|
/**
|
|
* stops the PdfService
|
|
*/
|
|
public async stop() {
|
|
await this.smartpdfInstance.stop();
|
|
}
|
|
|
|
/**
|
|
* creates an letter
|
|
*/
|
|
public async createPdfFromLetterObject(optionsArg: {
|
|
letterData: plugins.tsclass.business.ILetter,
|
|
documentSettings: plugins.shared.interfaces.IDocumentSettings
|
|
}) {
|
|
const html = `
|
|
<script type="module">
|
|
${await helpers.getBundleAsString()}
|
|
</script>
|
|
<dedocument-dedocument printMode documentSettings="${plugins.smartjson.stringifyBase64(optionsArg.documentSettings)}" letterData="${plugins.smartjson.stringifyBase64(optionsArg.letterData)}"></dedocument-dedocument>
|
|
`;
|
|
// console.log(html);
|
|
const pdfResult = await this.smartpdfInstance.getA4PdfResultForHtmlString(html);
|
|
return pdfResult;
|
|
}
|
|
}
|