diff --git a/src/templates/assets/basetemplate.ejs b/src/templates/assets/basetemplate.ejs
index 9465a5e..b236782 100644
--- a/src/templates/assets/basetemplate.ejs
+++ b/src/templates/assets/basetemplate.ejs
@@ -18,18 +18,18 @@
}
.previewWrapper {
- width: <%= (width * scale) + 'mm' || '50mm' %>;
- height: <%= (height * scale) + 'mm' || '50mm' %>;
+ width: <%= (scaledWidth) || '50mm' %>;
+ height: <%= (scaledHeight) || '50mm' %>;
}
.previewDocument {
- width: <%= (width) + 'mm' || '50mm' %>;
- height: <%= (height) + 'mm' || '50mm' %>;
+ width: <%= (width) || '50mm' %>;
+ height: <%= (height) || '50mm' %>;
transform: scale(<%= scale || '1' %>);
transform-origin: top left;
}
.renderDocument {
- width: <%= (width * scale) + 'mm' || '50mm' %>;
- height: <%= (height * scale) + 'mm' || '50mm' %>;
+ width: <%= (scaledWidth) || '50mm' %>;
+ height: <%= (scaledHeight) || '50mm' %>;
transform: scale(<%= scale || '1' %>);
}
diff --git a/src/templates/assets/rendertemplate.ejs b/src/templates/assets/rendertemplate.ejs
index 8921d1f..9415dae 100644
--- a/src/templates/assets/rendertemplate.ejs
+++ b/src/templates/assets/rendertemplate.ejs
@@ -1 +1 @@
-
<%- content %>
+<%- content %>
diff --git a/src/templates/pdffactory.js b/src/templates/pdffactory.js
index 4792941..944feb3 100644
--- a/src/templates/pdffactory.js
+++ b/src/templates/pdffactory.js
@@ -30,13 +30,22 @@ export async function generatePDF(html, options = {}) {
waitUntil: 'networkidle0'
});
+ var height = `${options?.height || '50'}mm`;
+
+ if (options.height == 'auto') {
+ console.log('Calculating height');
+ const calculatedHeight = await page.evaluate(() => {
+ return document.getElementById('content').scrollHeight;
+ });
+
+ height = `${calculatedHeight}px`;
+ }
// Generate PDF with specified dimensions
const pdfBuffer = await page.pdf({
- format: options.format || undefined,
- width: options.width ? `${options.width}mm` : undefined,
- height: options.height ? `${options.height}mm` : undefined,
printBackground: true,
preferCSSPageSize: true,
+ width: options.width ? `${options.width}mm` : undefined,
+ height: height ? `${height}` : undefined,
margin: {
top: '0mm',
right: '0mm',
diff --git a/src/templates/templatemanager.js b/src/templates/templatemanager.js
index b17514e..898d6d3 100644
--- a/src/templates/templatemanager.js
+++ b/src/templates/templatemanager.js
@@ -430,8 +430,14 @@ export class TemplateManager {
documentTemplate.parent.content == null ||
typeof documentTemplate.parent.content !== 'string'
) {
+ console.log(
+ 'Parent template content is required and must be a string.',
+ documentTemplate.parent.content
+ );
return {
- error: 'Parent template content is required and must be a string.'
+ error:
+ 'Parent template content is required and must be a string.' +
+ documentTemplate.parent.content
};
}
templateWithParentContent = await ejs.render(
@@ -481,12 +487,18 @@ export class TemplateManager {
return { error: 'Failed to render inner template content.' };
}
+ const infiniteHeight = documentSize.infiniteHeight == true;
+
const baseHtml = await ejs.render(
baseTemplate,
{
content: innerHtml,
- width: documentSize.width,
- height: documentSize.height,
+ width: `${documentSize.width}mm`,
+ height: infiniteHeight ? 'fit-content' : `${documentSize.height}mm`,
+ scaledWidth: `${documentSize.width * scale}mm`,
+ scaledHeight: infiniteHeight
+ ? 'auto'
+ : `${documentSize.height * scale}mm`,
scale: `${scale}`,
baseCSS: baseCSS,
previewPaginationScript: preview ? previewPaginationScript : ''
@@ -497,7 +509,8 @@ export class TemplateManager {
const previewObject = {
html: baseHtml,
width: documentSize.width,
- height: documentSize.height
+ height: infiniteHeight ? 'auto' : documentSize.height,
+ infiniteHeight: infiniteHeight
};
return previewObject;
@@ -552,7 +565,8 @@ export class TemplateManager {
// Generate PDF using PDF factory
const pdfBuffer = await generatePDF(baseHtml, {
width: renderedTemplate.width,
- height: renderedTemplate.height
+ height: renderedTemplate.height,
+ infiniteHeight: renderedTemplate.infiniteHeight
});
const pdfObject = {