open format · bim-pdf v1.0

BIM to PDF

a standard PDF that keeps the BIM data — bimpdf.com

Exporting a BIM model to PDF normally throws away the data — you get geometry, not elements. bim-pdf keeps both: a normal PDF that opens in Acrobat or Bluebeam, with a structured BIM layer embedded directly inside it.

free download · Revit 2025 / 2026 · ~0.7 MB

No new container format. No viewer lock-in. The PDF travels as-is; tools that understand bim-pdf read the embedded element data, marks, levels, and IFC subset alongside the drawing.

What BIM to PDF Means

BIM models -- whether authored in Revit or described in IFC -- carry rich structured data: element types, dimensions, materials, levels, and relationships between objects. A standard PDF export discards all of that and produces a flat drawing.

"BIM to PDF" describes the goal of exporting a BIM model into a PDF that retains queryable element data alongside the visible geometry. The result looks identical to any PDF viewer and carries the BIM layer as an invisible, additive attachment -- present for tools that know how to read it, harmless to those that do not.

bim-pdf is the open format spec that defines how that BIM data is structured, named, and embedded.

Exporting Revit and IFC BIM Data to PDF

Revit's built-in PDF export produces a flat drawing with no element data. The bim-pdf Revit add-in fills that gap: it exports a normal Revit sheet to PDF while embedding BIM elements -- walls, columns, doors, slabs, and more -- as structured JSON sidecars attached to the file.

Each element carries its class (from the v1.0 registry), label, level, and mark. A spatial overlay (marks.json) links every element to its bounding box on the sheet, so downstream tools can query "which wall is at this location" without re-parsing geometry.

IFC models map to the same element-class registry. The optional ifc-subset.json sidecar carries raw IFC entity data alongside the normalized elements.json anchor, enabling cross-tool interoperability without requiring a separate file format or container.

bim revit export PDF with data

The bim revit export command (and the matching Revit add-in button) produces a bim-pdf in one step: a compliant PDF sheet with up to six BIM sidecars embedded -- elements, marks, scales, levels, title block, and IFC subset.

Embedded BIM Metadata and IFC Elements in PDF

PDF supports file attachments through its standard EmbeddedFiles mechanism -- no format extension, no PDF structure modification. bim-pdf uses this to embed JSON sidecars alongside the page geometry.

The anchor is always elements.json: a list of every BIM element with its class, label, and provenance. Additional sidecars are optional and additive -- marks link elements to page positions, scales calibrate real-world dimensions, levels define building floors, and ifc-subset carries IFC entity data for cross-tool use.

Any PDF library that supports EmbeddedFile streams can read or write a bim-pdf. No proprietary parser, no SDK, no account required.

Open BIM PDF format

The bim-pdf spec is public and unencumbered. Any tool can produce or consume it: read the spec, embed the sidecars, and it works. The element-class registry (v1.0) is stable; new sidecars are additive and do not break existing readers.

Vendor-Neutral BIM Interchange Format

A bim-pdf file is a handoff artifact, not a proprietary export. It opens in any compliant PDF reader without plugins. The BIM data layer is additive -- removing the attachments leaves a valid, complete PDF. No viewer lock-in, no cloud round-trip, no license check.

Because the format builds on standard PDF EmbeddedFiles, it is implementation-neutral: Python, JavaScript, C#, or any language with a PDF library can produce or consume it. The JSON schemas are open, the class registry is versioned and stable, and the format carries no account or authentication dependency.

This makes bim-pdf viable as a neutral interchange format between Revit, IFC, and downstream AEC workflows -- a PDF that travels like a PDF but carries BIM data wherever it goes.

bim-pdf Revit add-in icon

Try it: free Revit add-in

See bim-pdf on your own model. The bim-pdf Revit add-in adds an Export bim-pdf button with a live sheet preview — it writes a normal PDF of your sheets with the BIM data layer baked in: elements, marks, scales, levels, and title-block metadata, all in the v1.0 format below. Free to use, for Revit 2025 and 2026.

💾 Download for Revit 2025 / 2026

Unzip, run Install.ps1, restart Revit, then click Export bim-pdf on the bim-pdf ribbon. The result opens in any PDF viewer — and lights up element-by-element in a bim-pdf-aware viewer.

Element Classes

Every element carries a class field drawn from the v1.0 registry. Use other with a required class_hint for anything outside the registry.

Structural

wallcurtain-wallslabfloorcolumnbeambracefooting

slab = structural deck or slab-on-grade. floor = interior finish assembly.

Envelope

roofdoorwindowcurtain-panelcurtain-mullion

Interior

ceilingroomstairramp

FF&E

furniturecaseworkequipment

Fallback

other

Requires class_hint: the producer’s native category name. MEP excluded from v1.0.

Sidecar Documents

Sidecars are JSON files embedded as PDF attachments. elements.json is the anchor; all other sidecars are optional and listed in dependency order.

FilenamePurposeKey fields
elements.jsonBIM element list + document metadata. Anchor for all other sidecars.bim-pdf, meta (project_id, document_id, exported_at, producer), source (format, version, id_strategy), class_registry, elements[]
marks.jsonSpatial overlay linking elements to page regions. Requires elements.json.coordinate_space, marks[] (element_id, page, bbox [x0 y0 x1 y1 in PDF points], view_type)
scales.jsonPer-page calibration. Maps PDF points to real-world units.Keyed by 1-indexed page number. Each entry is a CalibrationScale (pixel-distance + real-distance + unit) or RatioScale (ratio + unit).
levels.jsonBuilding level definitions with elevation.levels[] (id [UUID v5], name, elevation [Quantity])
titleblock.jsonSheet metadata plus structured sheet-info blocks for zoning, legends, notes, and tabulations.sheets[] (legacy sheet_number/sheet_name fields plus titleblock, zoning_data_block, area_tabulation[], legend[], notes[])
annotations.jsonHuman and agent markup. Requires elements.json.annotations[] (id, page, type [polygon/rectangle/text/callout/cloud/stamp/...], author [human|agent], created_at, element_id, style, measurement)
ifc-subset.jsonIFC data subset for cross-tool interop. Optional; omit if not available.Raw IFC entity subset keyed by element id. Schema is open in v1.0.

How to Implement

To produce a bim-pdf, embed sidecars as standard PDF file attachments using the PDF EmbeddedFiles names tree. Any PDF library that supports /EmbeddedFile streams works.

// Minimal elements.json
{
  "bim-pdf": "1.0",
  "meta": {
    "project_id": "uuid-v4",
    "document_id": "uuid-v4",
    "exported_at": "2026-01-01T00:00:00Z",
    "producer": "my-tool/1.0"
  },
  "source": {
    "format": "revit",
    "version": "2024",
    "id_strategy": "revit-stable-element-id"
  },
  "class_registry": "1.0",
  "elements": [
    { "id": "1234", "class": "wall", "label": "Exterior CMU 8\"", "level": "Level 1" }
  ]
}

Embed the JSON as a file attachment named exactly elements.json. Add additional sidecar files as needed. The attachment name is the sidecar identifier — do not rename.

To read a bim-pdf, extract file attachments by name. No special PDF structure required beyond standard EmbeddedFiles support.

Consumers

Tools in the bim-cli ecosystem produce and consume bim-pdf files:

ToolDescription
bim revit exportExport a Revit sheet to bim-pdf — produces a PDF with 6 BIM sidecars embedded
bim pdf packEmbed sidecar JSON files into an existing PDF
bim pdf extractExtract sidecar JSON files from a bim-pdf
bim pdf listList embedded attachments in a PDF
bim pdf validateValidate a bim-pdf: schema correctness, cross-references, class registry
bim pdfv openOpen in pdfv viewer: BIM element overlay, element panel, marks filtered by class

Install via bimcli.com. No account required.

Format Principles