Skip to main content

Inserting Documents - Document Embedding Guide

PDF4me's document generation engine supports inserting complete documents within other documents during the generation process. This powerful capability enables you to combine multiple documents, embed templates within templates, and create complex multi-section documents dynamically.


Document Insertion Syntax

Insert a complete document using Base64-encoded document content:

<<doc [token]>>

The doc keyword instructs the template engine to insert the entire document content at the specified location.


Basic Document Insertion

Simple Document Embedding

Template Syntax:

<<doc [document]>>

Data Requirement: The document must be provided as a Base64-encoded string in your data source.

Data Example:

{
"document": "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"
}

This Base64 string represents a complete Word document that will be inserted at the merge field location.


Document Insertion Controls

PDF4me provides control switches to customize how inserted documents are processed and formatted.

Source Styles Preservation

Syntax: <<doc [document] -sourceStyles>>

Behavior:

  • Overrides the parent template's formatting
  • Preserves the original formatting of the inserted document
  • Maintains styles, fonts, colors from source document
  • Source document formatting takes precedence

Use Case: When inserted document's visual styling must be preserved exactly as designed.

Example:

Main Document Content...

<<doc [contractDocument] -sourceStyles>>

Continuation of Main Document...

Recursive Template Building

Syntax: <<doc [document] -build>>

Behavior:

  • Treats the inserted document as a template
  • Processes merge fields within the inserted document
  • Applies data to nested template structure
  • Enables multi-level template composition

Use Case: When the inserted document itself contains merge fields that need population.

Example:

Parent Template:
<<doc [childTemplate] -build>>

If childTemplate contains <<[employeeName]>>, it will be populated with data from the same data source.


Combining Control Switches

Both control switches can be used together for maximum flexibility:

Syntax: <<doc [document] -sourceStyles -build>>

This combination:

  1. Preserves source document formatting
  2. Processes nested merge fields
  3. Applies data to the embedded template

Practical Applications

Example 1: Terms and Conditions Insertion

Main Template:

Invoice #<<[invoiceNumber]>>
Date: <<[invoiceDate]:"dd.MM.yyyy">>

Items:
<<foreach [item in lineItems]>>
• <<[item.name]>> - $<<[item.price]>>
<</foreach>>

Total: $<<[total]>>

Terms and Conditions:
<<doc [termsDocument]>>

Use Case: Standard terms and conditions stored as a separate document, inserted into every invoice.


Example 2: Department-Specific Sections

Main Template:

Company Report - <<[reportDate]:"MMMM yyyy">>

Executive Summary:
<<[executiveSummary]>>

Department Reports:
<<foreach [dept in departments]>>
Department: <<[dept.name]>>
<<doc [dept.reportDocument] -sourceStyles>>
<</foreach>>

Use Case: Each department provides their own formatted report document, which is compiled into a master report.


Example 3: Recursive Template Assembly

Parent Template:

Customer: <<[customerName]>>
Order Date: <<[orderDate]:"dd.MM.yyyy">>

Order Details:
<<doc [orderTemplate] -build>>

Shipping Information:
<<doc [shippingTemplate] -build>>

Child Templates: Both orderTemplate and shippingTemplate contain their own merge fields that will be populated from the main data source.


Multi-Document Assembly

Combine multiple documents into a single generated output.

Sequential Document Insertion

Template:

<<doc [document1]>>

<<doc [document2]>>

<<doc [document3]>>

Each document is inserted in sequence, creating a multi-section combined document.


Conditional Document Insertion

Template:

Main Content...

<<if [includeAppendixA]>>
Appendix A:
<<doc [appendixADocument]>>
<</if>>

<<if [includeAppendixB]>>
Appendix B:
<<doc [appendixBDocument]>>
<</if>>

Document Format Considerations

Supported Document Formats

The inserted documents should be:

  • Word documents (.docx format preferred)
  • Properly encoded as Base64 strings
  • Valid documents that can be opened independently
  • Compatible with the parent template format

Encoding Documents to Base64

To prepare documents for insertion:

  1. Read the document file as binary data
  2. Encode to Base64 using appropriate encoding tools
  3. Include in data source as string value
  4. Verify encoding is complete and valid

Data Structure Example

Complete Data Source

JSON Structure:

{
"contractNumber": "CNT-2024-001",
"clientName": "Acme Corporation",
"contractDate": "2024/01/15",
"mainTermsDocument": "UEsDBBQABgAIAAAAIQ...[Base64 encoded .docx]",
"appendixDocument": "UEsDBBQABgAIAAAAIQ...[Base64 encoded .docx]",
"includeAppendix": true
}

Template:

Contract #<<[contractNumber]>>
Client: <<[clientName]:caps>>
Date: <<[contractDate]:"MMMM dd, yyyy">>

Main Terms:
<<doc [mainTermsDocument] -sourceStyles>>

<<if [includeAppendix]>>
Appendix:
<<doc [appendixDocument] -sourceStyles>>
<</if>>

Best Practices

Document Insertion Guidelines

  1. Validate documents - Ensure inserted documents are valid before encoding
  2. Test independently - Verify each document opens correctly before insertion
  3. Appropriate sizing - Keep inserted documents reasonably sized
  4. Consistent formatting - Maintain formatting consistency across documents
  5. Version control - Track versions of inserted documents

Performance Optimization

  1. Limit insertions - Minimize number of document insertions per template
  2. Document size - Keep inserted documents as small as practical
  3. Avoid deep nesting - Limit recursive template depth
  4. Pre-process when possible - Combine documents before template processing if feasible

Data Management

  1. Secure encoding - Ensure Base64 encoding is secure and accurate
  2. Storage efficiency - Consider storage implications of Base64 strings
  3. Caching - Cache frequently used documents to reduce encoding overhead
  4. Error handling - Implement fallbacks for missing or invalid documents

Troubleshooting

Common Issues

Issue: Inserted document doesn't appear
Solution: Verify Base64 encoding is complete and valid

Issue: Formatting lost from inserted document
Solution: Use -sourceStyles switch to preserve formatting

Issue: Merge fields in inserted document not populated
Solution: Use -build switch to process nested templates

Issue: Large file size in generated document
Solution: Optimize inserted documents before encoding

Issue: Incorrect positioning of inserted content
Solution: Check template structure and placement of <<doc>> syntax


Advanced Scenarios

Scenario 1: Multi-Language Documents

Insert language-specific document sections based on user preferences:

Template:

<<if [language == "English"]>>
<<doc [termsEnglish] -sourceStyles>>
<<elseif [language == "Spanish"]>>
<<doc [termsSpanish] -sourceStyles>>
<<else>>
<<doc [termsDefault] -sourceStyles>>
<</if>>

Scenario 2: Modular Document Assembly

Build complex documents from smaller, reusable components:

Template:

<<doc [headerDocument]>>

<<foreach [section in sections]>>
<<doc [section.documentContent] -sourceStyles -build>>
<</foreach>>

<<doc [footerDocument]>>

Scenario 3: Template Inheritance

Create base templates with inserted specialized sections:

Base Template:

Company Letterhead
<<[date]:"MMMM dd, yyyy">>

<<doc [bodyContent] -build>>

Standard Footer
<<doc [disclaimerDocument]>>

Document Preparation

Prepare and test inserted documents thoroughly before encoding them to Base64. Ensure they display correctly when opened independently before incorporating them into templates.

Performance Impact

Inserting multiple large documents can significantly impact generation performance. Use document insertion judiciously and consider alternative approaches for very large or numerous documents.