mirror of
https://github.com/pdfme/pdfme.git
synced 2026-04-17 20:49:43 -04:00
98 lines
32 KiB
HTML
98 lines
32 KiB
HTML
<!doctype html>
|
||
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-expression" data-has-hydrated="false">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="generator" content="Docusaurus v3.7.0">
|
||
<title data-rh="true">Expression | pdfme</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://pdfme.com/img/ogimage.png"><meta data-rh="true" name="twitter:image" content="https://pdfme.com/img/ogimage.png"><meta data-rh="true" property="og:url" content="https://pdfme.com/docs/expression"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Expression | pdfme"><meta data-rh="true" name="description" content="Expressions are a feature that evaluates expressions enclosed in {}."><meta data-rh="true" property="og:description" content="Expressions are a feature that evaluates expressions enclosed in {}."><link data-rh="true" rel="icon" href="/favicon.ico"><link data-rh="true" rel="canonical" href="https://pdfme.com/docs/expression"><link data-rh="true" rel="alternate" href="https://pdfme.com/docs/expression" hreflang="en"><link data-rh="true" rel="alternate" href="https://pdfme.com/docs/expression" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://V6YWG1D4SV-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.google-analytics.com">
|
||
<link rel="preconnect" href="https://www.googletagmanager.com">
|
||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-1Z2MZW44WP"></script>
|
||
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-1Z2MZW44WP",{})</script>
|
||
|
||
|
||
|
||
<link rel="search" type="application/opensearchdescription+xml" title="pdfme" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.5b011cd5.css">
|
||
<script src="/assets/js/runtime~main.456e738e.js" defer="defer"></script>
|
||
<script src="/assets/js/main.7b711f51.js" defer="defer"></script>
|
||
</head>
|
||
<body class="navigation-with-keyboard">
|
||
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(n,e)}}catch(t){}}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><div class="announcementBar_mb4j" role="banner"><div class="announcementBarPlaceholder_vyr4"></div><div class="content_knG7 announcementBarContent_xLdY">⭐️ If you like pdfme, give it a star on <a target="_blank" rel="noopener noreferrer" href="https://github.com/pdfme/pdfme">GitHub</a>! ⭐️</div><button type="button" aria-label="Close" class="clean-btn close closeButton_CVFx announcementBarClose_gvF7"><svg viewBox="0 0 15 15" width="14" height="14"><g stroke="currentColor" stroke-width="3.1"><path d="M.75.75l13.5 13.5M14.25.75L.75 14.25"></path></g></svg></button></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><b class="navbar__title text--truncate">pdfme</b></a></div><div class="navbar__items navbar__items--right"><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/getting-started">Documentation</a><a class="navbar__item navbar__link" href="/templates">Examples</a><a class="navbar__item navbar__link" href="/template-design">Template Design</a><a href="https://github.com/pdfme/pdfme" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://discord.gg/xWPTJbmgNV" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://app.pdfme.com?utm_source=website&utm_content=navbar" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Try pdfme Cloud<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite" aria-pressed="false"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG menuWithAnnouncementBar_GW3s"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/getting-started">Getting Started</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/supported-features">Supported Features</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/tables">Tables with Dynamic Data</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" href="/docs/expression">Expression</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/headers-and-footers">Headers and Footers</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" href="/docs/custom-fonts">Customization</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/custom-fonts">Custom Fonts</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/custom-ui">Custom UI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/custom-schemas">Custom Schemas(Plugins)</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/docs/converter">Tools(New)</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/development-guide">Development Guide</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/template-contribution-guide">Template Contribution Guide ❤️</a></li></ul></nav><button type="button" title="Collapse sidebar" aria-label="Collapse sidebar" class="button button--secondary button--outline collapseSidebarButton_PEFL"><svg width="20" height="20" aria-hidden="true" class="collapseSidebarButtonIcon_kv0_"><g fill="#7a7a7a"><path d="M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"></path><path d="M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"></path></g></svg></button></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Expression</span><meta itemprop="position" content="1"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Expression</h1></header>
|
||
<p>Expressions are a feature that evaluates expressions enclosed in <code>{}</code>.<br>
|
||
<!-- -->The simplest example is <code>{1+1}</code>, which evaluates to <code>2</code>.</p>
|
||
<p>In pdfme, expressions can be used not only for simple calculations but also by utilizing user input.</p>
|
||
<p>For example, consider the following template:</p>
|
||
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">{</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "schemas": [</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> [</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "name": "field1",</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "type": "text",</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "content": "Hello world",</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> ...</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "readOnly": false,</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> },</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "name": "field2",</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "type": "text",</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "content": "{field1} !", // Expression!</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> ...</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "readOnly": true,</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> ]</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> ],</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "basePdf": { "width": 210, "height": 297, "padding": [20, 10, 20, 10] },</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "pdfmeVersion": "5.0.0"</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
|
||
<p><code>field2</code> will have the value <code>Hello world !</code>. The expression <code>{field1} !</code> is evaluated like below:</p>
|
||
<p><img decoding="async" loading="lazy" alt="expression" src="/assets/images/expression-7dba0368ea99e7aa1c2057d92cbfd267.png" width="2126" height="1092" class="img_ev3q"></p>
|
||
<p>This means that <code>{field1}</code> is replaced with the value of <code>field1</code>, and <code>!</code> is appended to it.</p>
|
||
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="use-cases">Use Cases<a href="#use-cases" class="hash-link" aria-label="Direct link to Use Cases" title="Direct link to Use Cases"></a></h2>
|
||
<p>The following use cases can be considered:</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="displaying-date-or-page-numbers-in-footer-and-header">Displaying Date or Page Numbers in Footer and Header<a href="#displaying-date-or-page-numbers-in-footer-and-header" class="hash-link" aria-label="Direct link to Displaying Date or Page Numbers in Footer and Header" title="Direct link to Displaying Date or Page Numbers in Footer and Header"></a></h3>
|
||
<p>For example, you might want to display the creation date of the PDF in the header or display page numbers in the footer. Although headers and footers are explained in detail <a href="/docs/headers-and-footers">here</a>, expressions can also be used in the <code>staticSchema</code> used for headers and footers.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="reusing-user-input-for-display">Reusing User Input for Display<a href="#reusing-user-input-for-display" class="hash-link" aria-label="Direct link to Reusing User Input for Display" title="Direct link to Reusing User Input for Display"></a></h3>
|
||
<p>You can reuse values entered by the user for display. For instance, if there are fields <code>firstName</code> and <code>lastName</code> entered by the user, you can concatenate and display them as <code>{firstName + " " + lastName}</code>.</p>
|
||
<p>This improves usability by eliminating the need for users to enter similar information multiple times.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="managing-values-in-one-place">Managing Values in One Place<a href="#managing-values-in-one-place" class="hash-link" aria-label="Direct link to Managing Values in One Place" title="Direct link to Managing Values in One Place"></a></h3>
|
||
<p>By using expressions, you can manage values in one place. For example, if there is a value <code>taxRate</code>, you can simply change <code>taxRate</code>, and it will be reflected in all places where it is used, making changes easier.</p>
|
||
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-use-specifications">How to Use, Specifications<a href="#how-to-use-specifications" class="hash-link" aria-label="Direct link to How to Use, Specifications" title="Direct link to How to Use, Specifications"></a></h2>
|
||
<p>After understanding the overview and use cases, here is an explanation of the specific usage and specifications.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-use-expressions">How to Use Expressions<a href="#how-to-use-expressions" class="hash-link" aria-label="Direct link to How to Use Expressions" title="Direct link to How to Use Expressions"></a></h3>
|
||
<p>Expressions can be used in the <code>schema</code> property when the <code>readOnly</code> property is set to <code>true</code>. From the designer, you can set <code>readOnly</code> by unchecking the <code>Editable</code> checkbox.</p>
|
||
<p>As shown in the GIF below, you can start using expressions by unchecking the <code>Editable</code> checkbox.</p>
|
||
<p><img decoding="async" loading="lazy" alt="Change ReadOnly" src="/assets/images/expression-change-readOnly-66cf6ef614ed110f4c394db84e49c905.gif" width="800" height="481" class="img_ev3q"></p>
|
||
<p>In other words, fields where expressions are used cannot be edited by the user.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="limitations-and-security-of-expressions">Limitations and Security of Expressions<a href="#limitations-and-security-of-expressions" class="hash-link" aria-label="Direct link to Limitations and Security of Expressions" title="Direct link to Limitations and Security of Expressions"></a></h3>
|
||
<ul>
|
||
<li>Only Arrow Functions are supported.</li>
|
||
<li>The <code>eval</code> function cannot be used.</li>
|
||
<li><code>prototype</code> cannot be used.</li>
|
||
<li>Only the following global objects and their methods can be used:<!-- -->
|
||
<ul>
|
||
<li>Math</li>
|
||
<li>String</li>
|
||
<li>Number</li>
|
||
<li>Boolean</li>
|
||
<li>Array</li>
|
||
<li>Object</li>
|
||
<li>Date</li>
|
||
<li>JSON</li>
|
||
<li>isNaN</li>
|
||
<li>parseFloat</li>
|
||
<li>parseInt</li>
|
||
<li>decodeURI</li>
|
||
<li>decodeURIComponent</li>
|
||
<li>encodeURI</li>
|
||
<li>encodeURIComponent</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p>For detailed specifications, refer to <a href="https://github.com/pdfme/pdfme/blob/main/packages/common/src/expression.ts" target="_blank" rel="noopener noreferrer">this implementation</a>.</p>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="variables-that-can-be-used-within-expressions">Variables That Can Be Used Within Expressions<a href="#variables-that-can-be-used-within-expressions" class="hash-link" aria-label="Direct link to Variables That Can Be Used Within Expressions" title="Direct link to Variables That Can Be Used Within Expressions"></a></h3>
|
||
<ul>
|
||
<li><strong>User Input Values</strong>
|
||
<ul>
|
||
<li>Values entered in <a href="/docs/supported-features#multivariable-text">Multivariable Text</a> or <a href="/docs/supported-features#table">Table</a> that can be parsed as JSON can be used after parsing.</li>
|
||
</ul>
|
||
</li>
|
||
<li><strong>Values of Other <code>readOnly</code> Fields</strong>
|
||
<ul>
|
||
<li>If an expression is used in the value of another <code>readOnly</code> field, the value after the expression is evaluated is used.</li>
|
||
</ul>
|
||
</li>
|
||
<li><strong>Embedded Variables</strong>
|
||
<ul>
|
||
<li><code>currentPage</code></li>
|
||
<li><code>totalPages</code></li>
|
||
<li><code>date (YYYY/MM/DD)</code></li>
|
||
<li><code>dateTime (YYYY/MM/DD HH:mm)</code></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="examples-of-expressions">Examples of Expressions<a href="#examples-of-expressions" class="hash-link" aria-label="Direct link to Examples of Expressions" title="Direct link to Examples of Expressions"></a></h3>
|
||
<p>The following are examples of expressions that can be used:</p>
|
||
<ul>
|
||
<li><strong>subtotal:</strong> <code>'{orders.reduce((sum, item) => sum + parseFloat(item[1] || 0) * parseFloat(item[2] || 0), 0)}'</code></li>
|
||
<li><strong>tax:</strong> <code>'{Number(subtotalInput) * Number(tax.rate) / 100}'</code></li>
|
||
<li><strong>total:</strong> <code>'${Number(subtotal) + Number(tax)}'</code></li>
|
||
</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/pdfme/pdfme/tree/main/website/docs/expression.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/tables"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Tables with Dynamic Data</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/headers-and-footers"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Headers and Footers</div></a></nav></div></div><div class="col col--3"><div style="position:sticky;top:76px"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#use-cases" class="table-of-contents__link toc-highlight">Use Cases</a><ul><li><a href="#displaying-date-or-page-numbers-in-footer-and-header" class="table-of-contents__link toc-highlight">Displaying Date or Page Numbers in Footer and Header</a></li><li><a href="#reusing-user-input-for-display" class="table-of-contents__link toc-highlight">Reusing User Input for Display</a></li><li><a href="#managing-values-in-one-place" class="table-of-contents__link toc-highlight">Managing Values in One Place</a></li></ul></li><li><a href="#how-to-use-specifications" class="table-of-contents__link toc-highlight">How to Use, Specifications</a><ul><li><a href="#how-to-use-expressions" class="table-of-contents__link toc-highlight">How to Use Expressions</a></li><li><a href="#limitations-and-security-of-expressions" class="table-of-contents__link toc-highlight">Limitations and Security of Expressions</a></li><li><a href="#variables-that-can-be-used-within-expressions" class="table-of-contents__link toc-highlight">Variables That Can Be Used Within Expressions</a></li><li><a href="#examples-of-expressions" class="table-of-contents__link toc-highlight">Examples of Expressions</a></li></ul></li></ul></div><div><div style="height:16px"></div><a href="https://app.pdfme.com?utm_source=website&utm_content=banner-cloud" target="_blank" rel="noopener noreferrer" style="display:flex;flex-direction:column;align-items:center;color:white;text-decoration:none"><div style="background:linear-gradient(45deg, rgb(37, 194, 160), rgb(32, 166, 137));border-radius:12px;box-shadow:0 4px 15px rgba(37, 194, 160, 0.3);padding:16px;position:relative;overflow:hidden;transition:all 0.3s ease"><div style="position:absolute;width:100px;height:100px;border-radius:50%;background:rgba(255, 255, 255, 0.3);filter:blur(20px);z-index:0;top:-50px;left:-50px"></div><div style="position:absolute;width:100px;height:100px;border-radius:50%;background:rgba(255, 255, 255, 0.3);filter:blur(20px);z-index:0;bottom:-30px;right:-30px"></div><div style="position:relative;z-index:1"><div style="display:flex;align-items:center;font-weight:bold;font-size:16px;margin-bottom:8px;text-shadow:0 2px 4px rgba(0,0,0,0.1)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap" style="margin-right:8px;font-size:24px;filter:drop-shadow(0 2px 2px rgba(0,0,0,0.1))"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg><span>Try pdfme Cloud</span></div><p style="color:rgba(255, 255, 255, 0.95);font-size:12px;text-align:center;line-height:1.4;text-shadow:0 1px 2px rgba(0,0,0,0.1)">No setup needed. Create PDFs in seconds with pdfme Cloud!</p></div></div></a><div style="height:16px"></div><a href="https://app.pdfme.com/contact?utm_source=website&utm_content=banner-support" target="_blank" rel="noopener noreferrer" style="display:flex;flex-direction:column;align-items:center;color:white;text-decoration:none"><div style="background:linear-gradient(45deg, rgb(113, 37, 194), rgb(32, 70, 166));border-radius:12px;box-shadow:0 4px 15px rgba(37, 194, 160, 0.3);padding:16px;position:relative;overflow:hidden;transition:all 0.3s ease"><div style="position:absolute;width:100px;height:100px;border-radius:50%;background:rgba(255, 255, 255, 0.3);filter:blur(20px);z-index:0;top:-50px;left:-50px"></div><div style="position:absolute;width:100px;height:100px;border-radius:50%;background:rgba(255, 255, 255, 0.3);filter:blur(20px);z-index:0;bottom:-30px;right:-30px"></div><div style="position:relative;z-index:1"><div style="display:flex;align-items:center;font-weight:bold;font-size:16px;margin-bottom:8px;text-shadow:0 2px 4px rgba(0,0,0,0.1)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-life-buoy" style="margin-right:8px;font-size:24px;filter:drop-shadow(0 2px 2px rgba(0,0,0,0.1))"><circle cx="12" cy="12" r="10"></circle><path d="m4.93 4.93 4.24 4.24"></path><path d="m14.83 9.17 4.24-4.24"></path><path d="m14.83 14.83 4.24 4.24"></path><path d="m9.17 14.83-4.24 4.24"></path><circle cx="12" cy="12" r="4"></circle></svg><span>Technical Support & Consulting</span></div><p style="color:rgba(255, 255, 255, 0.95);font-size:12px;text-align:center;line-height:1.4;text-shadow:0 1px 2px rgba(0,0,0,0.1)">Need advanced solutions or professional guidance? Our pdfme experts are here to help.</p></div></div></a></div></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Documentation</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting-started">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/supported-features">Supported Features</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/templates">Examples</a></li><li class="footer__item"><a class="footer__link-item" href="/template-design">Template Design</a></li><li class="footer__item"><a href="https://app.pdfme.com?utm_source=website&utm_content=footer" target="_blank" rel="noopener noreferrer" class="footer__link-item">Try pdfme Cloud<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/pdfme/pdfme" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://discord.gg/xWPTJbmgNV" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2025 pdfme</div></div></div></footer></div>
|
||
</body>
|
||
</html> |