API reference
The public surface area of JetsonPDF, grouped by namespace. For full member-level docs — constructor signatures, properties, XML doc-comments — see the source.
- jetsonpdf-writer-api.pdf (18.8 KB) —
JetsonPDF, annotations, forms, security. - jetsonpdf-reader-api.pdf (15.7 KB) —
JetsonPDF.Reading. - jetsonpdf-fluent-api.pdf (19.7 KB) —
JetsonPDF.Fluent. - jetsonpdf-flow-api.pdf (58.8 KB) —
JetsonPDF.Flow. - jetsonpdf-forms-api.pdf (7.5 KB) —
JetsonPDF.Forms(editing existing AcroForms). - jetsonpdf-composition-api.pdf (7.3 KB) —
JetsonPDF.Compositionpage extract & merge. - jetsonpdf-tiff-api.pdf (11.5 KB) —
JetsonPDF.Tiffcodec + PDF → TIFF converters (Windows desktop & browser). - jetsonpdf-wpf-api.pdf (12.3 KB) —
JetsonPDF.WpfPDF ↔ XAML converters & authoring dialect. - jetsonpdf-opensilver-api.pdf (9.7 KB) —
JetsonPDF.OpenSilverbrowser-side converters &TiffViewer.
Namespace JetsonPDF — JetsonPDF.Writer.dll
The core writer API: documents, pages, fonts, images, colour, paths, and document-level features.
| Type | Purpose |
|---|---|
Document | Top-level document. Configure metadata, encryption, conformance flags, then call AddPage and Save() / Save(path | Stream) (the no-arg overload returns a byte[]). Open an existing PDF for editing via Document.Open(string | byte[] | Stream, password?). |
Page | One page. Drawing surface for text, images, paths, annotations, widgets, and tagged content blocks. |
PageSize | Readonly record struct in points. Built-ins: Letter, Legal, Tabloid, A3, A4, A5. |
Font | Font handle for drawing — one of the standard 14 (FontFamily + FontStyle) or an EmbeddedFontFace. |
FontFamily / FontStyle | Enums covering the standard 14 (Helvetica / Times / Courier / Symbol / ZapfDingbats) and Regular / Bold / Italic / BoldItalic. |
EmbeddedFontFace | Loads TTF / OTF (CFF1) bytes for embedding. Subsetting happens at save time. |
Type3Font / Type3GlyphBuilder | Procedural fonts: glyphs drawn as content streams. Auto-emits /ToUnicode. |
Image | Raster image XObject. Construct via FromFile, FromJpeg, FromPng; same instance dedups across pages. |
ImageMask | 1-bit stencil mask for use as an image's /Mask or via DrawImageMask. |
FormXObject | Reusable content stream for headers, watermarks, logos — drawn via page.DrawForm. |
Path | Vector path with full PDF path operators: move, line, curve, close, fill rule, dashes, joins. |
Color | Colour value — Rgb, Cmyk, Gray factories, plus named constants. |
ColorSpace + subclasses | CalGrayColorSpace, CalRgbColorSpace, LabColorSpace, SeparationColorSpace, DeviceNColorSpace. |
Shading + subclasses | AxialShading, RadialShading, FunctionBasedShading for gradients and procedural fills. |
TilingPattern | Tiling pattern XObject (PaintType 1 coloured / 2 uncoloured); fill paths/text via the pattern colour space. |
TransparencyGroup | Page-level /Group attributes (Isolated / Knockout / blending colour space) for ISO 32000-2 ยง11.6.6 compositing. |
OptionalContentGroup / LayerScope | Layered content (OCGs); toggleable visibility in viewers. |
StructureElement / StructureAttributes | Tagged-PDF structure tree elements with attribute bundles. |
OutlineTree / OutlineItem | Bookmark tree for the document /Outlines dict. |
PageLayout / PageMode / ViewerPreferences | Catalog-level viewer presentation settings. |
Measure + subclasses | RectilinearMeasure (/RL), GeospatialMeasure (/GEO) and NumberFormat. |
CoordinateSystem | EPSG / WKT projection paired with GeospatialMeasure. |
Viewport | Per-page viewport tying a region of the page to a measurement system. |
Linearizer | Static rewriter; takes any PDF and re-emits it in ISO Annex F fast-web-view form. |
IncrementalUpdater | Append-only edits to an existing PDF without rewriting unchanged bytes. |
Conformance | Flags enum: PDF/A-1b, 2A/2B/2U, 3A/3B/3U, PDF/UA-1, UA-2. |
ConformanceValidator | Static validator; doc.Validate() shorthand returns IReadOnlyList<ConformanceIssue>. |
ConformanceIssue / ConformanceSeverity | One issue from validation: code, message, severity (Error / Warning). |
ConformanceException | Thrown by Save when ThrowOnConformanceError is set and validation fails. |
EmbeddedFile | Embedded file stream — the body of a /Filespec. |
AssociatedFile / AfRelationship | Catalog / page / annotation /AF entries with relationship enum (Source / Data / Alternative / Supplement / EncryptedPayload / FormData / Schema / Unspecified). |
PieceInfoEntry | Editor metadata round-trip via the page /PieceInfo dict. |
IccProfile | ICC profile blob attached to images / colour spaces. |
Namespace JetsonPDF.Annotations
Every annotation subtype shipped. Add via page.AddAnnotation(...) or convenience helpers like page.AddLink(...).
| Type | Purpose |
|---|---|
Annotation | Abstract base — rectangle, page link, contents, colour, flags. |
LinkAnnotation | Clickable rectangle — URI, GoTo, GoToR, Launch, Hide, SetOCGState, ImportData, Sound actions. |
TextMarkupAnnotation + TextMarkupKind | Highlight / Underline / StrikeOut / Squiggly with quad-point geometry. Uses Quad.OverText for accurate ascent/descent. |
FreeTextAnnotation | Free-floating text annotation with optional callout, justification, font. |
GeometricAnnotation + subclasses | LineAnnotation, SquareAnnotation, CircleAnnotation, PolygonAnnotation, PolyLineAnnotation, InkAnnotation. |
LineEnding | Line-ending style enum (Square, Circle, Diamond, OpenArrow, ClosedArrow, …). |
StampAnnotation | Rubber-stamp annotation with user-supplied or built-in icon name. |
CaretAnnotation | Editorial caret marker. |
FileAttachmentAnnotation + FileAttachmentIcon | Embedded-file marker; carries a EmbeddedFile + filespec. |
PopupAnnotation | Popup window for a parent markup annotation's notes. |
SoundAnnotation | Sound clip annotation; raw PCM with sample rate / channels metadata. |
RedactionAnnotation | Redaction marker (visible rectangle plus future-application metadata). |
Namespace JetsonPDF.Forms
AcroForm widgets. All inherit Widget; add via page.AddTextField, AddCheckBox, AddRadioGroup, AddComboBox, AddListBox, AddPushButton, AddSignatureField, AddBarcodeField.
| Type | Purpose |
|---|---|
Widget | Abstract widget base — field name, rectangle, flags, optional /AA additional actions. |
TextField | Single- or multi-line text input. Combs, password, multi-line, max length. |
CheckBox | On/off checkbox; IsChecked default state. |
RadioGroup / RadioButton | Mutually-exclusive radio group with multiple RadioButton children. |
ComboBox / ListBox | Choice fields. Sort, multi-select, commit-on-select-change. |
PushButton | Click button with caption and WidgetAction. |
SignatureField | Empty /Sig placeholder for an external signing pass. |
BarcodeField | 2D barcode field (§12.7.4.5) painted from a caller-supplied bool[,] module matrix. |
BarcodeSymbology | Enum: QRCode / DataMatrix / PDF417 / Code128 / Code39. |
AdditionalActions | /AA trigger map: Keystroke / Format / Validate / Calculate / mouse events. |
SignatureSeedValue / SeedValueFlags | Filter / sub-filter / digest / reasons / MDP constraints emitted as /SV. |
FieldLock / FieldLockAction | Static /Lock dict: All / Include / Exclude. |
FieldAlignment | Left / Center / Right alignment for field appearance streams. |
Pdf*Collection | Per-document widget enumerators (TextFieldCollection, …) iterating across all pages. |
Encryption & signatures
All in JetsonPDF namespace; grouped here by purpose.
| Type | Purpose |
|---|---|
EncryptionOptions | User / owner password, permissions, algorithm. Assign to doc.Encryption. |
EncryptionAlgorithm | Enum: Aes128 (V4 R4) and Aes256 (V5 R6, PDF 2.0). |
Permissions | Flags enum: Print / Modify / CopyContent / AddAnnots / FillForms / Accessibility / Assemble / PrintHigh. |
Signer | Static. Sign(byte[], options) / Sign(input, output, options). Detached PKCS#7. |
SignatureOptions | Certificate, reason, location, contact, field name, hash algorithm, reserved-bytes, optional DocMDP / FieldMDP. |
DocMdpPermission | NoChanges / FormFilling / FormFillingAndAnnotations. |
FieldMdpRestriction | Per-field MDP transform: All / Include / Exclude. |
Timestamper / TimestampOptions / PdfTimestampClient | RFC 3161 DocTimeStamp via caller-supplied or built-in HTTP TSA client. |
Dss | Static. AddSecurityStore writes /DSS + per-signature VRI for PAdES B-LTA. |
DocumentSecurityStore / Vri | Document-level cert / CRL / OCSP store + per-signature VRI sub-dict. |
Namespace JetsonPDF.Reading — JetsonPDF.Reader.dll
Read-side DTOs. Everything starts with Reader.Load.
| Type | Purpose |
|---|---|
Reader | Static entry point. Load(string | Stream | byte[], password?) → ReadDocument. |
ReadDocument | Parsed document: Pages, Info, Outlines, PageLabels, NamedDestinations, PageLayout, PageMode, ViewerPreferences, OpenAction, Language, IsEncrypted, EncryptionAuthenticated, OutputIntents, Conformance, DocMdpPermission, CalculationOrder. |
ReadPage | One page: dimensions, Items (text / vector / image / inline-image / form-XObject), annotations, widgets. |
PageItem + subclasses | PageTextItem, PagePathItem, PageImageItem, PageInlineImageItem, PageFormXObjectItem. |
ReadOutlineItem | Bookmark-tree node with title, destination, child list. |
ReadStructureTree / ReadStructureElement / ReadStructureAttributes | Tagged-PDF tree, recursively. AnnotationRefs resolves OBJR child refs. |
ReadOptionalContentGroup | OCGs and the catalog /D default config. |
ReadOutputIntent | Output intent (PDF/A / PDF/X) with ICC profile and identifier. |
ReadSignature | Signature field metadata: signer, time, reason, MDP / FieldMDP, integrity status. |
ReadSignatureSeedValue / ReadFieldMdpRestriction | /SV and FieldMDP transform read-back. |
ReadDocumentSecurityStore / ReadVri | Catalog-level /DSS with VRI sub-dict (cert / CRL / OCSP). |
ReadAdditionalActions | Field /AA trigger map round-trip. |
ReadMeasure / ReadViewport / ReadNumberFormat / ReadCoordinateSystem | §12.9 / §12.10 measurement and geospatial DTOs. |
ReadTilingPattern | Tiling-pattern read-back with module matrix. |
ReadBarcodeMetadata | Symbology + module matrix recovered from a barcode field. |
Namespace JetsonPDF.Forms (editing existing AcroForms) — JetsonPDF.Forms.dll
Fill, modify, and save existing AcroForm PDFs via a single-layer incremental update. Top-level entry point is Form.Open; mutations are queued on FormField instances and committed on Save. Repeated Save() calls within one Form instance produce byte-identical output — mutations are re-applied against the original source bytes, never stacked on a previous save. See jetsonpdf-forms-api.pdf for the full member list.
| Type | Purpose |
|---|---|
Form | Entry point. Form.Open(string | byte[] | Stream, password?) → Form. Fields, Clear(), Save() / Save(path | Stream | SaveMode), Dispose. |
FormFieldCollection | Indexer form.Fields["name"], Contains, TryGet, IEnumerable<FormField>, stable iteration order. |
FormField | One discovered field. Properties: Name, Type, Value, Options, MaxLength, IsReadOnly, IsRequired, IsSigned, Rect, PageIndex. Fluent mutators: SetText, SetImage, SetChoice, SetChoices, SetChecked, Toggle, SelectRadio, Clear. |
FormFieldType | Enum: Text, CheckBox, Radio, PushButton, ComboBox, ListBox, Signature, Unknown. |
ImageAlignment | Enum for SetImage placement: Center (default, aspect-preserved), TopLeft, TopRight, BottomLeft, BottomRight, Stretch. |
SaveMode | Output strategy passed to Form.Save. SingleLayer (the default) emits original bytes + one incremental section. |
SetImage bakes a Form XObject /AP /N at the widget's rect. The markReadOnly parameter (default true) sets the field's ReadOnly bit so Acrobat renders the appearance immediately on text widgets. ReadOnly is never applied to signature widgets — the user must remain able to invoke Sign. Signed signature widgets reject all mutations because the cryptographic byte range covers /AP.
Namespace JetsonPDF.Composition — JetsonPDF.Composition.dll
Page-level assembly — extract a subset of pages into a new PDF, or merge whole PDFs into one. Lossless COS object-graph copy (not a render pass); outlines, named destinations, and AcroForm fields carry over with cross-document collision handling. Both types are static and thread-safe. See the Composition guide for the full walkthrough, or jetsonpdf-composition-api.pdf for the paginated reference.
| Type | Purpose |
|---|---|
PageExtractor | Static. Extract(byte[] source, params int[] pageNumbers) (1-based, order-preserving so it reorders / duplicates), Extract(byte[], string password, …), file- and Stream-based overloads, and ExtractRange(byte[], firstPage, lastPage) for an inclusive range. |
Merger | Static. Merge(params byte[][] sources) / Merge(IEnumerable<byte[]>) → byte[], plus Merge(IEnumerable<string> inputPaths, string outputPath) and Merge(IEnumerable<Stream> inputs, Stream output). Concatenates in order; sources must be decrypted first. |
Namespace JetsonPDF.Fluent — JetsonPDF.Fluent.dll
QuestPDF-style fluent layout API. Compose a FluentDocument from Page + slot containers (Header/Footer/Background/Foreground/Content); pages auto-paginate on overflow. Two-pass renderer resolves {TotalPages} after layout. See jetsonpdf-fluent-api.pdf for the full member list.
| Type | Purpose |
|---|---|
FluentDocument | Entry point. FluentDocument.Create(d => d.Page(...)) → configure with WithMetadata / WithFonts / WithOutline / WithConformance / WithLanguage / WithOutputIntent / WithPageLabels / WithLayer; render via GeneratePdf() / GeneratePdf(path | Stream) (the no-arg overload returns a byte[]). |
IDocumentContainer | Receives .Page(p => ...) calls — one block per page descriptor (each block can paginate to many physical pages). |
IPageDescriptor | Per-page config: Size, Margin, DefaultTextStyle, plus the five layered slots: Background, Header, Content, Footer, Foreground. |
IContainer + extensions | The fluent slot. Layout decorators: Padding*, Width/Height/Min*/Max*, AlignLeft/Center/Right/Top/Middle/Bottom, Background, Border, AspectRatio, Translate, Rotate, ShowOnce/SkipOnce/ShowEntire/EnsureSpace, Layer, Section/SectionLink/Link. |
ColumnDescriptor / RowDescriptor | Vertical / horizontal containers via .Column(c => c.Item().Text(...)) / .Row(r => r.RelativeItem(); r.ConstantItem(80)). |
TableDescriptor + TableHeaderDescriptor/TableFooterDescriptor | .Table(t => { t.ColumnsDefinition(c => c.RelativeColumn(); c.ConstantColumn(80)); t.Header(h => ...); t.Cell(columnSpan, rowSpan).Text(...); t.Footer(f => ...); }). Auto-paginating body, repeating header, last-page footer, row-span atomic blocks. |
TextDescriptor | Rich text inside .Text(t => t.Span("...").Bold(); t.CurrentPageNumber(); t.TotalPages()). Per-run Bold/Italic/Underline/FontSize/FontColor; multi-line wrap. |
TextStyle | Mutable style: FontFamily (string), FontSize, FontStyle, FontColor, LineHeight, …. |
FontRegistry | Custom-font registration: RegisterFromFile / RegisterFromBytes. Standard 14 work without registration. |
Colors | Material-palette static class: Colors.Grey50, Colors.IndigoDark, …, plus Colors.FromHex("#213F85"). |
| Form-widget extensions | On any IContainer leaf: .AsTextField(name), .AsCheckBox, .AsComboBox(name, options), .AsListBox, .AsPushButton(name, caption). Acrobat draws the chrome. |
IDynamicComponent / IDrawingSurface | Per-page content via .Component(IDynamicComponent); raw drawing escape via .Canvas((surface, w, h) => ...). |
OutlineBuilder / PageLabelsBuilder / LayerHandle | Helpers for WithOutline, WithPageLabels, and OCG layer scoping. |
Namespace JetsonPDF.Flow — JetsonPDF.Flow.dll
Word-like retained-mode DOM. Build a FlowDocument tree of Section → Paragraph/Table/BlockImage/PageBreak, then Save. The renderer paginates over JetsonPDF.Fluent. See jetsonpdf-flow-api.pdf for the full surface.
| Type | Purpose |
|---|---|
FlowDocument | Top-level. Title, Author, DefaultRunProperties, Sections, Styles, AutomaticOutline, Hyphenator, ConfigureFonts; AddSection / AddStyle; Save() / Save(path | Stream) (the no-arg overload returns a byte[]). |
Section | Page-setup unit: PageSize, PageMargins, StartsOnNewPage, ColumnCount/ColumnGap, FootnoteAreaHeight, Header/Footer/Body blocks. |
Paragraph | Block of inline runs. Style (built-in), StyleName (named), Alignment, SpaceBefore/SpaceAfter, LineSpacing, LeftIndent/RightIndent, FirstLineIndent, KeepWithNext/KeepLinesTogether, PageBreakBefore, ListMarker, DropCap, FloatImage, TabStops, Bookmark. |
| Run helpers | Inside p => ...: AddText("...").Bold().Italic().Underline().Strikethrough(), .Link(url), .Comment(author, text), .AsInsertion/AsDeletion (track changes); plus p.AddPageNumber(), p.AddPageCount(), p.AddFootnote(text), p.AddEndnote(text), p.AddTab(). |
RunProperties / ParagraphProperties | The cascading style buckets used by DefaultRunProperties and NamedStyle. |
NamedStyle / ParagraphStyle | User-defined named styles with a BasedOn chain. ParagraphStyle = built-in palette (Heading1..Heading3, Quote, Caption, Body, …). |
Table + TableRow + TableCell | Block-level table. Columns (relative weights), Header/Body, RepeatHeader, CellBorderWidth, CellPadding; cells take a string or a Paragraph. |
BlockImage / AnchoredImage + AnchorSide | Inline block image, plus floating image (FloatImage on a paragraph) with text wrap. |
PageBreak | Hard page break inside a section body. |
ListMarker / ListKind | Auto-counter list bullets / numbers / roman / letter at level; hanging indent. |
DropCap | Decorative drop cap at the start of a paragraph (LineSpan). |
TableOfContents / EndnoteList / CommentList | Auto-collected document blocks — place inside any section body. |
TabStop + TabAlignment | Per-paragraph tab stops, paired with p.AddTab() calls. |
Hyphenation.Hyphenator | Optional Liang-pattern hyphenator. Hyphenator.EnglishDefault(); line-breaker prefers soft-hyphen splits. |
StylePresets | Static helpers that prebuild common NamedStyle bundles. |
Namespace JetsonPDF.Wpf — JetsonPDF.Wpf.dll (net8.0-windows)
| Type | Purpose |
|---|---|
PdfToXamlConverter | Static. Convert(ReadDocument, options?) → XAML string (a StackPanel of Canvas pages). |
PdfToXamlOptions | Knobs for the converter: page background, scale, image format, …. |
Base64ImageExtension | Markup extension {jetsonpdf:Base64Image} — decodes inline base64 image bytes without touching disk. |
StandardFontMap | WPF FontFamily ↔ PDF standard-14 mapping used by both converters. |
Sub-namespace JetsonPDF.Wpf.Authoring
| Type | Purpose |
|---|---|
XamlToPdfConverter | Static. Convert(string xaml, options?) → byte[] or (string, Stream, options?) overload. STA-only. |
XamlToPdfOptions | DPI / image quality / font fallback options for the authoring pipeline. |
Document | XAML root element <jetsonpdf:Document>: PageSize, Landscape, Title, Author, Pages collection. |
Page | Member of Document.Pages with optional per-page size/landscape overrides. |
PaginatedTable + PaginatedColumn | Multi-page table with auto-overflow and repeating headers; jetsonpdf:Pagination.HideOnOverflow attached prop. |
Form (attached props) | jetsonpdf:Form.FieldName + MaxLength / IsMultiline / IsPassword / Action — turn a TextBox/CheckBox/ComboBox/ListBox/Button into an AcroForm widget. |
PageNumberExtension / PageCountExtension | Markup extensions {jetsonpdf:PageNumber} / {jetsonpdf:PageCount}; resolve per page during authoring. |
VisualTreeEmitter | The walker that turns an arranged WPF visual tree into PDF drawing operators. Public for advanced extension scenarios. |
Namespace JetsonPDF.OpenSilver — JetsonPDF.OpenSilver.dll (netstandard2.0)
The OpenSilver-side counterpart to JetsonPDF.Wpf: same xmlns:jetsonpdf authoring dialect, walker runs on the OpenSilver layout pass. See the OpenSilver guide for hosting, the JS bridge, and the showcase.
| Type | Purpose |
|---|---|
Base64ImageExtension | Markup extension {jetsonpdf:Base64Image Data='…'} — wraps the payload in a data: URI so OpenSilver's BitmapImage decodes it natively. |
WidgetActions | Attached behaviour for AcroForm widgets emitted by PdfToXamlConverter: URI / Named("Print") / ResetForm dispatch via browser JS interop. |
IJpegPixelDecoder / IJpxPixelDecoder | Optional hooks: decode JPEG / JPEG 2000 bytes to RGB24 pixels so ResourceCache can composite a paired SMask alpha. Without one registered, JPEG+SMask alpha is dropped (the JPEG renders opaque). |
OpenSilverImageDecoders | Static slots (.Jpeg, .Jpx) where consumers plug in the decoders above — e.g. a SkiaSharp / ImageSharp wrapper. |
Sub-namespace JetsonPDF.OpenSilver.Authoring
| Type | Purpose |
|---|---|
XamlToPdfConverter | Static. ConvertAsync(string xaml, options?) → Task<byte[]> or (string, Stream, options?) overload. Async (OpenSilver image loading is async). |
OpenSilverTreeWalker | Walker implementing IXamlTreeWalker. Set HostContainer to a hosted Panel for accurate layout in a Wasm host. |
Document / Page / Form / PaginatedTable / … | Same authoring dialect as the WPF integration — types come from the shared JetsonPDF.XamlToPdfConverter.Authoring projitems, compiled into the OpenSilver namespace under the OPENSILVER conditional. |
PageNumberExtension / PageCountExtension | Markup extensions {jetsonpdf:PageNumber} / {jetsonpdf:PageCount}; resolve per page during the walk. |
Namespace JetsonPDF.Tiff — PDF → TIFF rasterization
Rasterize a PDF into a multipage TIFF. All types live in the JetsonPDF.Tiff namespace but ship across three packages: the managed codec (JetsonPDF.Tiff, netstandard2.0), the Windows desktop converter (JetsonPDF.PdfToTiffConverter, net8.0-windows), and the browser converter (part of JetsonPDF.OpenSilver).
| Type | Purpose |
|---|---|
PdfToTiffConverter | Static, Windows-only (STA). ConvertToFile(pdfPath, tiffPath, options?, progress?) / ConvertToFileAsync, stream-based ConvertAsync(ReadDocument, Stream, ...), and RenderPageAsync(ReadPage) → BitmapSource. Drives the WPF PdfToXamlConverter + RenderTargetBitmap render path. |
PdfToTiffOptions | Conversion knobs: Dpi, Compression, ColorMode, BlackAndWhiteThreshold, MultipageStrategy, Pages, BackgroundArgb, RowsPerStrip, XamlOptions. ParsePageRange("1-3,5") builds a page list from a spec. |
TiffColorMode / TiffMultipageStrategy | Enums: Color / Grayscale / BlackAndWhite; SingleMultiPage / OneTiffPerPage. |
PdfToTiffBrowserConverter | Static, in JetsonPDF.OpenSilver. ConvertAsync(byte[] pdfBytes, Panel host, TiffWriteOptions?, progress?) → Task<byte[]> — rasterizes in WebAssembly via html2canvas. |
TiffConversionProgress / TiffConversionStage | Progress payload reported by both converters: weighted Fraction, bindable Description, Stage (Starting / ConvertingXaml / Rendering / Encoding / Completed). |
TiffImage / TiffFrame | TIFF reader. TiffImage.Decode(bytes) → multi-frame image; each TiffFrame exposes EncodePng() and ToDataUri() so browsers (which can't render TIFF) can display it. |
TiffWriter / TiffEncodeFrame / TiffWriteOptions | Managed TIFF writer. TiffWriter.Encode(frames, options) chains IFDs for multi-frame output; None / PackBits / Deflate / AdobeDeflate compression. |
TiffCompression / TiffEncodePixelFormat | Enums: compression codes; Rgb / Rgba / Grayscale / BlackAndWhite on-disk pixel formats. |