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.
| Area | Managed entry points |
|---|---|
| Document load / metadata | PdfiumDocument.Load, GetProperties, GetPdfVersion, GetPermissions/GetUserPermissions, GetSecurityHandlerRevision, GetPageDisplayMode, GetPageLabel, GetFileIdentifier |
| Pages & rendering | PageCount, GetPageSize(s), RenderPage (DPI or RenderOptions), RenderPages, RenderRegion (clip/scale), LoadPage → PdfPage |
| Text & search | PdfPage.GetText, GetChars, GetTextInRectangle, GetTextRectangles, GetCharIndexAt, Search |
| Navigation | GetBookmarks (outline tree), destinations, actions, PdfPage.GetLinks, GetWebLinks |
| Annotations | PdfPage.GetAnnotations, AddAnnotation, RemoveAnnotation |
| Forms (AcroForm) | GetFormType, LoadForm → PdfForm.GetFields, RenderPage (widgets), SetHighlight |
| Page manipulation | NewPage, DeletePage, ImportPages, CopyViewerPreferences, PdfPage.Rotation, Flatten, GenerateContent |
| Page content editing | PdfPage.GetObjects, AddText, AddRectangle |
| Save | PdfiumDocument.Save (bytes / stream, FPDF_FILEWRITE) |
| Attachments | AttachmentCount, GetAttachments, AddAttachment, DeleteAttachment, PdfAttachment.GetData/SetData |
| Signatures | SignatureCount, GetSignatures (metadata only; no cryptographic verification) |
| Structure / accessibility | PdfPage.GetStructureTree (tagged PDF), embedded thumbnails via GetEmbeddedThumbnail |
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 group | Count | Why it is excluded |
|---|---|---|
FPDFAvail_* (fpdf_dataavail.h) |
8 | Progressive 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) |
4 | Incremental/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) |
~7 | Custom 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* |
4 | XFA forms — not supported by the non-XFA build. |
FPDFJavaScriptAction_*, document JavaScript |
2 | Document-level JavaScript can be enumerated but not executed without V8; left out until there is a use case. |
FPDF_RenderPage (HDC), FPDF_SetPrintMode |
2 | Windows GDI device-context drawing. The managed API renders to PNG/bitmaps instead. |
*Skia* entry points |
— | Skia backend is not in the default build. |
FPDF_InitLibraryWithConfig, FPDF_DestroyLibrary, FPDF_SetSandBoxPolicy |
3 | Library lifetime is owned by PdfiumNative (init once, never destroyed); not part of the public surface. |
FPDF_LoadDocument, FPDF_LoadCustomDocument, FPDF_LoadMemDocument64 |
3 | Alternate load paths; the wrapper standardises on FPDF_LoadMemDocument over a pinned buffer. |
These are genuine candidates; they were out of scope for the first pass.
| Native group | Unwrapped | Notes |
|---|---|---|
FPDFAnnot_* (fpdf_annot.h) |
49 | Only 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_* |
~95 | Deep 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) |
31 | Interactive form events — FORM_OnLButtonDown, keystrokes, focus, selection, FORM_GetFocusedText, etc. The wrapper does headless field read + widget render only. |
FPDF_StructElement_* (fpdf_structtree.h) |
23 | Beyond type/title/alt-text/children: IDs, language, marked-content IDs, parents, and the full attribute-map API. |
FPDFText_* (fpdf_text.h) |
23 | Char angle, matrix, loose box, fill/stroke color, font info/flags/weight, generated/hyphen flags, FindPrev. |
FPDFPage_* |
20 | FPDF_MovePages, additional-actions, media/crop/bleed/trim box get/set, FPDFPage_TransFormWithClip, FPDFPage_GetThumbnailAsBitmap. |
Named destinations — FPDF_GetNamedDest*, FPDF_CountNamedDests |
3 | Lookup of named destinations (bookmarks/links resolve destinations directly today). |
Viewer preferences — FPDF_VIEWERREF_* |
7 | Print scaling, duplex, copy count, print page ranges. |
FPDF_ImportNPagesToOne, FPDF_NewXObjectFromPage, form XObjects |
4 | N-up imposition and reusable page XObjects. |
FPDF_DeviceToPage / FPDF_PageToDevice |
2 | Device⇄page coordinate conversion helpers. |
FPDFCatalog_*, FPDF_GetTrailerEnds, FPDF_DocumentHasValidCrossReferenceTable |
5 | Catalog tagging/language, trailer offsets, xref-health probe. |
FPDFBitmap_* (FPDFBitmap_Create, GetBuffer, GetWidth/Height/Stride, GetFormat) |
6 | Standalone bitmap manipulation; the wrapper drives bitmaps internally via the external-buffer path. |
FPDFAttachment_HasKey/GetValueType/GetStringValue/SetStringValue |
4 | Attachment params-dictionary access (name/subtype/data are wrapped). |