<if> : The Conditional Rendering Element
On this page
- Summary
- Usage
- Supported Attributes
- Data Binding and Expressions
- Notes
- Examples
- Basic Conditional Content
- User Role-Based Content
- Conditional Table Sections
- Status-Dependent Styling
- Nested Conditions
- Conditional Warnings and Notices
- Date-Based Content
- Conditional Footers
- Complex Business Logic
- Conditional Images
- Report Sections Based on Data
- Conditional Terms and Conditions
- Conditional Price Display
- Permission-Based Document Sections
- Conditional QR Codes or Barcodes
- Multi-Language Conditional Content
- Conditional Page Breaks
- Invoice Payment Status
- See Also
Summary
The <if> element is a powerful Scryber component that conditionally renders content based on boolean expressions. It enables dynamic content control, allowing you to show or hide sections of your PDF based on data, user permissions, configuration settings, or any boolean condition.
Usage
The <if> element controls content rendering that:
- Shows or hides content based on boolean expressions
- Evaluates conditions during data binding phase
- Supports complex expressions with logical operators
- Can nest other conditional elements
- Integrates seamlessly with data binding
- Removes content completely when false (not just hidden)
- Works with any type of content (text, elements, tables, images)
<!-- Simple condition -->
<if data-test="">
<div>Detailed information here</div>
</if>
<!-- Conditional sections -->
<if data-test="">
<div>Admin-only content</div>
</if>
Supported Attributes
Conditional Attributes
| Attribute | Type | Description |
|---|---|---|
data-test |
boolean expression | Required. Boolean expression that determines if content is rendered. When true, content is included; when false, content is completely omitted. |
data-template |
HTML string | Optional. Inline HTML content to render when condition is true. Overrides child elements. |
Standard Attributes
| Attribute | Type | Description |
|---|---|---|
hidden |
string | Additional visibility control. Set to “hidden” to prevent rendering regardless of test condition. |
Data Binding and Expressions
Boolean Expressions
The data-test attribute accepts any expression that evaluates to a boolean:
<!-- Direct boolean property -->
<if data-test="">Active content</if>
<!-- Comparison operators -->
<if data-test="">Adult content</if>
<if data-test="">Approved content</if>
<!-- Logical operators -->
<if data-test="">Admin active content</if>
<if data-test="">Available</if>
<!-- Negation -->
<if data-test="">Enabled content</if>
Comparison Operators
Supported operators in expressions:
==- Equal to!=- Not equal to>- Greater than>=- Greater than or equal to<- Less than<=- Less than or equal to&&- Logical AND||- Logical OR!- Logical NOT
Null and Empty Checks
<!-- Check for null or empty -->
<if data-test="">
<p></p>
</if>
<!-- String length check -->
<if data-test="">
<p>Items available</p>
</if>
Notes
Rendering Behavior
The <if> element has important rendering characteristics:
- Complete Removal: When false, content is not rendered at all (not just hidden with CSS)
- Data Binding Phase: Evaluation occurs during data binding, before layout
- No Output: The
<if>element itself produces no output in the PDF - Child Content: Only child content is rendered when condition is true
- Performance: False conditions skip all child processing, improving performance
Nesting and Logic
You can nest <if> elements for complex logic:
<if data-test="">
<if data-test="">
<!-- Content shown only if both conditions true -->
</if>
</if>
Alternative Approaches
For simple show/hide, you can also use:
hiddenattribute with expression:<div hidden="">- CSS display:
style="display: "
However, <if> is more efficient as it doesn’t process content at all when false.
Inline Template
The data-template attribute allows inline content definition, useful for simple conditional text:
<if data-test=""
data-template="<span style='color: red; font-weight: bold;'>URGENT</span>">
</if>
Examples
Basic Conditional Content
<!-- Show discount section only if discount exists -->
<if data-test="">
<div style="color: red; font-weight: bold;">
Save %!
</div>
</if>
User Role-Based Content
<!-- Admin-only section -->
<if data-test="">
<div style="background-color: #fff3cd; padding: 10pt; margin: 10pt 0;">
<strong>Admin View:</strong> Internal reference #
</div>
</if>
<!-- Public content always shows -->
<div>
<h2></h2>
<p></p>
</div>
Conditional Table Sections
<table style="width: 100%;">
<thead>
<tr>
<th>Product</th>
<th>Price</th>
<if data-test="">
<th>Cost</th>
<th>Margin</th>
</if>
</tr>
</thead>
<tbody>
<template data-bind="">
<tr>
<td></td>
<td>$</td>
<if data-test="">
<td>$</td>
<td>%</td>
</if>
</tr>
</template>
</tbody>
</table>
Status-Dependent Styling
<div class="order">
<h3>Order #</h3>
<if data-test="">
<div style="color: green; font-weight: bold;">
Status: Completed ✓
</div>
</if>
<if data-test="">
<div style="color: orange; font-weight: bold;">
Status: Pending...
</div>
</if>
<if data-test="">
<div style="color: red; font-weight: bold;">
Status: Cancelled ✗
</div>
</if>
</div>
Nested Conditions
<if data-test="">
<div class="orders-section">
<h2>Your Orders</h2>
<if data-test="">
<template data-bind="">
<div class="order-item">
<span>Order </span>
<if data-test="">
<span style="color: red; font-weight: bold;">RUSH</span>
</if>
</div>
</template>
</if>
<if data-test="">
<p style="color: #666; font-style: italic;">No orders found.</p>
</if>
</div>
</if>
Conditional Warnings and Notices
<!-- Low stock warning -->
<if data-test="">
<div style="background-color: #fff3cd; border: 1pt solid #ffc107;
padding: 10pt; margin: 10pt 0;">
<strong>Warning:</strong> Low stock - only items remaining
</div>
</if>
<!-- Out of stock error -->
<if data-test="">
<div style="background-color: #f8d7da; border: 1pt solid #dc3545;
padding: 10pt; margin: 10pt 0;">
<strong>Error:</strong> Out of stock
</div>
</if>
Date-Based Content
<!-- Show expiration warning if date is soon -->
<if data-test="">
<div style="color: red;">
Expires in days!
</div>
</if>
<!-- Show renewal message if expired -->
<if data-test="">
<div style="background-color: #f8d7da; padding: 10pt;">
This subscription has expired. Please renew.
</div>
</if>
Conditional Footers
<div class="page-footer">
<div style="text-align: center;">
Page <page></page> of <page property="total"></page>
</div>
<if data-test="">
<div style="text-align: center; color: red; font-weight: bold; margin-top: 5pt;">
CONFIDENTIAL - DO NOT DISTRIBUTE
</div>
</if>
<if data-test="">
<div style="text-align: center; color: #666; font-style: italic; margin-top: 5pt;">
DRAFT - Not for Distribution
</div>
</if>
</div>
Complex Business Logic
<if data-test="">
<div style="background-color: #d4edda; border: 1pt solid #28a745; padding: 10pt;">
<strong>Premium Discount Applied!</strong> You saved $
</div>
</if>
<if data-test="">
<div style="background-color: #cce5ff; border: 1pt solid #0066cc; padding: 10pt;">
<strong>Upgrade to Premium</strong> and save on this order!
</div>
</if>
Conditional Images
<if data-test="">
<img src=""
style="width: 200pt; height: 200pt; object-fit: cover;"/>
</if>
<if data-test="">
<div style="width: 200pt; height: 200pt; background-color: #eee;
display: flex; align-items: center; justify-content: center;">
<span style="color: #999;">No image available</span>
</div>
</if>
Report Sections Based on Data
<h1></h1>
<if data-test="">
<section>
<h2>Executive Summary</h2>
<p></p>
</section>
</if>
<if data-test="">
<section>
<h2>Detailed Analysis</h2>
<template data-bind="">
<div><h1 class="no_toc" id="html--the-root-html-document-element"><html> : The Root HTML Document Element</h1>
<hr />
<details open="" class="top-toc">
<summary class="text-delta">
On this page
</summary>
<ul id="markdown-toc">
<li><a href="#summary" id="markdown-toc-summary">Summary</a></li>
<li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
<li><a href="#supported-attributes" id="markdown-toc-supported-attributes">Supported Attributes</a> <ul>
<li><a href="#standard-html-attributes" id="markdown-toc-standard-html-attributes">Standard HTML Attributes</a></li>
<li><a href="#document-structure" id="markdown-toc-document-structure">Document Structure</a></li>
</ul>
</li>
<li><a href="#notes" id="markdown-toc-notes">Notes</a> <ul>
<li><a href="#document-structure-1" id="markdown-toc-document-structure-1">Document Structure</a></li>
<li><a href="#body-vs-frameset" id="markdown-toc-body-vs-frameset">Body vs Frameset</a></li>
<li><a href="#root-styles-user-agent-stylesheet" id="markdown-toc-root-styles-user-agent-stylesheet">Root Styles (User Agent Stylesheet)</a></li>
<li><a href="#css-variables-from-parameters" id="markdown-toc-css-variables-from-parameters">CSS Variables from Parameters</a></li>
<li><a href="#language-attribute" id="markdown-toc-language-attribute">Language Attribute</a></li>
</ul>
</li>
<li><a href="#examples" id="markdown-toc-examples">Examples</a> <ul>
<li><a href="#basic-html-document" id="markdown-toc-basic-html-document">Basic HTML Document</a></li>
<li><a href="#document-with-external-stylesheet" id="markdown-toc-document-with-external-stylesheet">Document with External Stylesheet</a></li>
<li><a href="#document-with-embedded-styles" id="markdown-toc-document-with-embedded-styles">Document with Embedded Styles</a></li>
<li><a href="#document-with-metadata" id="markdown-toc-document-with-metadata">Document with Metadata</a></li>
<li><a href="#document-with-frameset-pdf-merging" id="markdown-toc-document-with-frameset-pdf-merging">Document with Frameset (PDF Merging)</a></li>
<li><a href="#multi-language-document" id="markdown-toc-multi-language-document">Multi-Language Document</a></li>
<li><a href="#document-with-css-variables-from-code" id="markdown-toc-document-with-css-variables-from-code">Document with CSS Variables from Code</a></li>
<li><a href="#document-with-security-settings" id="markdown-toc-document-with-security-settings">Document with Security Settings</a></li>
<li><a href="#complete-invoice-example" id="markdown-toc-complete-invoice-example">Complete Invoice Example</a></li>
</ul>
</li>
<li><a href="#see-also" id="markdown-toc-see-also">See Also</a></li>
</ul>
</details>
<hr />
<h2 id="summary">Summary</h2>
<p>The <code class="language-plaintext highlighter-rouge"><html></code> element is the root element of an HTML document. It contains all other elements and defines the document structure with a head section for metadata and a body (or frameset) section for content.</p>
<h2 id="usage">Usage</h2>
<p>The <code class="language-plaintext highlighter-rouge"><html></code> element serves as the document root that:</p>
<ul>
<li>Contains the <code class="language-plaintext highlighter-rouge"><head></code> element for metadata, styles, and configuration</li>
<li>Contains either a <code class="language-plaintext highlighter-rouge"><body></code> element for content OR a <code class="language-plaintext highlighter-rouge"><frameset></code> element for PDF merging</li>
<li>Defines the document language with the <code class="language-plaintext highlighter-rouge">lang</code> attribute</li>
<li>Applies default styling and user-agent styles to all child elements</li>
<li>Manages CSS variable (<code class="language-plaintext highlighter-rouge">:root</code>) definitions from document parameters</li>
</ul>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span> <span class="nt">/></span>
<span class="nt"><title></span>My PDF Document<span class="nt"></title></span>
<span class="nt"><style></span>
<span class="nt">body</span> <span class="p">{</span> <span class="nl">font-family</span><span class="p">:</span> <span class="n">Arial</span><span class="p">,</span> <span class="nb">sans-serif</span><span class="p">;</span> <span class="p">}</span>
<span class="nt"></style></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Document Content<span class="nt"></h1></span>
<span class="nt"><p></span>This is the main content of the PDF.<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<hr />
<h2 id="supported-attributes">Supported Attributes</h2>
<h3 id="standard-html-attributes">Standard HTML Attributes</h3>
<table>
<thead>
<tr>
<th>Attribute</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">lang</code></td>
<td>string</td>
<td>Specifies the language of the document (e.g., “en”, “es”, “fr”).</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">title</code></td>
<td>string</td>
<td>Sets the outline/bookmark title for the document.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">class</code></td>
<td>string</td>
<td>CSS class name(s) for styling the document.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">hidden</code></td>
<td>string</td>
<td>Controls document visibility. Set to “hidden” to hide.</td>
</tr>
</tbody>
</table>
<h3 id="document-structure">Document Structure</h3>
<p>The <code class="language-plaintext highlighter-rouge"><html></code> element must contain:</p>
<ul>
<li><strong>One <code class="language-plaintext highlighter-rouge"><head></code> element</strong> (optional but recommended) - Contains metadata</li>
<li><strong>Either</strong> a <code class="language-plaintext highlighter-rouge"><body></code> element OR a <code class="language-plaintext highlighter-rouge"><frameset></code> element (not both)</li>
</ul>
<p>If both body and frameset are specified, an <code class="language-plaintext highlighter-rouge">InvalidOperationException</code> will be thrown.</p>
<hr />
<h2 id="notes">Notes</h2>
<h3 id="document-structure-1">Document Structure</h3>
<p>The HTML element enforces proper document structure:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><html>
├─ <head> (metadata, styles, configuration)
└─ <body> (content pages)
OR
└─ <frameset> (PDF merging/modification)
</code></pre></div></div>
<h3 id="body-vs-frameset">Body vs Frameset</h3>
<p><strong>Use <code class="language-plaintext highlighter-rouge"><body></code></strong> when:</p>
<ul>
<li>Creating new document content</li>
<li>Generating PDFs from templates</li>
<li>Standard document generation</li>
</ul>
<p><strong>Use <code class="language-plaintext highlighter-rouge"><frameset></code></strong> when:</p>
<ul>
<li>Merging existing PDF files</li>
<li>Filling forms in existing PDFs</li>
<li>Adding content to existing documents</li>
<li>Combining multiple PDF sources</li>
</ul>
<p>You <strong>cannot</strong> use both body and frameset in the same document.</p>
<h3 id="root-styles-user-agent-stylesheet">Root Styles (User Agent Stylesheet)</h3>
<p>The HTML element automatically applies user-agent styles to elements, including:</p>
<ul>
<li>Quote marks for <code class="language-plaintext highlighter-rouge"><q></code> elements (<code class="language-plaintext highlighter-rouge">:before</code> and <code class="language-plaintext highlighter-rouge">:after</code> pseudo-elements)</li>
<li>Default typography and spacing rules</li>
<li>CSS variable definitions from document parameters</li>
</ul>
<h3 id="css-variables-from-parameters">CSS Variables from Parameters</h3>
<p>Document parameters starting with <code class="language-plaintext highlighter-rouge">--</code> are automatically added to the <code class="language-plaintext highlighter-rouge">:root</code> CSS context:</p>
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"--primary-color"</span><span class="p">]</span> <span class="p">=</span> <span class="s">"#336699"</span><span class="p">;</span>
<span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"--font-size"</span><span class="p">]</span> <span class="p">=</span> <span class="s">"12pt"</span><span class="p">;</span>
</code></pre></div></div>
<p>These become available as CSS variables:</p>
<div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">h1</span> <span class="p">{</span> <span class="nl">color</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--primary-color</span><span class="p">);</span> <span class="p">}</span>
<span class="nt">body</span> <span class="p">{</span> <span class="nl">font-size</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--font-size</span><span class="p">);</span> <span class="p">}</span>
</code></pre></div></div>
<h3 id="language-attribute">Language Attribute</h3>
<p>The <code class="language-plaintext highlighter-rouge">lang</code> attribute specifies the document’s language but does not affect text rendering in the current version. It’s primarily for semantic correctness.</p>
<hr />
<h2 id="examples">Examples</h2>
<h3 id="basic-html-document">Basic HTML Document</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Simple PDF Document<span class="nt"></title></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Hello World<span class="nt"></h1></span>
<span class="nt"><p></span>This is a basic PDF document.<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-external-stylesheet">Document with External Stylesheet</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Styled Document<span class="nt"></title></span>
<span class="nt"><link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"styles/main.css"</span> <span class="nt">/></span>
<span class="nt"><link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"styles/print.css"</span> <span class="nt">/></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Professional Document<span class="nt"></h1></span>
<span class="nt"><p></span>Content styled with external CSS.<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-embedded-styles">Document with Embedded Styles</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Invoice<span class="nt"></title></span>
<span class="nt"><style></span>
<span class="nd">:root</span> <span class="p">{</span>
<span class="py">--primary-color</span><span class="p">:</span> <span class="m">#336699</span><span class="p">;</span>
<span class="py">--secondary-color</span><span class="p">:</span> <span class="m">#999</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">body</span> <span class="p">{</span>
<span class="nl">font-family</span><span class="p">:</span> <span class="n">Arial</span><span class="p">,</span> <span class="nb">sans-serif</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">11pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">h1</span> <span class="p">{</span>
<span class="nl">color</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--primary-color</span><span class="p">);</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">24pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.invoice-table</span> <span class="p">{</span>
<span class="nl">width</span><span class="p">:</span> <span class="m">100%</span><span class="p">;</span>
<span class="nl">border-collapse</span><span class="p">:</span> <span class="nb">collapse</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt"></style></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Invoice #12345<span class="nt"></h1></span>
<span class="nt"><table</span> <span class="na">class=</span><span class="s">"invoice-table"</span><span class="nt">></span>
<span class="nt"><tr></span>
<span class="nt"><td></span>Item<span class="nt"></td></span>
<span class="nt"><td></span>Amount<span class="nt"></td></span>
<span class="nt"></tr></span>
<span class="nt"></table></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-metadata">Document with Metadata</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Corporate Report<span class="nt"></title></span>
<span class="nt"><meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"author"</span> <span class="na">content=</span><span class="s">"John Smith"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"subject"</span> <span class="na">content=</span><span class="s">"Q4 2024 Financial Report"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"keywords"</span> <span class="na">content=</span><span class="s">"finance, quarterly, report, 2024"</span> <span class="nt">/></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Q4 2024 Financial Report<span class="nt"></h1></span>
<span class="nt"><p></span>Report content...<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-frameset-pdf-merging">Document with Frameset (PDF Merging)</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Filled Form<span class="nt"></title></span>
<span class="nt"></head></span>
<span class="nt"><frameset></span>
<span class="nt"><frame</span> <span class="na">src=</span><span class="s">"forms/template.pdf"</span> <span class="na">data-page-start=</span><span class="s">"0"</span> <span class="na">data-page-count=</span><span class="s">"-1"</span><span class="nt">></span>
<span class="c"><!-- Content to overlay on existing PDF --></span>
<span class="nt"><div</span> <span class="na">style=</span><span class="s">"position: absolute; top: 100pt; left: 50pt;"</span><span class="nt">></span>
<span class="nt"><p></p></span>
<span class="nt"></div></span>
<span class="nt"></frame></span>
<span class="nt"></frameset></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="multi-language-document">Multi-Language Document</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"es"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span> <span class="nt">/></span>
<span class="nt"><title></span>Documento en Español<span class="nt"></title></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"author"</span> <span class="na">content=</span><span class="s">"María García"</span> <span class="nt">/></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Bienvenido<span class="nt"></h1></span>
<span class="nt"><p></span>Este es un documento PDF en español.<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-css-variables-from-code">Document with CSS Variables from Code</h3>
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// C# Code</span>
<span class="kt">var</span> <span class="n">path</span> <span class="p">=</span> <span class="s">"templates/branded-document.html"</span><span class="p">;</span>
<span class="k">using</span> <span class="p">(</span><span class="kt">var</span> <span class="n">doc</span> <span class="p">=</span> <span class="n">Document</span><span class="p">.</span><span class="nf">ParseDocument</span><span class="p">(</span><span class="n">path</span><span class="p">))</span>
<span class="p">{</span>
<span class="c1">// Set CSS variables via parameters</span>
<span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"--brand-color"</span><span class="p">]</span> <span class="p">=</span> <span class="s">"#FF6600"</span><span class="p">;</span>
<span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"--brand-font"</span><span class="p">]</span> <span class="p">=</span> <span class="s">"Helvetica"</span><span class="p">;</span>
<span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"--logo-url"</span><span class="p">]</span> <span class="p">=</span> <span class="s">"url('images/logo.png')"</span><span class="p">;</span>
<span class="c1">// Set content parameters</span>
<span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"model"</span><span class="p">]</span> <span class="p">=</span> <span class="k">new</span> <span class="p">{</span>
<span class="n">title</span> <span class="p">=</span> <span class="s">"Branded Report"</span><span class="p">,</span>
<span class="n">content</span> <span class="p">=</span> <span class="s">"Document content here"</span>
<span class="p">};</span>
<span class="k">using</span> <span class="p">(</span><span class="kt">var</span> <span class="n">stream</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">FileStream</span><span class="p">(</span><span class="s">"output.pdf"</span><span class="p">,</span> <span class="n">FileMode</span><span class="p">.</span><span class="n">Create</span><span class="p">))</span>
<span class="p">{</span>
<span class="n">doc</span><span class="p">.</span><span class="nf">SaveAsPDF</span><span class="p">(</span><span class="n">stream</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"><!-- HTML Template: branded-document.html --></span>
<span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></title></span>
<span class="nt"><style></span>
<span class="nt">body</span> <span class="p">{</span>
<span class="nl">font-family</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--brand-font</span><span class="p">),</span> <span class="nb">sans-serif</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">h1</span> <span class="p">{</span>
<span class="nl">color</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--brand-color</span><span class="p">);</span>
<span class="p">}</span>
<span class="nc">.header</span> <span class="p">{</span>
<span class="nl">background-image</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--logo-url</span><span class="p">);</span>
<span class="nl">background-repeat</span><span class="p">:</span> <span class="nb">no-repeat</span><span class="p">;</span>
<span class="nl">background-position</span><span class="p">:</span> <span class="nb">left</span> <span class="nb">center</span><span class="p">;</span>
<span class="nl">padding-left</span><span class="p">:</span> <span class="m">60pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt"></style></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"header"</span><span class="nt">></span>
<span class="nt"><h1></h1></span>
<span class="nt"></div></span>
<span class="nt"><p></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-security-settings">Document with Security Settings</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Confidential Report<span class="nt"></title></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"author"</span> <span class="na">content=</span><span class="s">"Security Department"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"pdf-user-password"</span> <span class="na">content=</span><span class="s">"user123"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"pdf-owner-password"</span> <span class="na">content=</span><span class="s">"owner456"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"pdf-allow-print"</span> <span class="na">content=</span><span class="s">"false"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"pdf-allow-copy"</span> <span class="na">content=</span><span class="s">"false"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"pdf-allow-modify"</span> <span class="na">content=</span><span class="s">"false"</span> <span class="nt">/></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Confidential Information<span class="nt"></h1></span>
<span class="nt"><p></span>This document is protected and encrypted.<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="complete-invoice-example">Complete Invoice Example</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Invoice #<span class="nt"></title></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"author"</span> <span class="na">content=</span><span class="s">""</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"subject"</span> <span class="na">content=</span><span class="s">"Invoice for "</span> <span class="nt">/></span>
<span class="nt"><style></span>
<span class="nd">:root</span> <span class="p">{</span>
<span class="py">--primary-color</span><span class="p">:</span> <span class="m">#2c3e50</span><span class="p">;</span>
<span class="py">--accent-color</span><span class="p">:</span> <span class="m">#3498db</span><span class="p">;</span>
<span class="py">--border-color</span><span class="p">:</span> <span class="m">#bdc3c7</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">body</span> <span class="p">{</span>
<span class="nl">font-family</span><span class="p">:</span> <span class="n">Arial</span><span class="p">,</span> <span class="nb">sans-serif</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">10pt</span><span class="p">;</span>
<span class="nl">margin</span><span class="p">:</span> <span class="m">40pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.header</span> <span class="p">{</span>
<span class="nl">border-bottom</span><span class="p">:</span> <span class="m">2pt</span> <span class="nb">solid</span> <span class="n">var</span><span class="p">(</span><span class="n">--primary-color</span><span class="p">);</span>
<span class="nl">margin-bottom</span><span class="p">:</span> <span class="m">20pt</span><span class="p">;</span>
<span class="nl">padding-bottom</span><span class="p">:</span> <span class="m">10pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.invoice-title</span> <span class="p">{</span>
<span class="nl">color</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--primary-color</span><span class="p">);</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">28pt</span><span class="p">;</span>
<span class="nl">font-weight</span><span class="p">:</span> <span class="nb">bold</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.invoice-table</span> <span class="p">{</span>
<span class="nl">width</span><span class="p">:</span> <span class="m">100%</span><span class="p">;</span>
<span class="nl">border-collapse</span><span class="p">:</span> <span class="nb">collapse</span><span class="p">;</span>
<span class="nl">margin-top</span><span class="p">:</span> <span class="m">20pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.invoice-table</span> <span class="nt">th</span> <span class="p">{</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--primary-color</span><span class="p">);</span>
<span class="nl">color</span><span class="p">:</span> <span class="no">white</span><span class="p">;</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">8pt</span><span class="p">;</span>
<span class="nl">text-align</span><span class="p">:</span> <span class="nb">left</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.invoice-table</span> <span class="nt">td</span> <span class="p">{</span>
<span class="nl">border-bottom</span><span class="p">:</span> <span class="m">1pt</span> <span class="nb">solid</span> <span class="n">var</span><span class="p">(</span><span class="n">--border-color</span><span class="p">);</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">8pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.total-row</span> <span class="p">{</span>
<span class="nl">font-weight</span><span class="p">:</span> <span class="nb">bold</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">12pt</span><span class="p">;</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="m">#ecf0f1</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt"></style></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"header"</span><span class="nt">></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"invoice-title"</span><span class="nt">></span>INVOICE<span class="nt"></div></span>
<span class="nt"><div></span>Invoice #: <span class="nt"></div></span>
<span class="nt"><div></span>Date: <span class="nt"></div></span>
<span class="nt"></div></span>
<span class="nt"><div</span> <span class="na">style=</span><span class="s">"margin-bottom: 20pt;"</span><span class="nt">></span>
<span class="nt"><strong></span>Bill To:<span class="nt"></strong><br/></span>
<span class="nt"><br/></span>
<span class="nt"></div></span>
<span class="nt"><table</span> <span class="na">class=</span><span class="s">"invoice-table"</span><span class="nt">></span>
<span class="nt"><thead></span>
<span class="nt"><tr></span>
<span class="nt"><th></span>Description<span class="nt"></th></span>
<span class="nt"><th></span>Quantity<span class="nt"></th></span>
<span class="nt"><th></span>Unit Price<span class="nt"></th></span>
<span class="nt"><th></span>Total<span class="nt"></th></span>
<span class="nt"></tr></span>
<span class="nt"></thead></span>
<span class="nt"><tbody></span>
<span class="nt"><template</span> <span class="na">data-bind=</span><span class="s">""</span><span class="nt">></span>
<span class="nt"><tr></span>
<span class="nt"><td></td></span>
<span class="nt"><td></td></span>
<span class="nt"><td></span>$<span class="nt"></td></span>
<span class="nt"><td></span>$<span class="nt"></td></span>
<span class="nt"></tr></span>
<span class="nt"></template></span>
<span class="nt"><tr</span> <span class="na">class=</span><span class="s">"total-row"</span><span class="nt">></span>
<span class="nt"><td</span> <span class="na">colspan=</span><span class="s">"3"</span> <span class="na">style=</span><span class="s">"text-align: right;"</span><span class="nt">></span>TOTAL:<span class="nt"></td></span>
<span class="nt"><td></span>$<span class="nt"></td></span>
<span class="nt"></tr></span>
<span class="nt"></tbody></span>
<span class="nt"></table></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<hr />
<h2 id="see-also">See Also</h2>
<ul>
<li><a href="/reference/htmltags/head.html">head</a> - Document head for metadata</li>
<li><a href="/reference/htmltags/body.html">body</a> - Document body for content</li>
<li><a href="/reference/htmltags/frameset.html">frameset</a> - Frameset for PDF merging</li>
<li><a href="/reference/htmltags/meta.html">meta</a> - Metadata elements</li>
<li><a href="/reference/htmltags/style.html">style</a> - Embedded styles</li>
<li><a href="/reference/htmltags/link.html">link</a> - External stylesheets</li>
</ul>
<hr />
</div>
</template>
</section>
</if>
<if data-test="">
<section>
<h2>Charts and Graphs</h2>
<!-- Chart content -->
</section>
</if>
Conditional Terms and Conditions
<h2>Terms and Conditions</h2>
<div></div>
<if data-test="">
<div style="margin-top: 15pt;">
<h3>Enterprise Terms</h3>
<p></p>
</div>
</if>
<if data-test="">
<div style="margin-top: 15pt;">
<h3>Custom Terms</h3>
<p></p>
</div>
</if>
Conditional Price Display
<div class="product-price">
<if data-test="">
<div>
<span style="text-decoration: line-through; color: #999;">
$
</span>
<span style="color: red; font-weight: bold; font-size: 14pt; margin-left: 10pt;">
$
</span>
</div>
</if>
<if data-test="">
<div style="font-size: 14pt; font-weight: bold;">
$
</div>
</if>
</div>
Permission-Based Document Sections
<div class="document">
<!-- Public section - always visible -->
<section>
<h2>Overview</h2>
<p></p>
</section>
<!-- Member-only section -->
<if data-test="">
<section style="page-break-before: always;">
<h2>Member Information</h2>
<p></p>
</section>
</if>
<!-- Premium member section -->
<if data-test="">
<section style="page-break-before: always;">
<h2>Premium Analysis</h2>
<p></p>
</section>
</if>
<!-- Admin section -->
<if data-test="">
<section style="page-break-before: always; background-color: #f0f0f0;">
<h2>Administrative Data</h2>
<p></p>
</section>
</if>
</div>
Conditional QR Codes or Barcodes
<if data-test="">
<div style="text-align: center; margin: 20pt 0;">
<img src="" style="width: 100pt; height: 100pt;"/>
<div style="font-size: 8pt; color: #666; margin-top: 5pt;">
Scan for more information
</div>
</div>
</if>
Multi-Language Conditional Content
<if data-test="">
<div>
<h1>Welcome</h1>
<p>Thank you for your order.</p>
</div>
</if>
<if data-test="">
<div>
<h1>Bienvenido</h1>
<p>Gracias por su pedido.</p>
</div>
</if>
<if data-test="">
<div>
<h1>Bienvenue</h1>
<p>Merci pour votre commande.</p>
</div>
</if>
Conditional Page Breaks
<template data-bind="">
<div class="section">
<h2></h2>
<p><h1 class="no_toc" id="html--the-root-html-document-element"><html> : The Root HTML Document Element</h1>
<hr />
<details open="" class="top-toc">
<summary class="text-delta">
On this page
</summary>
<ul id="markdown-toc">
<li><a href="#summary" id="markdown-toc-summary">Summary</a></li>
<li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
<li><a href="#supported-attributes" id="markdown-toc-supported-attributes">Supported Attributes</a> <ul>
<li><a href="#standard-html-attributes" id="markdown-toc-standard-html-attributes">Standard HTML Attributes</a></li>
<li><a href="#document-structure" id="markdown-toc-document-structure">Document Structure</a></li>
</ul>
</li>
<li><a href="#notes" id="markdown-toc-notes">Notes</a> <ul>
<li><a href="#document-structure-1" id="markdown-toc-document-structure-1">Document Structure</a></li>
<li><a href="#body-vs-frameset" id="markdown-toc-body-vs-frameset">Body vs Frameset</a></li>
<li><a href="#root-styles-user-agent-stylesheet" id="markdown-toc-root-styles-user-agent-stylesheet">Root Styles (User Agent Stylesheet)</a></li>
<li><a href="#css-variables-from-parameters" id="markdown-toc-css-variables-from-parameters">CSS Variables from Parameters</a></li>
<li><a href="#language-attribute" id="markdown-toc-language-attribute">Language Attribute</a></li>
</ul>
</li>
<li><a href="#examples" id="markdown-toc-examples">Examples</a> <ul>
<li><a href="#basic-html-document" id="markdown-toc-basic-html-document">Basic HTML Document</a></li>
<li><a href="#document-with-external-stylesheet" id="markdown-toc-document-with-external-stylesheet">Document with External Stylesheet</a></li>
<li><a href="#document-with-embedded-styles" id="markdown-toc-document-with-embedded-styles">Document with Embedded Styles</a></li>
<li><a href="#document-with-metadata" id="markdown-toc-document-with-metadata">Document with Metadata</a></li>
<li><a href="#document-with-frameset-pdf-merging" id="markdown-toc-document-with-frameset-pdf-merging">Document with Frameset (PDF Merging)</a></li>
<li><a href="#multi-language-document" id="markdown-toc-multi-language-document">Multi-Language Document</a></li>
<li><a href="#document-with-css-variables-from-code" id="markdown-toc-document-with-css-variables-from-code">Document with CSS Variables from Code</a></li>
<li><a href="#document-with-security-settings" id="markdown-toc-document-with-security-settings">Document with Security Settings</a></li>
<li><a href="#complete-invoice-example" id="markdown-toc-complete-invoice-example">Complete Invoice Example</a></li>
</ul>
</li>
<li><a href="#see-also" id="markdown-toc-see-also">See Also</a></li>
</ul>
</details>
<hr />
<h2 id="summary">Summary</h2>
<p>The <code class="language-plaintext highlighter-rouge"><html></code> element is the root element of an HTML document. It contains all other elements and defines the document structure with a head section for metadata and a body (or frameset) section for content.</p>
<h2 id="usage">Usage</h2>
<p>The <code class="language-plaintext highlighter-rouge"><html></code> element serves as the document root that:</p>
<ul>
<li>Contains the <code class="language-plaintext highlighter-rouge"><head></code> element for metadata, styles, and configuration</li>
<li>Contains either a <code class="language-plaintext highlighter-rouge"><body></code> element for content OR a <code class="language-plaintext highlighter-rouge"><frameset></code> element for PDF merging</li>
<li>Defines the document language with the <code class="language-plaintext highlighter-rouge">lang</code> attribute</li>
<li>Applies default styling and user-agent styles to all child elements</li>
<li>Manages CSS variable (<code class="language-plaintext highlighter-rouge">:root</code>) definitions from document parameters</li>
</ul>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span> <span class="nt">/></span>
<span class="nt"><title></span>My PDF Document<span class="nt"></title></span>
<span class="nt"><style></span>
<span class="nt">body</span> <span class="p">{</span> <span class="nl">font-family</span><span class="p">:</span> <span class="n">Arial</span><span class="p">,</span> <span class="nb">sans-serif</span><span class="p">;</span> <span class="p">}</span>
<span class="nt"></style></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Document Content<span class="nt"></h1></span>
<span class="nt"><p></span>This is the main content of the PDF.<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<hr />
<h2 id="supported-attributes">Supported Attributes</h2>
<h3 id="standard-html-attributes">Standard HTML Attributes</h3>
<table>
<thead>
<tr>
<th>Attribute</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">lang</code></td>
<td>string</td>
<td>Specifies the language of the document (e.g., “en”, “es”, “fr”).</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">title</code></td>
<td>string</td>
<td>Sets the outline/bookmark title for the document.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">class</code></td>
<td>string</td>
<td>CSS class name(s) for styling the document.</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">hidden</code></td>
<td>string</td>
<td>Controls document visibility. Set to “hidden” to hide.</td>
</tr>
</tbody>
</table>
<h3 id="document-structure">Document Structure</h3>
<p>The <code class="language-plaintext highlighter-rouge"><html></code> element must contain:</p>
<ul>
<li><strong>One <code class="language-plaintext highlighter-rouge"><head></code> element</strong> (optional but recommended) - Contains metadata</li>
<li><strong>Either</strong> a <code class="language-plaintext highlighter-rouge"><body></code> element OR a <code class="language-plaintext highlighter-rouge"><frameset></code> element (not both)</li>
</ul>
<p>If both body and frameset are specified, an <code class="language-plaintext highlighter-rouge">InvalidOperationException</code> will be thrown.</p>
<hr />
<h2 id="notes">Notes</h2>
<h3 id="document-structure-1">Document Structure</h3>
<p>The HTML element enforces proper document structure:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><html>
├─ <head> (metadata, styles, configuration)
└─ <body> (content pages)
OR
└─ <frameset> (PDF merging/modification)
</code></pre></div></div>
<h3 id="body-vs-frameset">Body vs Frameset</h3>
<p><strong>Use <code class="language-plaintext highlighter-rouge"><body></code></strong> when:</p>
<ul>
<li>Creating new document content</li>
<li>Generating PDFs from templates</li>
<li>Standard document generation</li>
</ul>
<p><strong>Use <code class="language-plaintext highlighter-rouge"><frameset></code></strong> when:</p>
<ul>
<li>Merging existing PDF files</li>
<li>Filling forms in existing PDFs</li>
<li>Adding content to existing documents</li>
<li>Combining multiple PDF sources</li>
</ul>
<p>You <strong>cannot</strong> use both body and frameset in the same document.</p>
<h3 id="root-styles-user-agent-stylesheet">Root Styles (User Agent Stylesheet)</h3>
<p>The HTML element automatically applies user-agent styles to elements, including:</p>
<ul>
<li>Quote marks for <code class="language-plaintext highlighter-rouge"><q></code> elements (<code class="language-plaintext highlighter-rouge">:before</code> and <code class="language-plaintext highlighter-rouge">:after</code> pseudo-elements)</li>
<li>Default typography and spacing rules</li>
<li>CSS variable definitions from document parameters</li>
</ul>
<h3 id="css-variables-from-parameters">CSS Variables from Parameters</h3>
<p>Document parameters starting with <code class="language-plaintext highlighter-rouge">--</code> are automatically added to the <code class="language-plaintext highlighter-rouge">:root</code> CSS context:</p>
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"--primary-color"</span><span class="p">]</span> <span class="p">=</span> <span class="s">"#336699"</span><span class="p">;</span>
<span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"--font-size"</span><span class="p">]</span> <span class="p">=</span> <span class="s">"12pt"</span><span class="p">;</span>
</code></pre></div></div>
<p>These become available as CSS variables:</p>
<div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">h1</span> <span class="p">{</span> <span class="nl">color</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--primary-color</span><span class="p">);</span> <span class="p">}</span>
<span class="nt">body</span> <span class="p">{</span> <span class="nl">font-size</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--font-size</span><span class="p">);</span> <span class="p">}</span>
</code></pre></div></div>
<h3 id="language-attribute">Language Attribute</h3>
<p>The <code class="language-plaintext highlighter-rouge">lang</code> attribute specifies the document’s language but does not affect text rendering in the current version. It’s primarily for semantic correctness.</p>
<hr />
<h2 id="examples">Examples</h2>
<h3 id="basic-html-document">Basic HTML Document</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Simple PDF Document<span class="nt"></title></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Hello World<span class="nt"></h1></span>
<span class="nt"><p></span>This is a basic PDF document.<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-external-stylesheet">Document with External Stylesheet</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Styled Document<span class="nt"></title></span>
<span class="nt"><link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"styles/main.css"</span> <span class="nt">/></span>
<span class="nt"><link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"styles/print.css"</span> <span class="nt">/></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Professional Document<span class="nt"></h1></span>
<span class="nt"><p></span>Content styled with external CSS.<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-embedded-styles">Document with Embedded Styles</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Invoice<span class="nt"></title></span>
<span class="nt"><style></span>
<span class="nd">:root</span> <span class="p">{</span>
<span class="py">--primary-color</span><span class="p">:</span> <span class="m">#336699</span><span class="p">;</span>
<span class="py">--secondary-color</span><span class="p">:</span> <span class="m">#999</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">body</span> <span class="p">{</span>
<span class="nl">font-family</span><span class="p">:</span> <span class="n">Arial</span><span class="p">,</span> <span class="nb">sans-serif</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">11pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">h1</span> <span class="p">{</span>
<span class="nl">color</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--primary-color</span><span class="p">);</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">24pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.invoice-table</span> <span class="p">{</span>
<span class="nl">width</span><span class="p">:</span> <span class="m">100%</span><span class="p">;</span>
<span class="nl">border-collapse</span><span class="p">:</span> <span class="nb">collapse</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt"></style></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Invoice #12345<span class="nt"></h1></span>
<span class="nt"><table</span> <span class="na">class=</span><span class="s">"invoice-table"</span><span class="nt">></span>
<span class="nt"><tr></span>
<span class="nt"><td></span>Item<span class="nt"></td></span>
<span class="nt"><td></span>Amount<span class="nt"></td></span>
<span class="nt"></tr></span>
<span class="nt"></table></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-metadata">Document with Metadata</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Corporate Report<span class="nt"></title></span>
<span class="nt"><meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"author"</span> <span class="na">content=</span><span class="s">"John Smith"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"subject"</span> <span class="na">content=</span><span class="s">"Q4 2024 Financial Report"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"keywords"</span> <span class="na">content=</span><span class="s">"finance, quarterly, report, 2024"</span> <span class="nt">/></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Q4 2024 Financial Report<span class="nt"></h1></span>
<span class="nt"><p></span>Report content...<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-frameset-pdf-merging">Document with Frameset (PDF Merging)</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Filled Form<span class="nt"></title></span>
<span class="nt"></head></span>
<span class="nt"><frameset></span>
<span class="nt"><frame</span> <span class="na">src=</span><span class="s">"forms/template.pdf"</span> <span class="na">data-page-start=</span><span class="s">"0"</span> <span class="na">data-page-count=</span><span class="s">"-1"</span><span class="nt">></span>
<span class="c"><!-- Content to overlay on existing PDF --></span>
<span class="nt"><div</span> <span class="na">style=</span><span class="s">"position: absolute; top: 100pt; left: 50pt;"</span><span class="nt">></span>
<span class="nt"><p></p></span>
<span class="nt"></div></span>
<span class="nt"></frame></span>
<span class="nt"></frameset></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="multi-language-document">Multi-Language Document</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"es"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span> <span class="nt">/></span>
<span class="nt"><title></span>Documento en Español<span class="nt"></title></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"author"</span> <span class="na">content=</span><span class="s">"María García"</span> <span class="nt">/></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Bienvenido<span class="nt"></h1></span>
<span class="nt"><p></span>Este es un documento PDF en español.<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-css-variables-from-code">Document with CSS Variables from Code</h3>
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// C# Code</span>
<span class="kt">var</span> <span class="n">path</span> <span class="p">=</span> <span class="s">"templates/branded-document.html"</span><span class="p">;</span>
<span class="k">using</span> <span class="p">(</span><span class="kt">var</span> <span class="n">doc</span> <span class="p">=</span> <span class="n">Document</span><span class="p">.</span><span class="nf">ParseDocument</span><span class="p">(</span><span class="n">path</span><span class="p">))</span>
<span class="p">{</span>
<span class="c1">// Set CSS variables via parameters</span>
<span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"--brand-color"</span><span class="p">]</span> <span class="p">=</span> <span class="s">"#FF6600"</span><span class="p">;</span>
<span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"--brand-font"</span><span class="p">]</span> <span class="p">=</span> <span class="s">"Helvetica"</span><span class="p">;</span>
<span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"--logo-url"</span><span class="p">]</span> <span class="p">=</span> <span class="s">"url('images/logo.png')"</span><span class="p">;</span>
<span class="c1">// Set content parameters</span>
<span class="n">doc</span><span class="p">.</span><span class="n">Params</span><span class="p">[</span><span class="s">"model"</span><span class="p">]</span> <span class="p">=</span> <span class="k">new</span> <span class="p">{</span>
<span class="n">title</span> <span class="p">=</span> <span class="s">"Branded Report"</span><span class="p">,</span>
<span class="n">content</span> <span class="p">=</span> <span class="s">"Document content here"</span>
<span class="p">};</span>
<span class="k">using</span> <span class="p">(</span><span class="kt">var</span> <span class="n">stream</span> <span class="p">=</span> <span class="k">new</span> <span class="nf">FileStream</span><span class="p">(</span><span class="s">"output.pdf"</span><span class="p">,</span> <span class="n">FileMode</span><span class="p">.</span><span class="n">Create</span><span class="p">))</span>
<span class="p">{</span>
<span class="n">doc</span><span class="p">.</span><span class="nf">SaveAsPDF</span><span class="p">(</span><span class="n">stream</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"><!-- HTML Template: branded-document.html --></span>
<span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></title></span>
<span class="nt"><style></span>
<span class="nt">body</span> <span class="p">{</span>
<span class="nl">font-family</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--brand-font</span><span class="p">),</span> <span class="nb">sans-serif</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">h1</span> <span class="p">{</span>
<span class="nl">color</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--brand-color</span><span class="p">);</span>
<span class="p">}</span>
<span class="nc">.header</span> <span class="p">{</span>
<span class="nl">background-image</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--logo-url</span><span class="p">);</span>
<span class="nl">background-repeat</span><span class="p">:</span> <span class="nb">no-repeat</span><span class="p">;</span>
<span class="nl">background-position</span><span class="p">:</span> <span class="nb">left</span> <span class="nb">center</span><span class="p">;</span>
<span class="nl">padding-left</span><span class="p">:</span> <span class="m">60pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt"></style></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"header"</span><span class="nt">></span>
<span class="nt"><h1></h1></span>
<span class="nt"></div></span>
<span class="nt"><p></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="document-with-security-settings">Document with Security Settings</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Confidential Report<span class="nt"></title></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"author"</span> <span class="na">content=</span><span class="s">"Security Department"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"pdf-user-password"</span> <span class="na">content=</span><span class="s">"user123"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"pdf-owner-password"</span> <span class="na">content=</span><span class="s">"owner456"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"pdf-allow-print"</span> <span class="na">content=</span><span class="s">"false"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"pdf-allow-copy"</span> <span class="na">content=</span><span class="s">"false"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"pdf-allow-modify"</span> <span class="na">content=</span><span class="s">"false"</span> <span class="nt">/></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><h1></span>Confidential Information<span class="nt"></h1></span>
<span class="nt"><p></span>This document is protected and encrypted.<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<h3 id="complete-invoice-example">Complete Invoice Example</h3>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html</span> <span class="na">lang=</span><span class="s">"en"</span><span class="nt">></span>
<span class="nt"><head></span>
<span class="nt"><title></span>Invoice #<span class="nt"></title></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"author"</span> <span class="na">content=</span><span class="s">""</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"subject"</span> <span class="na">content=</span><span class="s">"Invoice for "</span> <span class="nt">/></span>
<span class="nt"><style></span>
<span class="nd">:root</span> <span class="p">{</span>
<span class="py">--primary-color</span><span class="p">:</span> <span class="m">#2c3e50</span><span class="p">;</span>
<span class="py">--accent-color</span><span class="p">:</span> <span class="m">#3498db</span><span class="p">;</span>
<span class="py">--border-color</span><span class="p">:</span> <span class="m">#bdc3c7</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">body</span> <span class="p">{</span>
<span class="nl">font-family</span><span class="p">:</span> <span class="n">Arial</span><span class="p">,</span> <span class="nb">sans-serif</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">10pt</span><span class="p">;</span>
<span class="nl">margin</span><span class="p">:</span> <span class="m">40pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.header</span> <span class="p">{</span>
<span class="nl">border-bottom</span><span class="p">:</span> <span class="m">2pt</span> <span class="nb">solid</span> <span class="n">var</span><span class="p">(</span><span class="n">--primary-color</span><span class="p">);</span>
<span class="nl">margin-bottom</span><span class="p">:</span> <span class="m">20pt</span><span class="p">;</span>
<span class="nl">padding-bottom</span><span class="p">:</span> <span class="m">10pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.invoice-title</span> <span class="p">{</span>
<span class="nl">color</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--primary-color</span><span class="p">);</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">28pt</span><span class="p">;</span>
<span class="nl">font-weight</span><span class="p">:</span> <span class="nb">bold</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.invoice-table</span> <span class="p">{</span>
<span class="nl">width</span><span class="p">:</span> <span class="m">100%</span><span class="p">;</span>
<span class="nl">border-collapse</span><span class="p">:</span> <span class="nb">collapse</span><span class="p">;</span>
<span class="nl">margin-top</span><span class="p">:</span> <span class="m">20pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.invoice-table</span> <span class="nt">th</span> <span class="p">{</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="n">var</span><span class="p">(</span><span class="n">--primary-color</span><span class="p">);</span>
<span class="nl">color</span><span class="p">:</span> <span class="no">white</span><span class="p">;</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">8pt</span><span class="p">;</span>
<span class="nl">text-align</span><span class="p">:</span> <span class="nb">left</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.invoice-table</span> <span class="nt">td</span> <span class="p">{</span>
<span class="nl">border-bottom</span><span class="p">:</span> <span class="m">1pt</span> <span class="nb">solid</span> <span class="n">var</span><span class="p">(</span><span class="n">--border-color</span><span class="p">);</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">8pt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.total-row</span> <span class="p">{</span>
<span class="nl">font-weight</span><span class="p">:</span> <span class="nb">bold</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">12pt</span><span class="p">;</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="m">#ecf0f1</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt"></style></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"header"</span><span class="nt">></span>
<span class="nt"><div</span> <span class="na">class=</span><span class="s">"invoice-title"</span><span class="nt">></span>INVOICE<span class="nt"></div></span>
<span class="nt"><div></span>Invoice #: <span class="nt"></div></span>
<span class="nt"><div></span>Date: <span class="nt"></div></span>
<span class="nt"></div></span>
<span class="nt"><div</span> <span class="na">style=</span><span class="s">"margin-bottom: 20pt;"</span><span class="nt">></span>
<span class="nt"><strong></span>Bill To:<span class="nt"></strong><br/></span>
<span class="nt"><br/></span>
<span class="nt"></div></span>
<span class="nt"><table</span> <span class="na">class=</span><span class="s">"invoice-table"</span><span class="nt">></span>
<span class="nt"><thead></span>
<span class="nt"><tr></span>
<span class="nt"><th></span>Description<span class="nt"></th></span>
<span class="nt"><th></span>Quantity<span class="nt"></th></span>
<span class="nt"><th></span>Unit Price<span class="nt"></th></span>
<span class="nt"><th></span>Total<span class="nt"></th></span>
<span class="nt"></tr></span>
<span class="nt"></thead></span>
<span class="nt"><tbody></span>
<span class="nt"><template</span> <span class="na">data-bind=</span><span class="s">""</span><span class="nt">></span>
<span class="nt"><tr></span>
<span class="nt"><td></td></span>
<span class="nt"><td></td></span>
<span class="nt"><td></span>$<span class="nt"></td></span>
<span class="nt"><td></span>$<span class="nt"></td></span>
<span class="nt"></tr></span>
<span class="nt"></template></span>
<span class="nt"><tr</span> <span class="na">class=</span><span class="s">"total-row"</span><span class="nt">></span>
<span class="nt"><td</span> <span class="na">colspan=</span><span class="s">"3"</span> <span class="na">style=</span><span class="s">"text-align: right;"</span><span class="nt">></span>TOTAL:<span class="nt"></td></span>
<span class="nt"><td></span>$<span class="nt"></td></span>
<span class="nt"></tr></span>
<span class="nt"></tbody></span>
<span class="nt"></table></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</code></pre></div></div>
<hr />
<h2 id="see-also">See Also</h2>
<ul>
<li><a href="/reference/htmltags/head.html">head</a> - Document head for metadata</li>
<li><a href="/reference/htmltags/body.html">body</a> - Document body for content</li>
<li><a href="/reference/htmltags/frameset.html">frameset</a> - Frameset for PDF merging</li>
<li><a href="/reference/htmltags/meta.html">meta</a> - Metadata elements</li>
<li><a href="/reference/htmltags/style.html">style</a> - Embedded styles</li>
<li><a href="/reference/htmltags/link.html">link</a> - External stylesheets</li>
</ul>
<hr />
</p>
<!-- Only break page if this isn't the last section -->
<if data-test="">
<div style="page-break-after: always;"></div>
</if>
</div>
</template>
Invoice Payment Status
<div class="invoice">
<h1>Invoice #</h1>
<!-- Invoice details -->
<div>Total: $</div>
<if data-test="">
<div style="color: green; font-size: 16pt; font-weight: bold; margin-top: 20pt;">
PAID -
</div>
</if>
<if data-test="">
<div style="color: orange; font-size: 16pt; font-weight: bold; margin-top: 20pt;">
PAYMENT DUE -
</div>
</if>
<if data-test="">
<div style="color: red; font-size: 16pt; font-weight: bold; margin-top: 20pt;">
OVERDUE - Payment Required Immediately
</div>
<div style="background-color: #f8d7da; padding: 10pt; margin-top: 10pt;">
This invoice is days overdue.
Late fees may apply.
</div>
</if>
</div>
See Also
- template - Template element for repeating content
- Data Binding - Complete guide to data binding expressions
- Expressions - Expression syntax and functions
- hidden attribute - Alternative visibility control
- Choose Component - Multi-condition selection (if/else if/else)
- div - Generic container element