Export Formats & Custom Mappings
prodexa PXM provides high-performance formatting engines to transform internal product records into structured industry-standard and custom output documents.
Standard Industry Formats
Section titled “Standard Industry Formats”BMEcat Catalog Exchange
Section titled “BMEcat Catalog Exchange”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 (Print-Catalog Publishing)
Section titled “Inbetween (Print-Catalog Publishing)”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.
PDF Workarea Storage Path
Section titled “PDF Workarea Storage Path”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
- Product Catalog ID:
[!WARNING] Filename uniqueness is entirely the responsibility of the template designer. Utilize combination patterns like
catalogId_productIdorproductId_languageIdto 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.
Password Privilege Matrix:
Section titled “Password Privilege Matrix:”- 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)
PDF Dynamic Metadata Injection
Section titled “PDF Dynamic Metadata Injection”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']!}).
JXLS Excel Export Templates
Section titled “JXLS Excel Export Templates”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/
JXLS Excel Helper Functions
Section titled “JXLS Excel Helper Functions”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)(ReturnsDate) — Parses a"yyyy-MM-dd"date string into a native ExcelDatecell type for seamless locale-based date formatting.asNumber(value)(ReturnsNumber) — Parses a numeric string (using.decimal divider) into an ExcelNumbercell type.attributeShortDescription(attributeId, languageId)(ReturnsString) — Returns the localized short description of an attribute. Falls back to default description if localized value is absent.attributeUoMDescription(product, attributeId, languageId)(ReturnsString) — Fetches the localized description of the Unit of Measure (UoM) referenced in the attribute’s type extension.attributeUoMSymbol(product, attributeId)(ReturnsString) — Returns the abbreviated symbol of the attribute’s referenced UoM.attributeValue(product, attributeId)(ReturnsString) — Gets the raw, un-localized value of the product’s attribute.attributeValueJoining(product, attributeId, separator)(ReturnsString) — Returns all values of a multi-valued attribute joined by the specified separator string.attributeValueDescription(product, attributeId, languageId)(ReturnsString) — 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)(ReturnsString) — Returns localized Value List Item descriptions joined together by a custom separator string.attributeValueLanguage(product, attributeId, languageId)(ReturnsString) — Gets the localized attribute value for a language. Falls back to default if empty.attributeValueLanguageJoining(product, attributeId, language, separator)(ReturnsString) — Returns localized multi-value attributes joined by a custom separator.attributeValues(product)(ReturnsList<ProductAttributeValue>) — Returns the complete list of raw product attribute values assigned to the product.attributeValues(product, attributeId)(ReturnsList<ProductAttributeValue>) — Returns the raw attribute values specifically for the selected attribute ID.price(product, contractId, typeId, currencyId, validFromQuantity)(ReturnsPrice) — Finds and returns a singlePriceobject matching the contract, currency, price type, and quantity tier.prices(product, contractId, typeId, currencyId, validFromQuantity)(ReturnsList<Price>) — Returns a filtered list ofPricerecords matching the given criteria (parameters can be passed asnullto bypass filters).productRelationType(typeId)(ReturnsProductRelationType) — Fetches the full domain model of a Product Relation Type by its identifier.relatedProductsJoined(product, relationTypeId, separator)(ReturnsString) — Combines related products into a joined list of formatted triples:(CatalogID,ProductID,VariantID). Pass*ornullto fetch all relation types.relatedProductIdsJoined(product, relationTypeId, separator)(ReturnsString) — Compiles a separated string containing only the IDs of all related products.