dees-document/ts/classes.pdfservice.ts

62 lines
1.6 KiB
TypeScript

import * as plugins from './plugins.js';
import * as helpers from './helpers.js';
import type { IDocumentSettings} from '../ts/interfaces/index.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: 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;
}
}