The bim-pdf format

A bim-pdf package is a standard PDF. It opens in Acrobat, Bluebeam, and every other viewer without any plugin. The BIM data is a separate layer, embedded alongside the drawing — not replacing it.

What it contains

A bim-pdf package is a PDF with one or more JSON sidecars attached as PDF/A-3 associated files. The drawing is unchanged. The sidecars travel with it.

The standard sidecars:

File What it holds
elements.json Every BIM element on every page: ElementId, category, type, page, and bounding box
marks.json Annotation marks from a review session
scales.json Per-page scale factors and drawing units
titleblock.json Sheet metadata extracted from the title block

An agent querying the package reads these files directly — no Revit, no database, no special viewer required.

How to create one

Export a PDF from Revit normally. Then package it with the BIM element data.

extract element data from the PDF
bim pdf marked drawings.pdf --out elements.json
{"page":1,"element_id":1234567,"category":"Walls","bounds":[120.4,340.2,180.1,380.5]}
{"page":1,"element_id":1234568,"category":"Doors","bounds":[200.0,340.2,260.0,380.5]}
embed the element data into the PDF
bim pdf package drawings.pdf elements.json --out drawings.bim.pdf
{"ok":true,"data":{"path":"drawings.bim.pdf","sidecars":["elements.json"]}}

The output file opens in any viewer. The BIM sidecar is invisible to viewers that don't know to look for it; it is readable by anything that does.

What an agent can do with a bim-pdf package

With a packaged PDF in hand, an agent needs no live Revit session.

list what sidecars are attached
bim pdf bim.list drawings.bim.pdf
{"ok":true,"data":{"attachments":["elements.json","titleblock.json"]}}
extract and query elements by category
bim pdf bim.extract drawings.bim.pdf --name elements.json | jq '[.[] | select(.category=="Doors")]'
[
  {"page": 1, "element_id": 1234568, "category": "Doors", "bounds": [200.0, 340.2, 260.0, 380.5]},
  {"page": 2, "element_id": 1238901, "category": "Doors", "bounds": [145.0, 210.5, 205.0, 250.5]}
]
read title block without opening the file
bim pdf bim.extract drawings.bim.pdf --name titleblock.json
{"project":"Lakeview Community Center","sheet":"A101","revision":"3","date":"2026-05-15","discipline":"Architecture"}

The escalator principle

The format is designed so that capability escalates with tooling, but nothing breaks at lower rungs.

Viewer What they see
Any PDF viewer The drawing, as normal
bim-cli bim.list A list of attached sidecars
bim-cli bim.extract The full BIM element data, ready to pipe
A future native viewer Highlighted elements, query results overlaid on the drawing

A client who receives the PDF sees the drawing. An agent that receives the same file can answer "how many structural columns are on sheet S201?" without any additional files.

Full format specification

The complete format spec is at bimpdf.com — field definitions, sidecar schemas, PDF/A-3 embedding conventions, and versioning.