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": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0lMtuwjAQRfeV+g+Rt1Vi6KKqKgKLPpYtUukHGHsCVv2Sx7z+vhMCUVUBkQpsIiUz994zVsaD0dqabAkRtXcl6xc9loGTXmk3K9nX5C1/ZBkm4ZQw3kHJNoBsNLy9GUw2ATAjtcOSzVMKT5yjnIMVWPgAjiqVj1Ykeo0zHoT8FjPg973eA5feJXApT7UHGw5eoBILk7LXNX1uSCIYZNlz01hnlUyEYLQUiep86dSflHyXUJBy24NzHfCOGhg/mFBXjgfsdB90NFEryMYipndhqYuvfFRcebmwpCxO2xzg9FWlJbT62i1ELwGRztyaoq1Yod2e/ygHpo0BvDxF49sdDymR4BoAO+dOhBVMP69G8cu8E6Si3ImYGrg8RmvdCZFoA6F59s/m2NqciqTOcfQBaaPjP8ber2ytzmngADHp039dm0jWZ88H9W2gQB3I5tv7bfgDAAD//wMAUEsDBBQABgAIAAAAIQAekRq37wAAAE4CAAALAAgCX3JlbHMvLnJlbHMgogQCKKAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACskstqwzAQRfeF/oOYfS07fVBC5GxKIdvW/QBFHj+oLAnN9OG/r0hJ69BguvByrphzz4A228/BineM1HunoMhyEOiMr3vXKnipHq/uQRBrV2vrHSoYkWBbXl5sntBqTkvU9YFEojhS0DGHtZRkOhw0ZT6gSy+Nj4PmNMZWBm1edYtyled3Mk4ZUJ4wxa5WEHf1NYhqDPgftm+a3uCDN28DOj5TIT9w/4zM6ThKWB1bZAWTMEtEkOdFVkuK0B+LYzKnUCyqwKPFqcBhnqu/XbKe0y7+th/G77CYc7hZ0qHxjiu9txOPn+goIU8+evkFAAD//wMAUEsDBBQABgAIAAAAIQC29GeY0gYAAMkgAAAVAAAAd29yZC90aGVtZS90aGVtZTEueG1s7FlLixtHEL4H8h+Euct6zehhrDXSSPJr1zbetYOPvVJrpq2eadHd2rUwhmCfcgkEnJBDDLnlEEIMMcTkkh9jsEmcH5HqHkkzLfXEj12DCbuCVT++qv66qrq6NHPh4v2YOkeYC8KSjls9V3EdnIzYmCRhx719MCy1XEdIlIwRZQnuuAss3Is7n392AZ2XEY6xA/KJOI86biTl7Hy5LEYwjMQ5NsMJzE0Yj5GELg/LY46OQW9My7VKpVGOEUlcJ0ExqL0xmZARdg6USndnpXxA4V8ihRoYUb6vVGNDQmPH06r6EgsRUO4cIdpxYZ0xOz7A96XrUCQkTHTciv5zyzsXymshKgtkc3JD/beUWwqMpzUtx8PDtaDn+V6ju9avAVRu4wbNQWPQWOvTADQawU5TLqbOZi3wltgcKG1adPeb/XrVwOf017fwXV99DLwGpU1vCz8cBpkNc6C06W/h/V671zf1a1DabGzhm5Vu32saeA2KKEmmW+iK36gHq92uIRNGL1vhbd8bNmtLeIYq56IrlU9kUazF6B7jQwBo5yJJEkcuZniCRoALECWHnDi7JIwg8GYoYQKGK7XKsFKH/+rj6Zb2KDqPUU46HRqJrSHFxxEjTmay414FrW4O8urFi5ePnr989PvLx49fPvp1ufa23GWUhHm5Nz9988/TL52/f/vxzZNv7XiRx7/+5avXf/z5X+qlQeu7Z6+fP3v1/dd//fzEAu9ydJiHH5AYC+c6PnZusRg2aFkAH/L3kziIEMlLdJNQoAQpGQt6ICMDfX2BKLLgeti04x0O6cIGvDS/ZxDej/hcEgvwWhQbwD3GaI9x656uqbXyVpgnoX1xPs/jbiF0ZFs72PDyYD6DuCc2lUGEDZo3KbgchTjB0lFzbIqxRewuIYZd98iIM8Em0rlLnB4iVpMckEMjmjKhyyQGvyxsBMHfhm327jg9Rm3q+/jIRMLZQNSmElPDjJfQXKLYyhjFNI/cRTKykdxf8JFhcCHB0yGmzBmMsRA2mRt8YdC9BmnG7vY9uohNJJdkakPuIsbyyD6bBhGKZ1bOJIny2CtiCiGKnJtMWkkw84SoPvgBJYXuvkOw4e63n+3bkIbsAaJm5tx2JDAzz+OCThC2Ke/y2EixXU6s0dGbh0Zo72JM0TEaY+zcvmLDs5lh84z01QiyymVss81VZMaq6idYQK2kihuLY4kwQnYfh6yAz95iI/EsUBIjXqT5+tQMmQFcdbE1XuloaqRSwtWhtZO4IWJjf4Vab0bICCvVF/Z4XXDDf+9yxkDm3gfI4PeWgcT+zrY5QNRYIAuYAwRVhi3dgojh/kxEHSctNrfKTcxDm7mhvFH0xCR5awW0Ufv4H6/2gQrj1Q9PLdjTqXfswJNUOkXJZLO+KcJtVjUB42Py6Rc1fTRPbmK4RyzQs5rmrKb539c0Ref5rJI5q2TOKhm7yEeoZLLiRT8CWj3o0Vriwqc+E0LpvlxQvCt02SPg7I+HMKg7Wmj9kGkWQXO5nIELOdJthzP5BZHRfoRmsExVrxCKpepQODMmoHDSw1bdaoLO4z02Tker1dVzTRBAMhuHwms1DmWaTEcbzewB3lq97oX6QeuKgJJ9HxK5xUwSdQuJ5mrwLST0zk6FRdvCoqXUF7LQX0uvwOXkIPVI3PdSRhBuENJj5adUfuXdU/d0kTHNbdcs22srrqfjaYNELtxMErkwjODy2Bw+ZV+3M5ca9JQptmk0Wx/D1yqJbOQGmpg95xjOXN0HNSM067gT+MkEzXgG+oTKVIiGSccdyaWhPySzzLiQfSSiFKan0v3HRGLuUBJDrOfdQJOMW7XWVHv8RMm1K5+e5fRX3sl4MsEjWTCSdWEuVWKdPSFYddgcSO9H42PnkM75LQSG8ptVZcAxEXJtzTHhueDOrLiRrpZH0Xjfkh1RRGcRWt4o+WSewnV7TSe3D810c1dmf7mZw1A56cS37tuF1EQuaRZcIOrWtOePj3fJ51hled9glabuzVzXXuW6olvi5BdCjlq2mEFNMbZQy0ZNaqdYEOSWW4dm0R1x2rfBZtSqC2JVV+re1ottdngPIr8P1eqcSqGpwq8WjoLVK8k0E+jRVXa5L505Jx33QcXvekHND0qVlj8oeXWvUmr53Xqp6/v16sCvVvq92kMwioziqp+uPYQf+3SxfG+vx7fe3cerUvvciMVlpuvgshbW7+6rteJ39w4Byzxo1IbtervXKLXr3WHJ6/dapXbQ6JX6jaDZH/YDv9UePnSdIw32uvXAawxapUY1CEpeo6Lot9qlplerdb1mtzXwug+Xtoadr75X5tW8dv4FAAD//wMAUEsDBBQABgAIAAAAIQASDF40HAQAANELAAARAAAAd29yZC9zZXR0aW5ncy54bWy0Vttu2zgQfV9g/8HQ8zqy5EtioU4RO/EmRdwWdRb7TImURYQ3kJQdt9h/3yElWk5TFE6LvNjknJkzw+FwRu/eP3HW2xJtqBSzKDkbRD0iComp2Myifx6W/YuoZywSGDEpyCzaExO9v/zzj3e7zBBrQc30gEKYjBezqLJWZXFsiopwZM6kIgLAUmqOLGz1JuZIP9aqX0iukKU5ZdTu43QwmEQtjZxFtRZZS9HntNDSyNI6k0yWJS1I+xcs9Cl+G5NrWdScCOs9xpowiEEKU1FlAhv/VTYAq0Cy/dkhtpwFvV0yOOG4O6nxweKU8JyB0rIgxsAFcRYCpKJzPHpBdPB9Br7bI3oqME8GfnUc+fh1BOkLgklBnl7HcdFyxGB5zEPx63gmBx7aJTaZ/FowRwQGW1y9iiUNeY2dLbKoQuZQRY6RvC6o8YFuz7scGXZK1TTQPc010s2bbEuGF9ndRkiNcgbhQOn04PZ7Pjr3C0l0f35Jnrzc5SG6hB7xVUre22WK6AIeCjSYwSCKHQDlKcu1RRYoMqMIY77jFIwg8LjLNhpx6BVB4m0wKVHN7APK11YqUNoiONh52lIWFdKosESvFSqAbSGF1ZIFPSw/SruAvqPhWbQWvgt1q3XT0cBCIA5HfdalVhITF1mt6el34gy892R87PJ7RxI6sKaYPLgUr+2ekSUEv6ZfyZXAH2pjKTD6XvUbEfwsACKc509QFA97RZYE2RrS9EbO/E0sGVUrqrXUdwJDbbyZM1qWRIMDCrW2gvKhWu58nm8JwjD43shvbci/oAxvcvgAZfk4l9ZKfrtXFeT6927S13t8XL4wvrEJiy9S2oPq4GY+md4smkgdegqyPB+n82HrpeXmmRtwn3VYuQLt8cZigXiuKeqt3AiMnUauH+dUBDwn0GfIMbKu8wD2+w1gOGJsCakKgD8mzzA16pqUfs1WSG863lZD/1AK3eLDgct1H6L/1rJWDbrTSDWFF1SS0ai1pMLeUx7kps7XwUpAZzyCaoE/bbXPU5eeXWbhIv0Dvke+ILwuEf27j23BML12l01WSKmmZvJNMosY3VQ2cddsYYfhS8lv8k3aYqnH0gbzG1S4k4F2u+hkaZAd6Q2DbNjJRkE26mTjIBt3skmQTZysgi6hoWU/QvmGpZOXkjG5I/i2w1+ImiSYCily3XR0KC/ZCNoWb3rbjDzBvCCYWvgAVRRz9OTGRzpx5q02Q3tZ22e6DnPK6jmDG63tg42fGfsS/y4WN2kKCuW43vO8GyBnTeCMGnjsCmaNlTpgf3ksGWVYFnduHI4a+XA6GqbT6XUDj/2Msr4fwL1/IeUcGYJbLJiOG9Nvk8F5Mp/eXPUHF4ur/mg+TvrT+fmyf74cj6eTxcK90f/aRxq+xS//BwAA//8DAFBLAwQUAAYACAAAACEAQ6RslocLAAAPcwAADwAAAHdvcmQvc3R5bGVzLnhtbLydW3PbuhHH3zvT78DRU/uQyFc5yRznjOMktae2j0/kNM8QCVmoQULlxZd++gIgJUFeguKCW78k1mV/APHHf4nlTb/9/pzK6JHnhVDZ6Wj//d4o4lmsEpHdn45+3n1/92EUFSXLEiZVxk9HL7wY/f75r3/57elTUb5IXkQakBWf0vh0tCjL5afxuIgXPGXFe7Xkmf5wrvKUlfplfj9OWf5QLd/FKl2yUsyEFOXL+GBvbzJqMHkfiprPRcy/qrhKeVba+HHOpSaqrFiIZbGiPfWhPak8WeYq5kWhNzqVNS9lIltj9o8AKBVxrgo1L9/rjWl6ZFE6fH/P/pXKDeAYBzgAgEnMn3GMDw1jrCNdjkhwnMmaIxKHE9YZB1AkZbJAUQ5W4zo2saxkC1YsXCLHdep4jXtJzRil8afL+0zlbCY1SaseaeEiCzb/6u03/9k/+bN932zC6LP2QqLir3zOKlkW5mV+mzcvm1f2v+8qK4vo6RMrYiHudAd1K6nQDV6cZYUY6U84K8qzQrDWDxfmj9ZP4qJ03v4iEjEamxaL/+oPH5k8HR0crN45Nz3Yek+y7H71Hs/eXd64PbFv/Zyat2aaezpi+bvpmQkcNxtW/+9s7vL1K9vwksXCtsPmJdc235/sGagUJqscHH9cvfhRmcFnVamaRiyg/n+NHYMR1+7XuWBapyT9KZ9fqfiBJ9NSf3A6sm3pN39e3uZC5TrtnI4+2jb1m1OeiguRJDxzvpgtRMJ/LXj2s+DJ5v0/v9vU0bwRqyrTfx+eTOwskEXy7TnmS5OI9KcZM5rcmABpvl2JTeM2/D8r2H6jRFv8gjOTjaP91wjbfRTiwEQUzta2M6tX226/hWro8K0aOnqrho7fqqHJWzV08lYNfXirhizm/9mQyBKd+O33YTOAuovjcSOa4zEbmuPxEprjsQqa43ECmuOZ6GiOZx6jOZ5piuCUKvbNQmeyH3pmezd39z4ijLt7lxDG3b0HCOPuTvhh3N35PYy7O52HcXdn7zDu7mSN59ZLrehS2ywrB7tsrlSZqZJHJX8eTmOZZtkSlYZndno8J9lIAkyd2Zod8WBazOzr3TPEmjR8f16aSi9S82gu7qucF4M7zrNHLtWSRyxJNI8QmPOyyj0jEjKncz7nOc9iTjmx6aCmEoyyKp0RzM0luydj8SwhHr4VkSQprCe0rp8XxiSCYFKnLM7V8K4pRpYfrkQxfKwMJPpSScmJWDc0U8yyhtcGFjO8NLCY4ZWBxQwvDBzNqIaooRGNVEMjGrCGRjRu9fykGreGRjRuDY1o3Bra8HG7E6W0Kd5ddez3P3Z3LpU5qTC4H1NxnzG9ABi+u2mOmUa3LGf3OVsuInNUuh3rbjO2nS8qeYnuKPZpaxLVut5OkXO91SKrhg/oFo3KXGsekb3WPCKDrXnDLXatl8lmgXZBU89Mq1nZalpL6mXaKZNVvaAd7jZWDp9hGwN8F3lBZoN2LMEMvjHLWSMnRebb9HJ4xzas4bZ6nZVIu9cgCXopVfxAk4YvXpY812XZw2DSdyWleuIJHXFa5qqea67lD6wkvSz/LV0uWCFsrbSF6L+rX12OEF2z5eANupVMZDS6fXuXMiEjuhXExd31VXSnlqbMNANDA/yiylKlZMzmSODffvHZ32k6eKaL4OyFaGvPiA4PWdi5INjJ1CSVEJH0MlNkgmQfann/5C8zxfKEhnab8/oKoJITEacsXdaLDgJv6bz4pPMPwWrI8v7FcmGOC1GZ6o4E5hw2LKrZv3k8PNXdqIjkyNAfVWmPP9qlro2mww1fJmzhhi8RrJp692DmL8HGbuGGb+wWjmpjzyUrCuE9hRrMo9rcFY96e4cXfw1PSZXPK0k3gCsg2QiugGRDqGSVZgXlFlse4QZbHvX2Ek4ZyyM4JGd5/8hFQiaGhVEpYWFUMlgYlQYWRirA8Ct0HNjwy3Qc2PBrdWoY0RLAgVHNM9LdP9FZHgdGNc8sjGqeWRjVPLMwqnl2+DXi87leBNPtYhwk1ZxzkHQ7mqzk6VLlLH8hQn6T/J4RHCCtabe5mptbQ1RWX8RNgDTHqCXhYrvGUYn8i8/IumZYlP0iOCLKpFSK6NjaZodjI7evXdsVZu/kGNyFW8livlAy4blnm/yxul6e1rdlvO6+7Uavw55X4n5RRtPF+mi/i5ns7YxcFexbYbsbbBvzyep+lrawa56IKl11FN5MMTnsH2xn9Fbw0e7gzUpiK/K4ZyRsc7I7crNK3oo86RkJ2/zQM9L6dCuyyw9fWf7QOhFOuubPusbzTL6Trlm0Dm5ttmsirSPbpuBJ1yzaskp0FsfmbAFUp59n/PH9zOOPx7jIT8HYyU/p7Ss/ostgP/ijMHt2TNK07a2vngB53y6ie2XOPytVH7ffOuHU/6auS71wygoetXIO+5+42soy/nHsnW78iN55x4/onYD8iF6ZyBuOSkl+Su/c5Ef0TlJ+BDpbwT0CLlvBeFy2gvEh2QpSQrLVgFWAH9F7OeBHoI0KEWijDlgp+BEoo4LwIKNCCtqoEIE2KkSgjQoXYDijwnicUWF8iFEhJcSokII2KkSgjQoRaKNCBNqoEIE2auDa3hseZFRIQRsVItBGhQi0Ue16cYBRYTzOqDA+xKiQEmJUSEEbFSLQRoUItFEhAm1UiEAbFSJQRgXhQUaFFLRRIQJtVIhAG7W+1TDcqDAeZ1QYH2JUSAkxKqSgjQoRaKNCBNqoEIE2KkSgjQoRKKOC8CCjQgraqBCBNipEoI1qTxYOMCqMxxkVxocYFVJCjAopaKNCBNqoEIE2KkSgjQoRaKNCBMqoIDzIqJCCNipEoI0KEV3zszlF6bvMfh9/1NN7xX7/U1dNp364t3K7qMP+qFWv/Kz+9yJ8Ueohar3x8NDWG/0gYiaFsoeoPafVXa69JAJ14vOP8+47fFz6wIcuNfdC2HOmAH7UNxIcUznqmvJuJCjyjrpmuhsJVp1HXdnXjQS7waOupGt9ubooRe+OQHBXmnGC9z3hXdnaCYdD3JWjnUA4wl2Z2QmEA9yVj53A48gk59fRxz3HabK+vhQQuqajQzjxE7qmJdRqlY6hMfqK5if0Vc9P6Cujn4DS04vBC+tHoRX2o8KkhjbDSh1uVD8BKzUkBEkNMOFSQ1Sw1BAVJjVMjFipIQErdXhy9hOCpAaYcKkhKlhqiAqTGu7KsFJDAlZqSMBKPXCH7MWESw1RwVJDVJjUcHGHlRoSsFJDAlZqSAiSGmDCpYaoYKkhKkxqUCWjpYYErNSQgJUaEoKkBphwqSEqWGqI6pLaHkXZkhqlsBOOW4Q5gbgdshOIS85OYEC15EQHVksOIbBaglqtNMdVS65ofkJf9fyEvjL6CSg9vRi8sH4UWmE/KkxqXLXUJnW4Uf0ErNS4askrNa5a6pQaVy11So2rlvxS46qlNqlx1VKb1OHJ2U8IkhpXLXVKjauWOqXGVUt+qXHVUpvUuGqpTWpctdQm9cAdshcTLjWuWuqUGlct+aXGVUttUuOqpTapcdVSm9S4askrNa5a6pQaVy11So2rlvxS46qlNqlx1VKb1LhqqU1qXLXklRpXLXVKjauWOqXGVUvXOkQQPAJqmrK8jOieF3fBikXJhj+c8GeW80LJR55EtJt6hdrK8dPWz18Ztv1tPv39Uo+ZeQK6c7tSUj8BtgHaL14m65+pMsGmJ1Hzg2DN27bDzenaukUbCJuKF7qtuHl2laep5hm065uo7BNoXzfseVCt7chmAq6+3QzpZrzq722NVme/SzPhO/psDdE5RrVnfB382CSBXT3U/ZnJ+ifT9B+XWaIBT83PhdU9TZ5ZjdKfn3Mpr1n9bbX0f1XyeVl/ur9nH1nw6vNZ/fQ9b3xu07QXMN7uTP2y+dk2z3jXz+Nvrh/wTkmTi1qG217MMnSkN31b/VV8/h8AAAD//wMAUEsDBBQABgAIAAAAIQDvCilOTgEAAH4DAAAUAAAAd29yZC93ZWJTZXR0aW5ncy54bWyc019rwjAQAPD3wb5DybumyhQpVmEMx17GYNsHiOnVhiW5kour7tPv2qlz+GL3kv/34y4h8+XO2eQTAhn0uRgNU5GA11gYv8nF+9tqMBMJReULZdFDLvZAYrm4vZk3WQPrV4iRT1LCiqfM6VxUMdaZlKQrcIqGWIPnzRKDU5GnYSOdCh/beqDR1SqatbEm7uU4TafiwIRrFCxLo+EB9daBj128DGBZRE+VqemoNddoDYaiDqiBiOtx9sdzyvgTM7q7gJzRAQnLOORiDhl1FIeP0m7k7C8w6QeML4Cphl0/Y3YwJEeeO6bo50xPjinOnP8lcwZQEYuqlzI+3qtsY1VUlaLqXIR+SU1O3N61d+R09rTxGNTassSvnvDDJR3ctlx/23VD2HXrbQliwR8C62ic+YIVhvuADUGQ7bKyFpuX50eeyD+/ZvENAAD//wMAUEsDBBQABgAIAAAAIQC/L9d/7wEAAHoGAAASAAAAd29yZC9mb250VGFibGUueG1s3JPBjpswEIbvlfoOyPcNhoRsipas1HYjVap6qLYP4BgD1mIbeZyQvH3HhrCRopWWHnpYDsb+x/N55sc8PJ5UGx2FBWl0QZIFJZHQ3JRS1wX587y725NIHNMla40WBTkLII/bz58e+rwy2kGE+RpyxQvSONflcQy8EYrBwnRCY7AyVjGHS1vHitmXQ3fHjeqYk3vZSneOU0rXZMTY91BMVUkuvht+UEK7kB9b0SLRaGhkBxda/x5ab2zZWcMFAPas2oGnmNQTJlndgJTk1oCp3AKbGSsKKExPaJip9hWQzQOkN4A1F6d5jM3IiDHzmiPLeZz1xJHlFeffirkCQOnKZhYlvfga+1zmWMOguSaKeUVlE+6svEeK5z9qbSzbt0jCrx7hh4sC2I/Yv3+FqTgF3bdAtuOvEPW5Zgozv7FW7q0MgY5pAyLB2JG1BcEedjSjvpeUrujSjyT2G3nDLAgPGTbSQa6Yku35okIvAYZAJx1vLvqRWemrHkIgawwcYE8L8rSiNH3a7cigJFgdRWV1/3VUUn9WeL6MynJSqFd44IRlMnB44Ex78Mx4cODGiWepBES/RB/9NorpNxxJ6RqdyNAP78xyliM2cGc54vu/ceR+k/0XR8a7Ef2UdePevCH+XnzQGzJOYPsXAAD//wMAUEsDBBQABgAIAAAAIQChA3hbdQEAAPsCAAARAAgBZG9jUHJvcHMvY29yZS54bWwgogQBKKAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMkstuwjAQRfeV+g+R98F5SKiKkiC1FasiVYI+1J2xB3CJH7IdAn9fJ4HQqCy6m/GcuTO+dj47iio4gLFcyQLFkwgFIKliXG4L9Laahw8osI5IRioloUAnsGhW3t/lVGdUGXg1SoNxHGzglaTNqC7QzjmdYWzpDgSxE09IX9woI4jzqdliTeiebAEnUTTFAhxhxBHcCoZ6UERnSUYHSV2bqhNgFEMFAqSzOJ7E+Mo6MMLebOgqv0jB3UnDTfRSHOij5QPYNM2kSTvU7x/jz8XLsrtqyGXrFQVU5oxmjrsKyhxfQx/Zev0N1PXHQ+JjaoA4Zcp3bneyDpb12hChJCeiQy/l1vg9nBplmPUio8xjDCw1XDv/nP2I0YGnK2Ldwr/vhgN7PN2c9pdqGw0cePtLyrgjhjQ/W95vCCzwVmW9sZfKR/r0vJqjMomSJIyTMElX0TRLkiyKvtolR/1XQXFe4P+K6VjxItD7NP6u5Q8AAAD//wMAUEsDBBQABgAIAAAAIQCu50sMbwEAAMgCAAAQAAgBZG9jUHJvcHMvYXBwLnhtbCCiBAEooAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJxSy07DMBC8I/EPUe7UKUgFoY0RKkIceElN27NlbxILx7Zst2r/nk0DIYgbPu3Mekcza8PdoTPZHkPUzpb5fFbkGVrplLZNma+rx4ubPItJWCWMs1jmR4z5HT8/g/fgPIakMWYkYWOZtyn5W8aibLETcUZtS53ahU4kgqFhrq61xAcndx3axC6LYsHwkNAqVBd+FMwHxdt9+q+ocrL3FzfV0ZMehwo7b0RC/tpPmplyqQM2slC5JEylO+RzokcA76LB2HNDAVsXFGEihgqWrQhCJlogX1wBm0C4995oKRJtlr9oGVx0dcreTnazfhzY9ApQhBXKXdDpyAtgUwjP2g4+hoJ8BdEE4dsvcyOClRQGlxSe18JEBPZDwNJ1XliSY2NFeh9x7Sv30O/ha+Q3Ocm41aldeSHJwvWvtJMGrIhFRfZHByMBT/QewfTyNGsbVN93/jb6/W2Gj8nni1lB57Swb45ijz+GfwIAAP//AwBQSwECLQAUAAYACAAAACEA36TSbFoBAAAgBQAAEwAAAAAAAAAAAAAAAAAAAAAAW0NvbnRlbnRfVHlwZXNdLnhtbFBLAQItABQABgAIAAAAIQAekRq37wAAAE4CAAALAAAAAAAAAAAAAAAAAJMDAABfcmVscy8ucmVsc1BLAQItABQABgAIAAAAIQC93+LgigMAAPUNAAARAAAAAAAAAAAAAAAAALMGAAB3b3JkL2RvY3VtZW50LnhtbFBLAQItABQABgAIAAAAIQDWZLNR9AAAADEDAAAcAAAAAAAAAAAAAAAAAGwKAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzUEsBAi0AFAAGAAgAAAAhALb0Z5jSBgAAySAAABUAAAAAAAAAAAAAAAAAogwAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbFBLAQItABQABgAIAAAAIQASDF40HAQAANELAAARAAAAAAAAAAAAAAAAAKcTAAB3b3JkL3NldHRpbmdzLnhtbFBLAQItABQABgAIAAAAIQBDpGyWhwsAAA9zAAAPAAAAAAAAAAAAAAAAAPIXAAB3b3JkL3N0eWxlcy54bWxQSwECLQAUAAYACAAAACEA7wopTk4BAAB+AwAAFAAAAAAAAAAAAAAAAACmIwAAd29yZC93ZWJTZXR0aW5ncy54bWxQSwECLQAUAAYACAAAACEAvy/Xf+8BAAB6BgAAEgAAAAAAAAAAAAAAAAAmJQAAd29yZC9mb250VGFibGUueG1sUEsBAi0AFAAGAAgAAAAhAKEDeFt1AQAA+wIAABEAAAAAAAAAAAAAAAAARScAAGRvY1Byb3BzL2NvcmUueG1sUEsBAi0AFAAGAAgAAAAhAK7nSwxvAQAAyAIAABAAAAAAAAAAAAAAAAAA8SkAAGRvY1Byb3BzL2FwcC54bWxQSwUGAAAAAAsACwDBAgAAliwAAAAA"
}
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:
- Preserves source document formatting
- Processes nested merge fields
- 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:
- Read the document file as binary data
- Encode to Base64 using appropriate encoding tools
- Include in data source as string value
- 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
- Validate documents - Ensure inserted documents are valid before encoding
- Test independently - Verify each document opens correctly before insertion
- Appropriate sizing - Keep inserted documents reasonably sized
- Consistent formatting - Maintain formatting consistency across documents
- Version control - Track versions of inserted documents
Performance Optimization
- Limit insertions - Minimize number of document insertions per template
- Document size - Keep inserted documents as small as practical
- Avoid deep nesting - Limit recursive template depth
- Pre-process when possible - Combine documents before template processing if feasible
Data Management
- Secure encoding - Ensure Base64 encoding is secure and accurate
- Storage efficiency - Consider storage implications of Base64 strings
- Caching - Cache frequently used documents to reduce encoding overhead
- 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]>>
Prepare and test inserted documents thoroughly before encoding them to Base64. Ensure they display correctly when opened independently before incorporating them into templates.
Inserting multiple large documents can significantly impact generation performance. Use document insertion judiciously and consider alternative approaches for very large or numerous documents.