Hello, ${name}!
"; - -// Create a data model -Map${content}
"; - -// Save the template for future use -TemplateRenderUtil.saveTemplate(templateContent, "dynamic-template.ftl"); - -// Later, use the saved template -String html = TemplateRenderUtil.renderTemplateToHtml("dynamic-template.ftl", dataModel); -``` - -## Converting HTML to PDF - -### Basic Conversion - -```java -// Convert HTML to PDF with default options -TemplateRenderUtil.renderHtmlToPdf(html, outputStream, new TemplateRenderUtil.PdfOptions()); - -// Convert HTML to PDF file -TemplateRenderUtil.renderHtmlToPdfFile(html, "output.pdf"); - -// Convert HTML to PDF bytes -byte[] pdfBytes = TemplateRenderUtil.renderHtmlToPdfBytes(html); - -// Convert HTML to PDF asynchronously -CompletableFuture${content}
"; - -// Create a data model -MapHello ${name}!
"; -List${content}
"; -byte[] templateStringImageBytes = TemplateRenderUtil.renderTemplateStringToImage( - templateContent, - "inline-template", - dataModel, - 800, 600, - "png" -); -``` - -## Template Processing Hooks - -Add pre-processing and post-processing hooks to modify templates and rendered HTML: - -```java -// Add a pre-processor to modify template content before rendering -TemplateRenderUtil.setTemplatePreProcessor((content, model) -> { - // Add a header to all templates - return "${content}
\n" + - "\n" + - ""; - -// Save the template for future use -TemplateRenderUtil.saveTemplate(templateContent, "dynamic-template.ftl"); -``` - -### Combining Multiple Features - -```java -// Set up template configuration -TemplateRenderUtil.setClasspathAndFileTemplateLoaders("templates", "./custom-templates"); -TemplateRenderUtil.addSharedVariable("company", companyInfo); +## Configuration -// Create custom PDF options -PdfRenderOptions options = new PdfRenderOptions(PdfRenderOptions.PageSize.A4) - .setMargins(50) - .setUserPassword("secret") - .setAllowPrinting(true) - .setAllowCopy(false); +No configuration is required. This library provides standalone utility classes. -// Render template directly to PDF with all options -TemplateRenderUtil.renderTemplateToPdf("reports/quarterly.ftl", reportData, "Q2-2023-Report.pdf", options); -``` - -## Error Handling - -The utility provides detailed error handling: - -```java -try { - // Attempt to render a template - String html = TemplateRenderUtil.renderTemplateToHtml("invoice.ftl", dataModel); - TemplateRenderUtil.renderTemplateToPdfFile("invoice.ftl", dataModel, "invoice.pdf"); -} catch (IOException e) { - // Handle file access errors - logger.error("Could not access template or output file", e); -} catch (TemplateException e) { - // Handle template processing errors - logger.error("Error in template syntax or processing", e); -} catch (DocumentException e) { - // Handle PDF creation errors - logger.error("Error creating PDF document", e); -} -``` - -## Complete Examples - -### Invoice Generation Example - -```java -// Create invoice data -Map