<?xml version='1.0' encoding='utf-8'?>
<rss version="2.0">
  <channel>
    <title>Carbone Changelog — v4 Stable</title>
    <link>https://carbone.io/changelog.html</link>
    <description>Stable Carbone v4.x releases only</description>
    <lastBuildDate>Wed, 15 Apr 2026 10:17:25 +0000</lastBuildDate>
    <ttl>1440</ttl>
    <item>
      <title>v4.26.3</title>
      <link>https://carbone.io/changelog.html#v4-26-3</link>
      <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.26.3</guid>
      <description>• [EE] Update to Node 20.20.2&lt;br/&gt;• Add limits maxTemplateUncompressedSize (200 MB by default) for unzipped templates to improve resistance to zip bomb denial-of-service attacks</description>
    </item>
    <item>
      <title>v4.26.2</title>
      <link>https://carbone.io/changelog.html#v4-26-2</link>
      <pubDate>Mon, 19 Jan 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.26.2</guid>
      <description>• Accept invalid input silently (as in v4.26.0 ) to avoid regressions.</description>
    </item>
    <item>
      <title>v4.26.1</title>
      <link>https://carbone.io/changelog.html#v4-26-1</link>
      <pubDate>Sat, 17 Jan 2026 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.26.1</guid>
      <description>• Update dependencies&lt;br/&gt;• â ï¸ Fix a critical security issue identified in a recent audit</description>
    </item>
    <item>
      <title>v4.26.0</title>
      <link>https://carbone.io/changelog.html#v4-26-0</link>
      <pubDate>Tue, 09 Sep 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.26.0</guid>
      <description>• Fixed Carbone API authentication to return status code 401 instead of 500 when an API key has expired.&lt;br/&gt;• Support for sending volatile templates using base64 with a data-URI prefix.</description>
    </item>
    <item>
      <title>v4.25.11</title>
      <link>https://carbone.io/changelog.html#v4-25-11</link>
      <pubDate>Wed, 06 Aug 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.11</guid>
      <description>• Fixed an issue accessing dynamic variables when combined with array filters, involving two nested arrays and a filter on the parent array. This fix is applied only when the pre-release tag {o.preReleaseFeatureIn=4025011} is set (enabled by default in v5).</description>
    </item>
    <item>
      <title>v4.25.10</title>
      <link>https://carbone.io/changelog.html#v4-25-10</link>
      <pubDate>Tue, 29 Jul 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.10</guid>
      <description>• Updated IANA database (2025) - fixes :formatD for the America/Mexico_City timezone, for example&lt;br/&gt;• Updated dependencies</description>
    </item>
    <item>
      <title>v4.25.9</title>
      <link>https://carbone.io/changelog.html#v4-25-9</link>
      <pubDate>Fri, 16 May 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.9</guid>
      <description>• Fixed batch processing for On-Premise environments&lt;br/&gt;• Added support for base64 data-URI in appendFile and attachFile</description>
    </item>
    <item>
      <title>v4.25.8</title>
      <link>https://carbone.io/changelog.html#v4-25-8</link>
      <pubDate>Thu, 24 Apr 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.8</guid>
      <description>• The formatter :appendFile(position) now accepts a position parameter that determines where the external document is inserted in the generated output.
Valid values for position are "start" (to insert at the beginning) and "end" (default, inserts at the end).</description>
    </item>
    <item>
      <title>v4.25.7</title>
      <link>https://carbone.io/changelog.html#v4-25-7</link>
      <pubDate>Mon, 14 Apr 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.7</guid>
      <description>• Fix: Prevent a crash when a barcode is empty and the svg: true option is used.&lt;br/&gt;• Fix: LibreOffice changed the default value of ExportFormFields . It used to be true , but in the latest version, it is now false .  
This release restores the previous default value to avoid breaking changes when generating PDFs with forms.</description>
    </item>
    <item>
      <title>v4.25.6</title>
      <link>https://carbone.io/changelog.html#v4-25-6</link>
      <pubDate>Tue, 11 Mar 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.6</guid>
      <description>• It is no longer necessary to repeat array filters on all tags to filter a loop.
Now, if the filter is defined only on the i+1 tag, it is applied globally to the entire loop.
This change is activated only when the prerelease tag {o.preReleaseFeatureIn=4024000} is set (by default in v5).
To maintain backward compatibility, if at least one filter is defined on the i-th part, the previous rule still applies. Before: {d.myArray[i, i&gt;0].id}
{d.myArray[i, i&gt;0].name}
{d.myArray[i+1, i&gt;0]} After: {d.myArray[i].id}
{d.myArray[i].name}
{d.myArray[i+1, i&gt;0]}</description>
    </item>
    <item>
      <title>v4.25.5</title>
      <link>https://carbone.io/changelog.html#v4-25-5</link>
      <pubDate>Sat, 08 Feb 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.5</guid>
      <description>• Fix: Carbone did not escape some forbidden characters in XML when an array was printed in the template without using the arrayJoin formatter.
This fix is activated only when the prerelease tag {o.preReleaseFeatureIn=4024000} is set.</description>
    </item>
    <item>
      <title>v4.25.4</title>
      <link>https://carbone.io/changelog.html#v4-25-4</link>
      <pubDate>Thu, 06 Feb 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.4</guid>
      <description>• Fix: Carbone tags in sheet names were not updated since v4.25.3</description>
    </item>
    <item>
      <title>v4.25.3</title>
      <link>https://carbone.io/changelog.html#v4-25-3</link>
      <pubDate>Tue, 28 Jan 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.3</guid>
      <description>• Fixed an issue with corrupted XLSX files caused by defined range names.&lt;br/&gt;• Accepts array filters with colons and &amp; , such as {d.myArray[filter='string&amp;with:colons'].id} , when {o.preReleaseFeatureIn=4022011} is activated.
Note: Array filters with commas are still not supported in v4. This will be addressed in v5.&lt;br/&gt;• Formatters containing '&amp;' do not print '&amp;' in the generated document, when {o.preReleaseFeatureIn=4022011} is activated.</description>
    </item>
    <item>
      <title>v4.25.2</title>
      <link>https://carbone.io/changelog.html#v4-25-2</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.2</guid>
      <description>• [EE] Fixed some issues with the :set formatter when {o.preReleaseFeatureIn=4022011} is activated, especially in combination with array filters and conditions.
The fix resolves the following cases for :set : {d.myArray[filter=2].val:set(d.result)} : Stores the first value val found in the array that matches the array filter filter=2 (Now the behavior is the same with or without :set ). {d.myArray[filter=2].val:ifEM:show(10):set(d.result)} : Stores the first value val found that matches the filter filter=2 , otherwise stores "10". {d.myArray[filter=2].val:ifEM:show(10):set(.newAttribute)} : Adds a new attribute in myArray (copy of .val ), setting its value to "10" for all items in myArray that do not match the filter filter=2 .&lt;br/&gt;• The :convCRLF option is now supported in ODP templates.&lt;br/&gt;• [EE] For ODT/ODS templates, you can now create dynamic bookmarks. To add a dynamic bookmark to a template, right-click on the selected text, navigate to the 'Insert' menu, select 'Bookmark,' and then write the Carbone tag. The value can be a single tag {d.bookmark} or a loop expression {d.list[i].bookmark} . Please note that the following characters are not allowed in a bookmark: /@*?",# .&lt;br/&gt;• Fixed invalid metrics for fetchImageTime , fetchFileTime , fetchImageBytes</description>
    </item>
    <item>
      <title>v4.25.1</title>
      <link>https://carbone.io/changelog.html#v4-25-1</link>
      <pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.1</guid>
      <description>• [EE] Fixed a random crash occurring when multiple documents fail to download while using :appendFile .&lt;br/&gt;• [EE] Fixed crash when using an invalid image URL in injected HTML</description>
    </item>
    <item>
      <title>v4.25.0</title>
      <link>https://carbone.io/changelog.html#v4-25-0</link>
      <pubDate>Mon, 09 Dec 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.25.0</guid>
      <description>• Add a new option to the API endpoint POST /render/:idTemplate .
The query parameter ?download=true can be used to download the rendered report directly. When this option is used, the file is not stored on our servers. A single API call is enough to download the file. There is no need to call GET /render . Important: The Content-Disposition header changes based on the HTTP status: If the status is 200 (OK): Content-Disposition: 'attachment; filename="report.pdf"'
Content-Type: 'application/pdf' For all other statuses:
The response remains in application/json format as before.</description>
    </item>
    <item>
      <title>v4.24.2</title>
      <link>https://carbone.io/changelog.html#v4-24-2</link>
      <pubDate>Thu, 07 Nov 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.24.2</guid>
      <description>• [EE] Fix: Accept array filters with commas enclosed in quotes when using the :set() formatter with the prerelease tag {o.preReleaseFeatureIn=4022011} in ODT templates (enabled by default in Carbone v5).&lt;br/&gt;• Fix: Prevent generating corrupted documents when a custom iterator contains a null or undefined value in a loop (e.g., {d[sort].id} -&gt; {d[sort+1].id} ). 
This fix is activated only if {o.preReleaseFeatureIn=4024000} (enabled by default in Carbone v5).</description>
    </item>
    <item>
      <title>v4.24.1</title>
      <link>https://carbone.io/changelog.html#v4-24-1</link>
      <pubDate>Wed, 06 Nov 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.24.1</guid>
      <description>• [EE] Fix: the :html formatter in DOCX templates where the default template style might not have been applied.&lt;br/&gt;• [EE] Fix: Accept array filters with commas enclosed in quotes when using the :set() formatter with the prerelease tag {o.preReleaseFeatureIn=4022011} .</description>
    </item>
    <item>
      <title>v4.24.0</title>
      <link>https://carbone.io/changelog.html#v4-24-0</link>
      <pubDate>Fri, 25 Oct 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.24.0</guid>
      <description>• Accept xls (Excel 2003) template files only for document conversion.&lt;br/&gt;• [EE] Fix the :html formatter in ODT templates where ordered and unordered lists contain mixed line break tags.&lt;br/&gt;• [EE] Generate a fully compliant Factur-X PDF when the attached XML file is named 'factur-x.xml' ( :attachFile('factur-x.xml') ).
It automatically detects the Conformance Level from the attached XML ('MINIMUM', 'BASIC WL', 'BASIC', 'EXTENDED', 'EN 16931') and adjusts the PDF metadata accordingly.
Additionally, it sets SelectPdfVersion = 3 (PDF Version 3B) by default if not specified and if the output file is a PDF.&lt;br/&gt;• [EE] Add a type parameter to the attachFile(filename, type) formatter to specify the PDF AFRelationship.
Options for type include: "Source", "Data" (default), "Alternative", "Supplement", "Unspecified", "FormData", and "Schema".&lt;br/&gt;• Close all pending TCP connections on exit to prevent indefinite waiting times.&lt;br/&gt;• Fix: Allow :convCRLF to be used after :aggStrD and :aggStr .&lt;br/&gt;• New formatter :preserveCharRef to preserve character references.
By default, Carbone removes all forbidden characters before injecting data into XML (e.g., &amp; , &gt; , &lt; , � , etc.).
As a result, injected character references like &amp;#xa7; ( = Â§ ) are transformed into &amp;amp;#xa7; in XML.
This formatter prevents this transformation, preserving the original character reference.
This feature is useful in specific XML generation scenarios where direct characters cannot be used (e.g., non-UTF-8 charsets) and the character reference must be retained.
It accepts both numeric (e.g., &amp;#100; ) and hexadecimal formats (e.g., &amp;#xa10ef; ), in either lowercase or uppercase.</description>
    </item>
    <item>
      <title>v4.23.7</title>
      <link>https://carbone.io/changelog.html#v4-23-7</link>
      <pubDate>Tue, 08 Oct 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.23.7</guid>
      <description>• [EE] Fixed a crash that occurred when the URL passed to appendFile or attachFile was not a string.</description>
    </item>
    <item>
      <title>v4.23.6</title>
      <link>https://carbone.io/changelog.html#v4-23-6</link>
      <pubDate>Tue, 01 Oct 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.23.6</guid>
      <description>• [EE] Added support for bindColor in PPTX templates (for text, background color, and shapes). This feature is enabled when the flag {o.preReleaseFeatureIn=4022011} is included in the template.&lt;br/&gt;• [EE] Fixed incorrect CSS attributes in charts created using Apache ECharts@v5a.&lt;br/&gt;• Added en-be locale support for dates and numbers: DD/MM/YYYY , 100.000,80</description>
    </item>
    <item>
      <title>v4.23.5</title>
      <link>https://carbone.io/changelog.html#v4-23-5</link>
      <pubDate>Thu, 19 Sep 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.23.5</guid>
      <description>• [EE] Fix escape characters &amp; , &gt; , and &lt; for the aggregators :aggStr and :aggStrD .</description>
    </item>
    <item>
      <title>v4.23.4</title>
      <link>https://carbone.io/changelog.html#v4-23-4</link>
      <pubDate>Tue, 17 Sep 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.23.4</guid>
      <description>• [EE] Support dynamic hyperlinks in headers and footers of DOCX templates&lt;br/&gt;• [EE] Fix new :set() formatter when {o.preReleaseFeatureIn=4022011} is activated</description>
    </item>
    <item>
      <title>v4.23.2</title>
      <link>https://carbone.io/changelog.html#v4-23-2</link>
      <pubDate>Thu, 12 Sep 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.23.2</guid>
      <description>• New :t() formatter to translate text from JSON data. 
When the report is rendered, all text passed to the :t formatter is replaced with its corresponding translation found in a separate localization dictionary. 
Carbone automatically selects the localization dictionary that matches the lang attribute ( en-us , en-gb , etc.). 
If a translation key is not found, Carbone prints the original text from the data in the final report (without translation).&lt;br/&gt;• [EE] :attachFile formatter accepts URL with text/xml mimetype&lt;br/&gt;• [EE] Fixes the :transform formatter in ODT/ODP when LibreOffice uses a different method to update the X/Y position of an item.&lt;br/&gt;• [EE] :transform formatter support to move images in ODT/ODP/PPTX (only if {o.preReleaseFeatureIn=4022011} is activated)&lt;br/&gt;• [EE] Optional flags {o.preReleaseFeatureIn=4022011} and {o.useHighPrecisionArithmetic=true} are removed from the generated document.&lt;br/&gt;• [EE] Fix: The optional flag {o.preReleaseFeatureIn=4022011} is now detected before processing :set formatters.</description>
    </item>
    <item>
      <title>v4.23.1</title>
      <link>https://carbone.io/changelog.html#v4-23-1</link>
      <pubDate>Mon, 02 Sep 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.23.1</guid>
      <description>• Fixed :drop(shape) regression in PPTX templates when using native charts.</description>
    </item>
    <item>
      <title>v4.23.0</title>
      <link>https://carbone.io/changelog.html#v4-23-0</link>
      <pubDate>Fri, 30 Aug 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.23.0</guid>
      <description>• New formatter :printJSON to print the content of an object/array. Example: {d:printJSON} prints the entire data object in the document.&lt;br/&gt;• [EE] When using asynchronous jobs with carbone-webhook-url , optional headers carbone-webhook-header-X can be specified to customize the webhook headers sent. The X can be any key name.
For example, if carbone-webhook-header-authorization: my-secret is included during report generation, the header authorization: my-secret will be added when Carbone calls the webhook.&lt;br/&gt;• [EE] New formatter {d.pdf_or_xml_url:attachFile(filename)} to add one or multiple attachments to the generated PDF (e.g., Factur-X).
This formatter accepts a single URL, can be positioned anywhere within a template, and does not produce any text output by itself. Carbone will return an error and will not generate the report in the following scenarios: If the provided URL returns an error (with 2 retries for Carbone Cloud). If the downloaded document is not a PDF or XML. If more than 20 files are to be downloaded (On-Premise parameter: maxDownloadFileCount ). If the total size of all downloaded files exceeds 10 MB (On-Premise parameter: maxDownloadFileSizeTotal ). If the same document is included more than 5 times. Carbone will ignore the formatter and proceed to generate the report in the following cases: If the provided URL is null, undefined, or an empty string. If the final report is not in PDF format.&lt;br/&gt;• [EE] Fix: The :color formatter did not apply the style correctly in HTML.&lt;br/&gt;• ODS template supports :drop(sheet) and :keep(sheet) to show or hide a sheet&lt;br/&gt;• XLSX template supports :drop(row) and :keep(row)&lt;br/&gt;• Accept whitespace in attribute names using single quotes: {d.'new param'.'second level yes'[1].'sub obj'} if {o.preReleaseFeatureIn=4022011} is added in the template.
Known limitation: not accepted inside formatters, array filters and aliases.&lt;br/&gt;• Fix: Conditional blocks (show, hide) and smart conditional blocks (drop, keep) were… (read more: https://carbone.io/changelog.html#v4-23-0)</description>
    </item>
    <item>
      <title>v4.22.14</title>
      <link>https://carbone.io/changelog.html#v4-22-14</link>
      <pubDate>Fri, 23 Aug 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.22.14</guid>
      <description>• Fix asynchronous rendering: allow multiple reports to be generated at the same millisecond</description>
    </item>
    <item>
      <title>v4.22.13</title>
      <link>https://carbone.io/changelog.html#v4-22-13</link>
      <pubDate>Mon, 22 Jul 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.22.13</guid>
      <description>• If config.factories = 0 (starting without the LibreOffice converter), the hardRefresh option is ignored.</description>
    </item>
    <item>
      <title>v4.22.12</title>
      <link>https://carbone.io/changelog.html#v4-22-12</link>
      <pubDate>Mon, 22 Jul 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.22.12</guid>
      <description>• [EE] Fix: :transform(axis, unit) for PPTX template did not work in certain cases&lt;br/&gt;• [EE] Fixes studio hang when the template has no Carbone tags and adds an XHTML export option to get embedded images in HTML output</description>
    </item>
    <item>
      <title>v4.22.11</title>
      <link>https://carbone.io/changelog.html#v4-22-11</link>
      <pubDate>Wed, 17 Jul 2024 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">carbone-v4.22.11</guid>
      <description>• [EE] The embedded stateless studio supports XML templates if the following conditions are met: Chromium-based browsers, output file type must be XML.
The generated XML is indented and stored locally. It supports live reloads. If the template/data is updated, the generated XML is updated accordingly.
VSCode, Sublime Text, or any editing tool can be used to update the XML template and see the result.&lt;br/&gt;• [EE] Fixed :imageFit formatter for resizing image in ODS templates.&lt;br/&gt;• [EE] Fix: Do not escape the character &amp; two times in injected hyperlinks if {o.preReleaseFeatureIn=4022011} is active&lt;br/&gt;• [EE] New :transform(axis, unit) formatter to move a shape on the X or Y axis: axis can be x or y to move the item horizontally or vertically from its current position. Positive numbers = move to the right or bottom. unit can be cm , mm , inch , or pt . The tag must be positioned inside the item to be transformed (alternative text or inside the shape itself).
This tag prints nothing. Supported in ODP, PPTX and ODT templates.
The feature is available only if the tag {o.preReleaseFeatureIn=4022011} is used.
Be careful, if a loop is created between two shapes, the [i+1] tag must be in the shape that is higher in the layer order than the shape with the [i] tag.</description>
    </item>
  </channel>
</rss>