The bundled pdfium.dll (bblanchon.PDFium 158.0.8111) exports 471 functions —
the complete public PDFium C API. Morph.PDFium currently binds 170 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, GetLanguage |
| Pages & rendering | PageCount, GetPageSize(s), RenderPage (DPI or RenderOptions), RenderPages, RenderRegion (clip/scale), LoadPage → PdfPage |
| HTML | RenderHtml (whole document), RenderPageHtml / PdfPage.RenderHtml (page fragment), HtmlOptions; uses char origin/loose box/angle/matrix, font info/weight, fill and stroke color, text object render mode (get and set, to render the page without its text) and stroke width, form XObject children, text object font, generated flag, FPDF_PageToDevice, and page object marks, matrix and active flag (to leave out header and footer artifacts) |
| 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: rendering is deterministic for documents whose fonts are embedded; any other font, the standard 14 included, is substituted from the system's fonts where one matches, which vary by machine, and otherwise from PDFium's built-in ones. |
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 (only read, for header and footer artifacts), 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) |
9 | Hyphen flag, unicode-map-error flag, char/text index conversion, and the text-object editing calls (LoadFont, LoadStandardFont, LoadCidType, SetCharcodes, SetPositions). |
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 |
1 | Device→page coordinate conversion (FPDF_PageToDevice is bound, used internally for clip and HTML layout). |
FPDFCatalog_IsTagged, FPDFCatalog_SetLanguage, FPDF_GetTrailerEnds, FPDF_DocumentHasValidCrossReferenceTable |
4 | Catalog tagging flag and setting the 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). |