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 splits the handoff: the drawing goes in one file and the model data goes somewhere else. bim-pdf keeps both together in a normal PDF that still opens in Acrobat, Bluebeam, or any standard viewer.

free download · Revit 2025 / 2026 · ~0.7 MB

No new container format. No viewer lock-in. The PDF travels as-is, the sidecars stay attached to the drawing revision that produced them, and bim-pdf-aware tools can extract the embedded element data, marks, levels, and IFC subset from that same file.

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, and harder to separate from the drawing during handoff.

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 attaching BIM elements -- walls, columns, doors, slabs, and more -- as structured JSON sidecars in the same 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 after they extract the sidecars.

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.

The main benefit is operational: one file travels, the sidecars stay bound to the PDF revision that generated them, and recipients do not need a parallel file-sharing convention just to keep drawing and data in sync.

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 a bim-pdf ribbon tab with an Export button and a live sheet preview — it writes a normal PDF of your sheets with the BIM data sidecars attached: elements, marks, scales, levels and title-block metadata (the v1.0 format below), plus printed schedules as data and — on any sheet carrying a 3D view — a live glTF model embedded alongside the flat drawing. Free to use, for Revit 2025 and 2026.

💾 Download for Revit 2025 / 2026

Unzip, run Install.ps1, restart Revit, then open the bim-pdf ribbon tab and click Export. 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.

README-agent.md is a reserved, recommended attachment name for agent-facing authority guidance. Producers SHOULD embed it under that exact filename so consumers that list attachments by name can surface it first.

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.

When you need agent-facing authority guidance alongside the sidecars, embed a Markdown attachment named exactly README-agent.md. Producers SHOULD use that reserved filename for notes such as "printed sheets are contractually authoritative" so attachment-listing consumers can recognize and prioritize it consistently.

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