Skip to content

Export Formats & Custom Mappings

prodexa PXM provides high-performance formatting engines to transform internal product records into structured industry-standard and custom output documents.


BMEcat is the standard exchange format for catalog data in Europe. prodexa PXM provides out-of-the-box standard FreeMarker templates supporting:

  • Dynamic generation of BMEcat headers and transaction controls.
  • Configurable classifications, group mappings, and features.
  • Seamless inclusion of custom user-defined extensions (udx-Elements).

Inbetween is a premium layout engine for print-catalog and database publishing. prodexa provides a specialized, pre-configured XML template model (InBetween-XML.ftl) that formats PXM records and pushes structured data streams directly into Inbetween print servers.


PDF-Specific Generation & Security (since v9.4 & v9.5)

Section titled “PDF-Specific Generation & Security (since v9.4 & v9.5)”

Before version 9.4, PDF exports always compiled into a single consolidated catalog document or a flat ZIP archive of standalone PDFs. Since version 9.4, prodexa supports generating individual PDF files bound directly to the source products as ProductDocument reference objects.

The generated PDF files are saved to the workarea under a path resolved from export format parameters and communication directory definitions:

(workarea_root) / [Communication Directory] / [fileNamePattern].pdf
  • Example Path Configuration:
    • Product Catalog ID: CarParts
    • Product ID: 166190
    • fileNamePattern Template: catalogId_productId
    • Communication Directory: dir
    • Resulting Location: (workarea_root)/dir/CarParts_166190.pdf

[!WARNING] Filename uniqueness is entirely the responsibility of the template designer. Utilize combination patterns like catalogId_productId or productId_languageId to prevent file collision and accidental overwriting within target directories.

PDF Password Protection & Document Restrictions (v9.5+)

Section titled “PDF Password Protection & Document Restrictions (v9.5+)”

Version 9.5 introduces robust, granular protection layers for generated PDF files, which are configurable directly in the Export Format Editor.

  • User Password: The standard password required to open the PDF. When set, users are forced to enter it to view the content and are restricted by the owner’s permission configurations.
  • Owner Password: The master administrative password. Specifying an owner password enforces the following restriction flags on standard users, while allowing holders of the owner password to bypass prompts and modify the document.

Document Restriction Flags Enforced for Standard Users:

Section titled “Document Restriction Flags Enforced for Standard Users:”
  • Prevent changing: Disables any editing of text, image elements, and document structures.
  • Prevent assembly: Blocks page rotations, deletions, reorderings, or insertions.
  • Prevent content extraction: Disables text/image copying and automated screen-scraper extraction.
  • Prevent annotation modification: Blocks editing or adding notes, stamps, and comment threads.
  • Prevent form filling: Blocks typing inside interactive form fields, checkboxes, or dropdown lists.
  • Prevent signing: Blocks applying digital signatures or certificates.
  • User Password
    • Required to open PDF? Yes
    • Bound by security restrictions? Yes
    • Can remove restrictions? No
  • Owner Password
    • Required to open PDF? No
    • Bound by security restrictions? No (Overrules restrictions)
    • Can remove restrictions? Yes (Re-saves unprotected)

Since version 9.5, you can inject highly dynamic, computed metadata fields into the generated PDF files using FreeMarker expressions:

  • Available Meta Fields: pdfFileMetadataTitle, pdfFileMetadataAuthor, pdfFileMetadataSubject, pdfFileMetadataKeywords.
  • Value Expressions: Supports static strings and dynamic placeholders (e.g., ${product.values['LongDescription']['en-GB']!}).

The Export Module provides high-speed, native Excel exports using JXLS Templates. JXLS embeds control loops and formatting directives directly within standard Excel cell comments, preserving rich typography, layouts, and formulas.

  • Template Storage Path: Excel templates must be stored inside the customization directory: ${customizationarearoot}/pim/channelExportTemplates/excel/

To simplify template mapping, the JXLS context exposes custom helper methods. They are presented below as a mobile-responsive list to guarantee readability across all viewport widths:

  • asDate(value) (Returns Date) — Parses a "yyyy-MM-dd" date string into a native Excel Date cell type for seamless locale-based date formatting.
  • asNumber(value) (Returns Number) — Parses a numeric string (using . decimal divider) into an Excel Number cell type.
  • attributeShortDescription(attributeId, languageId) (Returns String) — Returns the localized short description of an attribute. Falls back to default description if localized value is absent.
  • attributeUoMDescription(product, attributeId, languageId) (Returns String) — Fetches the localized description of the Unit of Measure (UoM) referenced in the attribute’s type extension.
  • attributeUoMSymbol(product, attributeId) (Returns String) — Returns the abbreviated symbol of the attribute’s referenced UoM.
  • attributeValue(product, attributeId) (Returns String) — Gets the raw, un-localized value of the product’s attribute.
  • attributeValueJoining(product, attributeId, separator) (Returns String) — Returns all values of a multi-valued attribute joined by the specified separator string.
  • attributeValueDescription(product, attributeId, languageId) (Returns String) — Returns the translation/description of the matched Value List Item for the specified attribute and language. Concatenates multi-valued inputs with commas.
  • attributeValueDescriptionJoining(product, attributeId, languageId, separator) (Returns String) — Returns localized Value List Item descriptions joined together by a custom separator string.
  • attributeValueLanguage(product, attributeId, languageId) (Returns String) — Gets the localized attribute value for a language. Falls back to default if empty.
  • attributeValueLanguageJoining(product, attributeId, language, separator) (Returns String) — Returns localized multi-value attributes joined by a custom separator.
  • attributeValues(product) (Returns List<ProductAttributeValue>) — Returns the complete list of raw product attribute values assigned to the product.
  • attributeValues(product, attributeId) (Returns List<ProductAttributeValue>) — Returns the raw attribute values specifically for the selected attribute ID.
  • price(product, contractId, typeId, currencyId, validFromQuantity) (Returns Price) — Finds and returns a single Price object matching the contract, currency, price type, and quantity tier.
  • prices(product, contractId, typeId, currencyId, validFromQuantity) (Returns List<Price>) — Returns a filtered list of Price records matching the given criteria (parameters can be passed as null to bypass filters).
  • productRelationType(typeId) (Returns ProductRelationType) — Fetches the full domain model of a Product Relation Type by its identifier.
  • relatedProductsJoined(product, relationTypeId, separator) (Returns String) — Combines related products into a joined list of formatted triples: (CatalogID,ProductID,VariantID). Pass * or null to fetch all relation types.
  • relatedProductIdsJoined(product, relationTypeId, separator) (Returns String) — Compiles a separated string containing only the IDs of all related products.