PDFium native API coverage

June 12, 2026 · View on GitHub

The bundled pdfium.dll (bblanchon.PDFium 151.0.7881) exports 460 functions — the complete public PDFium C API. Morph.PDFium currently binds 146 of them and surfaces the meaningful subset through a managed API. This document records what is wrapped, and — more importantly — what is not yet implemented, with the reason.

The list is generated by diffing the DLL export table against the [LibraryImport] declarations in PdfiumNative.*.cs; counts will drift as bindings are added.

Implemented (managed surface)

AreaManaged entry points
Document load / metadataPdfiumDocument.Load, GetProperties, GetPdfVersion, GetPermissions/GetUserPermissions, GetSecurityHandlerRevision, GetPageDisplayMode, GetPageLabel, GetFileIdentifier
Pages & renderingPageCount, GetPageSize(s), RenderPage (DPI or RenderOptions), RenderPages, RenderRegion (clip/scale), LoadPagePdfPage
Text & searchPdfPage.GetText, GetChars, GetTextInRectangle, GetTextRectangles, GetCharIndexAt, Search
NavigationGetBookmarks (outline tree), destinations, actions, PdfPage.GetLinks, GetWebLinks
AnnotationsPdfPage.GetAnnotations, AddAnnotation, RemoveAnnotation
Forms (AcroForm)GetFormType, LoadFormPdfForm.GetFields, RenderPage (widgets), SetHighlight
Page manipulationNewPage, DeletePage, ImportPages, CopyViewerPreferences, PdfPage.Rotation, Flatten, GenerateContent
Page content editingPdfPage.GetObjects, AddText, AddRectangle
SavePdfiumDocument.Save (bytes / stream, FPDF_FILEWRITE)
AttachmentsAttachmentCount, GetAttachments, AddAttachment, DeleteAttachment, PdfAttachment.GetData/SetData
SignaturesSignatureCount, GetSignatures (metadata only; no cryptographic verification)
Structure / accessibilityPdfPage.GetStructureTree (tagged PDF), embedded thumbnails via GetEmbeddedThumbnail

Not yet implemented

Won't wrap — not applicable to this build or to a managed wrapper

These are excluded by design. The default bblanchon build is compiled without V8 and without XFA, and the wrapper loads whole documents from memory and renders to managed bitmaps, which makes several native facilities moot.

Native groupCountWhy it is excluded
FPDFAvail_* (fpdf_dataavail.h)8Progressive availability for linearized/streamed loading. The wrapper loads the full byte buffer up front, so availability is always "ready".
FPDF_RenderPageBitmap_Start / _Continue / _Close / …WithColorScheme_Start (fpdf_progressive.h)4Incremental/abortable rendering. Rendering here is synchronous under the global lock.
System font providers — FPDF_SetSystemFontInfo, FPDF_GetDefaultSystemFontInfo, FPDF_AddInstalledFont, FPDF_GetDefaultTTFMap*, FPDF_FreeDefaultSystemFontInfo (fpdf_sysfontinfo.h)~7Custom native font-discovery hooks; PDFium's built-in font handling suffices for deterministic rendering.
FSDK_*, FPDF_BStr_* (fpdf_ext.h)3+Unsupported-object / localtime / XFA string handlers — embedder infrastructure with no managed equivalent.
FPDF_LoadXFA, FPDF_GetXFAPacket*4XFA forms — not supported by the non-XFA build.
FPDFJavaScriptAction_*, document JavaScript2Document-level JavaScript can be enumerated but not executed without V8; left out until there is a use case.
FPDF_RenderPage (HDC), FPDF_SetPrintMode2Windows GDI device-context drawing. The managed API renders to PNG/bitmaps instead.
*Skia* entry pointsSkia backend is not in the default build.
FPDF_InitLibraryWithConfig, FPDF_DestroyLibrary, FPDF_SetSandBoxPolicy3Library lifetime is owned by PdfiumNative (init once, never destroyed); not part of the public surface.
FPDF_LoadDocument, FPDF_LoadCustomDocument, FPDF_LoadMemDocument643Alternate load paths; the wrapper standardises on FPDF_LoadMemDocument over a pinned buffer.

Could be added later — meaningful, not wrapped yet

These are genuine candidates; they were out of scope for the first pass.

Native groupUnwrappedNotes
FPDFAnnot_* (fpdf_annot.h)49Only subtype/rect/color/contents read + create/remove are wrapped. Ink lists, vertices, quad points, attachment points, appearance streams, link/focus subtypes, object append, and most form-field setters are not.
FPDFPageObj_* / FPDFPath_* / FPDFImageObj_* / FPDFTextObj_* / FPDFFont_* / FPDFClipPath_* / FPDFPageObjMark_*~95Deep content editing: image objects (load JPEG / set bitmap), path-segment iteration, font embedding from data, marked content, glyph paths, clip paths. Only text/rectangle creation and object enumeration are wrapped.
FORM_* (fpdf_formfill.h)31Interactive form eventsFORM_OnLButtonDown, keystrokes, focus, selection, FORM_GetFocusedText, etc. The wrapper does headless field read + widget render only.
FPDF_StructElement_* (fpdf_structtree.h)23Beyond type/title/alt-text/children: IDs, language, marked-content IDs, parents, and the full attribute-map API.
FPDFText_* (fpdf_text.h)23Char angle, matrix, loose box, fill/stroke color, font info/flags/weight, generated/hyphen flags, FindPrev.
FPDFPage_*20FPDF_MovePages, additional-actions, media/crop/bleed/trim box get/set, FPDFPage_TransFormWithClip, FPDFPage_GetThumbnailAsBitmap.
Named destinations — FPDF_GetNamedDest*, FPDF_CountNamedDests3Lookup of named destinations (bookmarks/links resolve destinations directly today).
Viewer preferences — FPDF_VIEWERREF_*7Print scaling, duplex, copy count, print page ranges.
FPDF_ImportNPagesToOne, FPDF_NewXObjectFromPage, form XObjects4N-up imposition and reusable page XObjects.
FPDF_DeviceToPage / FPDF_PageToDevice2Device⇄page coordinate conversion helpers.
FPDFCatalog_*, FPDF_GetTrailerEnds, FPDF_DocumentHasValidCrossReferenceTable5Catalog tagging/language, trailer offsets, xref-health probe.
FPDFBitmap_* (FPDFBitmap_Create, GetBuffer, GetWidth/Height/Stride, GetFormat)6Standalone bitmap manipulation; the wrapper drives bitmaps internally via the external-buffer path.
FPDFAttachment_HasKey/GetValueType/GetStringValue/SetStringValue4Attachment params-dictionary access (name/subtype/data are wrapped).