Skip to content

Dart API リファレンス

PDF Oxide は、ネイティブの C ABI 上に dart:ffi で構築された自然な Dart / Flutter バインディングを提供します。パッケージは実行時にビルド済みの libpdf_oxide.{so,dylib,dll} を読み込み、抽出・編集・作成・レンダリング・フォーム・OCR・バーコード・電子署名・適合性検証まで、すべての機能を公開します。

dart pub add pdf_oxide
import 'package:pdf_oxide/pdf_oxide.dart';

ネイティブハンドルは NativeFinalizer によって自動的に解放されますが、ハンドルを保持するすべてのクラスは冪等な close() も公開しており、処理を終えたら呼び出すべきです(または addTearDown / try / finally を利用してください)。C-ABI のエラーコードは PdfOxideError としてスローされます。ページインデックスはすべて 0 始まりです。

他の言語については、Python API リファレンスNode.js API リファレンス または WASM API リファレンスRust API リファレンス、および 型と列挙型 を参照してください。


PdfDocument

PDF を開く・抽出する・レンダリングする・検証する・検査するための主要クラスです。

コンストラクタ / ファクトリ

static PdfDocument open(String path)
static PdfDocument openFromBytes(Uint8List data)
static PdfDocument openWithPassword(String path, String password)
static PdfDocument openFromDocxBytes(Uint8List data)
static PdfDocument openFromPptxBytes(Uint8List data)
static PdfDocument openFromXlsxBytes(Uint8List data)
  • open — ファイルシステムのパスから PDF を開きます。
  • openFromBytes — メモリ上のバイト列から PDF を開きます。
  • openWithPassword — パスワード保護された PDF を開きます。
  • openFromDocxBytes / openFromPptxBytes / openFromXlsxBytes — DOCX/PPTX/XLSX のバイト列から直接ドキュメントを開きます。

ドキュメント情報

int get pageCount
PdfVersion get version
bool isEncrypted()
bool hasStructureTree()
bool authenticate(String password)
  • pageCount — ページ数。
  • versionPdfVersion(major, minor) 形式の PDF バージョン。
  • isEncrypted — ドキュメントが暗号化されているかどうか。
  • hasStructureTree — 構造ツリーを持つタグ付き PDF かどうか。
  • authenticate — 暗号化された PDF を認証します。成功時は true、パスワードが誤っている場合は false を返します。

テキストと変換

String extractText(int page)
String toPlainText(int page)
String toMarkdown(int page)
String toHtml(int page)
String extractStructuredJson(int page)
String toMarkdownAll()
String toHtmlAll()
String toPlainTextAll()
  • extractText — 単一ページの抽出済みプレーンテキスト。
  • toPlainText / toMarkdown / toHtml — 単一ページをプレーンテキスト・Markdown・HTML に変換します。
  • extractStructuredJson — 構造化されたページ内容(スパン、レイアウト)を JSON にシリアライズします。
  • toMarkdownAll / toHtmlAll / toPlainTextAll — ドキュメント全体を変換します。

要素の抽出

List<Char> extractChars(int page)
List<Word> extractWords(int page)
List<TextLine> extractTextLines(int page)
List<Table> extractTables(int page)
List<Font> embeddedFonts(int page)
String embeddedFontsJson(int page)
List<double> embeddedFontSizes(int page)
List<Image> embeddedImages(int page)
List<Annotation> pageAnnotations(int page)
List<AnnotationDetails> pageAnnotationDetails(int page)
String annotationsToJson(int page)
List<Path> extractPaths(int page)
  • extractChars / extractWords / extractTextLines — グリフ単位・単語単位・行単位の座標情報。
  • extractTables — 検出されたテーブル。セルは遅延読み込みされます(Table.cell)。
  • embeddedFonts / embeddedFontsJson / embeddedFontSizes — ページの埋め込みフォントメタデータ。
  • embeddedImages — 生のバイト列を含む埋め込み画像。
  • pageAnnotations — ページ上の注釈。
  • pageAnnotationDetails — 拡張された注釈属性(フラグ、日付、色、リンク URI、アイコン名、クアッドポイント)。
  • annotationsToJson — JSON にシリアライズした注釈。
  • extractPaths — ベクターパス(グラフィックス)要素。

矩形領域内の抽出

String extractTextInRect(int page, double x, double y, double w, double h)
List<Word> extractWordsInRect(int page, double x, double y, double w, double h)
List<TextLine> extractLinesInRect(int page, double x, double y, double w, double h)
List<Table> extractTablesInRect(int page, double x, double y, double w, double h)
List<Image> extractImagesInRect(int page, double x, double y, double w, double h)

ページ上の矩形(PDF ユーザー空間ポイント単位)に限定して、テキスト・単語・行・テーブル・画像を抽出します。

自動抽出と分類

String extractTextAuto(int page)
String extractPageAuto(int page, [String optionsJson = ''])
String extractAllText()
String classifyPage(int page)
String classifyDocument()
  • extractTextAuto — ページに対して、必要に応じてネイティブ抽出と画像 OCR を組み合わせて実行します。
  • extractPageAuto — 任意の JSON オプションを指定して単一ページを自動抽出します。
  • extractAllText — 全ページのテキストを 1 つの文字列で返します。
  • classifyPage / classifyDocument — ページ/ドキュメントの分類を JSON で返します(スキャン、デジタル、ハイブリッドなど)。

検索

List<SearchResult> search(int page, String term, bool caseSensitive)
List<SearchResult> searchAll(String term, bool caseSensitive)
String searchResultsToJson(int page, String term, bool caseSensitive)

単一ページ、ドキュメント全体を検索するか、ページ内の一致結果を JSON にシリアライズします。

レンダリング

RenderedImage renderPage(int pageIndex, [int format = 0])
RenderedImage renderPageZoom(int pageIndex, double zoom, [int format = 0])
RenderedImage renderPageThumbnail(int pageIndex, int size, [int format = 0])
RenderedImage renderPageWithOptions(int pageIndex, {int dpi = 150, int format = 0, double backgroundR = 1.0, double backgroundG = 1.0, double backgroundB = 1.0, double backgroundA = 1.0, bool transparentBackground = false, bool renderAnnotations = true, int jpegQuality = 90})
RenderedImage renderPageWithOptionsEx(int pageIndex, {int dpi = 150, int format = 0, double backgroundR = 1.0, double backgroundG = 1.0, double backgroundB = 1.0, double backgroundA = 1.0, bool transparentBackground = false, bool renderAnnotations = true, int jpegQuality = 90, List<String> excludedLayers = const []})
RenderedImage renderPageRegion(int pageIndex, double cropX, double cropY, double cropWidth, double cropHeight, [int format = 0])
RenderedImage renderPageFit(int pageIndex, int width, int height, [int format = 0])
RenderedImage renderPageRaw(int pageIndex, [int dpi = 150])
int estimateRenderTime(int pageIndex)
  • renderPage — ページを RenderedImage にレンダリングします(format 0=PNG、1=JPEG)。
  • renderPageZoom — 指定したズーム倍率でレンダリングします。
  • renderPageThumbnailsize ピクセル内に収まるサムネイルをレンダリングします。
  • renderPageWithOptions — RenderOptions の全機能(dpi、背景、注釈、JPEG 品質)。
  • renderPageWithOptionsExexcludedLayers による名前付き OCG レイヤーの抑制を追加します。
  • renderPageRegion — 矩形領域をレンダリングします。
  • renderPageFit — アスペクト比を保ったまま width×height 内に収まるようレンダリングします。
  • renderPageRawdpi で premultiplied RGBA8888 の生バッファにレンダリングします。
  • estimateRenderTime — ページのレンダリング時間(ミリ秒)を推定します。

ページのジオメトリと要素

double pageWidth(int pageIndex)
double pageHeight(int pageIndex)
int pageRotation(int pageIndex)
ElementList pageElements(int pageIndex)
Page page(int index)
  • pageWidth / pageHeight — PDF ポイント単位のページ寸法。
  • pageRotation — ページの回転角(度)。
  • pageElements — ページのレイアウト要素を ElementList として返します。
  • page — チェーン可能なページ単位抽出のための軽量な Page ビュー。

OCR

bool pageNeedsOcr(int pageIndex)
String ocrExtractText(int pageIndex, [OcrEngine? engine])
  • pageNeedsOcr — ページがスキャン/ハイブリッドで OCR を必要とするかどうか。
  • ocrExtractText — OCR でテキストを抽出します。engine を null にするとネイティブ抽出のみを行います。

適合性検証と変換

PdfAResults validatePdfA(int level)
UaResults validatePdfUa(int level)
PdfXResults validatePdfX(int level)
bool convertToPdfA(int level)
  • validatePdfA / validatePdfUa / validatePdfX — PDF/A、PDF/UA アクセシビリティ、PDF/X に対して検証します。
  • convertToPdfA — このドキュメントを指定したレベルの PDF/A にその場で変換します。

Office へのエクスポート

Uint8List toDocx()
Uint8List toPptx()
Uint8List toXlsx()
Uint8List sourceBytes()
  • toDocx / toPptx / toXlsx — ドキュメントを DOCX/PPTX/XLSX のバイト列にエクスポートします。
  • sourceBytes — このドキュメントを読み込んだ元のソースバイト列。

ヘッダー / フッター / アーティファクトの除去

int eraseHeader(int page)
int eraseFooter(int page)
int eraseArtifacts(int page)
int removeHeaders([double threshold = 0.5])
int removeFooters([double threshold = 0.5])
int removeArtifacts([double threshold = 0.5])
  • eraseHeader / eraseFooter / eraseArtifacts — ページ上のヘッダー、フッター、またはマーク付きアーティファクトを消去します。消去した項目数を返します。
  • removeHeaders / removeFooters / removeArtifacts — 検出しきい値を用いて、繰り返し現れる構成要素をドキュメント全体から除去します。

フォーム

List<FormField> getFormFields()
Uint8List exportFormDataToBytes([int formatType = 0])
void importFormData(String dataPath)
bool importFormFromFile(String filename)
  • getFormFields — インタラクティブな AcroForm フィールド。
  • exportFormDataToBytes — フォームデータをエクスポートします(formatType 0=FDF、1=XFDF、2=JSON)。
  • importFormData — FDF/XFDF/JSON ファイルのパスからフォームデータをインポートします。
  • importFormFromFile — ファイルからフィールド値をインポートします。何かがインポートされたかどうかを返します。

ドキュメント構造とメタデータ

String getOutline()
String getPageLabels()
String getXmpMetadata()
bool hasXfa()
String planSplitByBookmarks([String optionsJson = ''])
  • getOutline — ドキュメントのアウトライン(ブックマーク)を JSON で返します。
  • getPageLabels — ページラベルの範囲を JSON で返します。
  • getXmpMetadata — XMP メタデータ(XML)が存在すれば返します。
  • hasXfa — ドキュメントが XFA フォームを含むかどうか。
  • planSplitByBookmarks — ブックマーク単位の分割計画を JSON で生成します。

電子署名

int sign(Certificate certificate, {String reason = '', String location = ''})
int getSignatureCount()
SignatureInfo getSignature(int index)
int verifyAllSignatures()
bool hasTimestamp()
Dss getDss()
  • signCertificate を使ってドキュメントに電子署名します。
  • getSignatureCount — 存在する署名の数。
  • getSignature — 指定インデックスの SignatureInfo
  • verifyAllSignatures — すべての署名を検証します(集約ステータス)。
  • hasTimestamp — いずれかの署名がタイムスタンプを持つかどうか。
  • getDss — ドキュメントセキュリティストア(Dss)。

ライフサイクル

void close()

ネイティブハンドルを直ちに解放します(冪等)。


Page

PdfDocument.page(index) が返す、単一ページの軽量で 0 始まりのビューです。所属するドキュメントへの強参照を保持し、ドキュメントのページ単位メソッドへ委譲します。

メンバー 説明
index int 0 始まりのページインデックス
String text()
String markdown()
String html()
String plainText()

このページの抽出済みテキスト・Markdown・HTML・プレーンテキスト。


Pdf

シンプルなビルダー/保存フローのために生成(または読み込み)された PDF です。

ファクトリ

static Pdf fromMarkdown(String md)
static Pdf fromHtml(String html)
static Pdf fromText(String text)
static Pdf fromImage(String path)
static Pdf fromImageBytes(Uint8List data)
static Pdf fromHtmlCss(String html, String css, [Uint8List? fontBytes])
static Pdf fromHtmlCssWithFonts(String html, String css, List<String> families, List<Uint8List> fonts)
  • fromMarkdown / fromHtml / fromText — Markdown・HTML・プレーンテキストから PDF を作成します。
  • fromImage / fromImageBytes — 画像ファイルまたは画像バイト列を 1 ページの PDF に包みます。
  • fromHtmlCss — HTML + CSS から、任意の埋め込みフォント 1 つを伴ってビルドします。
  • fromHtmlCssWithFonts — HTML + CSS から、familiesfonts を並列に対応させたフォントカスケードでビルドします。

メソッド

int get pageCount
void save(String path)
Uint8List toBytes()
void close()
  • pageCountpdf_get_page_count エントリポイント経由のページ数。
  • save — ファイルに保存します。
  • toBytes — PDF の内容をバイト列で返します。
  • close — ネイティブハンドルを解放します(冪等)。

DocumentEditor

その場で編集するために開かれた PDF です。ページ操作、メタデータ、フォーム、墨消し、フラット化、マージ、暗号化保存に対応します。

コンストラクタ

static DocumentEditor open(String path)
static DocumentEditor openFromBytes(Uint8List data)

ドキュメント情報とメタデータ

int get pageCount
PdfVersion get version
bool isModified()
String getSourcePath()
String getProducer()
void setProducer(String value)
String getCreationDate()
void setCreationDate(String dateStr)
  • isModified — 未保存の変更があるかどうか。
  • getSourcePath — エディタを開いたときのパス。
  • getProducer / setProducer — Producer メタデータフィールド。
  • getCreationDate / setCreationDate — CreationDate メタデータフィールド。

ページ操作

void deletePage(int pageIndex)
void movePage(int from, int to)
void rotatePageBy(int page, int degrees)
void rotateAllPages(int degrees)
void setPageRotation(int page, int degrees)
int getPageRotation(int page)
void cropMargins(double left, double right, double top, double bottom)
Bbox getPageCropBox(int page)
void setPageCropBox(int page, Bbox box)
Bbox getPageMediaBox(int page)
void setPageMediaBox(int page, Bbox box)
  • deletePage / movePage — ページを削除または並べ替えます。
  • rotatePageBy — 加算的な回転。rotateAllPages — 全ページの相対回転。setPageRotation — 絶対回転。getPageRotation — 現在の回転角。
  • cropMargins — すべてのページの余白を切り取ります。
  • getPageCropBox / setPageCropBox / getPageMediaBox / setPageMediaBox — CropBox/MediaBox の読み書き。

墨消しと消去

void applyAllRedactions()
void applyPageRedactions(int page)
void eraseRegion(int page, double x, double y, double w, double h)
void eraseRegions(int page, List<List<double>> rects)
void clearEraseRegions(int page)
bool isPageMarkedForRedaction(int page)
void unmarkPageForRedaction(int page)
void redactionAdd(int page, double x1, double y1, double x2, double y2, {double r = 0.0, double g = 0.0, double b = 0.0})
int redactionCount(int page)
int redactionApply({bool scrubMetadata = false, double r = 0.0, double g = 0.0, double b = 0.0})
int redactionScrubMetadata()
  • applyAllRedactions / applyPageRedactions — キューに入った墨消しを適用します。
  • eraseRegion / eraseRegions / clearEraseRegions — 1 つ、複数の消去矩形を指定するか、保留中のものをクリアします。
  • isPageMarkedForRedaction / unmarkPageForRedaction — ページの墨消しマークを照会/クリアします。
  • redactionAdd — オーバーレイの塗りつぶし色を伴う墨消し矩形をキューに入れます。
  • redactionCount — ページにキューイングされた墨消し領域の数。
  • redactionApply — すべての墨消しを破壊的に適用します。除去されたグリフ数を返します。
  • redactionScrubMetadata — メタデータ/JavaScript/埋め込みファイルを取り除きます。除去された構成要素数を返します。

フラット化

void flattenForms()
void flattenFormsOnPage(int pageIndex)
void flattenAnnotations(int page)
void flattenAllAnnotations()
int flattenWarningsCount()
String flattenWarning(int index)
bool isPageMarkedForFlatten(int page)
void unmarkPageForFlatten(int page)
  • flattenForms / flattenFormsOnPage — すべてのフォームフィールド、または特定ページのフォームフィールドをフラット化します。
  • flattenAnnotations / flattenAllAnnotations — ページ単位またはドキュメント全体で注釈をフラット化します。
  • flattenWarningsCount / flattenWarning — 直近のフラット化保存で生じた警告。
  • isPageMarkedForFlatten / unmarkPageForFlatten — ページのフラット化マークを照会/クリアします。

フォーム

void setFormFieldValue(String name, String value)
void importFdfBytes(Uint8List data)
void importXfdfBytes(Uint8List data)
  • setFormFieldValue — 名前を指定してフィールド値を設定します。
  • importFdfBytes / importXfdfBytes — FDF/XFDF のバイト列から AcroForm の値をインポートします。

マージ / 変換 / 埋め込み / 抽出

void mergeFrom(String sourcePath)
void mergeFromBytes(Uint8List data)
void convertToPdfA(int level)
void embedFile(String name, Uint8List data)
Uint8List extractPagesToBytes(List<int> pages)
  • mergeFrom / mergeFromBytes — ディスク上またはメモリ上の PDF からページを追加します。
  • convertToPdfA — PDF/A にその場で変換します(level 0=A1b … 7=A3u)。
  • embedFile — 名前付きファイルを添付します。
  • extractPagesToBytes — ページの一部を抽出して新しいメモリ上の PDF にします。

バーコード

void addBarcodeToPage(int pageIndex, BarcodeImage barcode, double x, double y, double width, double height)

生成済みの BarcodeImage を、指定した矩形にページ上へスタンプします。

保存

void save(String path)
Uint8List saveToBytes()
Uint8List saveToBytesWithOptions(bool compress, bool garbageCollect, bool linearize)
void saveEncrypted(String path, String userPassword, String ownerPassword)
Uint8List saveEncryptedToBytes(String userPassword, String ownerPassword)
void close()
  • save / saveToBytes — ファイルまたはバイトバッファに保存します。
  • saveToBytesWithOptions — 圧縮/ガベージコレクト/リニアライズを明示的に指定して保存します。
  • saveEncrypted / saveEncryptedToBytes — AES-256 で暗号化してファイルまたはバイト列に保存します。
  • close — ネイティブハンドルを解放します(冪等)。

DocumentBuilder

まったく新しい PDF ドキュメントを組み立てるための流暢な(fluent)ビルダーです。

生成

static DocumentBuilder create()

メタデータ(fluent)

DocumentBuilder setTitle(String value)
DocumentBuilder setAuthor(String value)
DocumentBuilder setSubject(String value)
DocumentBuilder setKeywords(String value)
DocumentBuilder setCreator(String value)
DocumentBuilder onOpen(String script)
DocumentBuilder language(String lang)
DocumentBuilder taggedPdfUa1()
DocumentBuilder roleMap(String custom, String standard)
DocumentBuilder registerEmbeddedFont(String name, EmbeddedFont font)
  • setTitle/setAuthor/setSubject/setKeywords/setCreator — ドキュメントメタデータ。
  • onOpen — ドキュメントを開いたときの JavaScript。
  • language — ドキュメントの言語。
  • taggedPdfUa1 — PDF/UA-1 タグ付きモードを有効にします。
  • roleMap — カスタムの構造タイプを標準の PDF タイプにマッピングします。
  • registerEmbeddedFont — フォントを名前付きで登録します(成功時に EmbeddedFont を消費します)。

ページ

PageBuilder a4Page()
PageBuilder letterPage()
PageBuilder page(double width, double height)

A4、US レター、または任意サイズのページを PageBuilder として開きます。

ビルド / 保存

Uint8List build()
void save(String path)
void saveEncrypted(String path, String userPassword, String ownerPassword)
Uint8List toBytesEncrypted(String userPassword, String ownerPassword)
void close()
  • build — PDF をビルドしてそのバイト列を返します。
  • save — ビルドしてパスに保存します。
  • saveEncrypted / toBytesEncrypted — AES-256 で暗号化してファイルまたはバイト列にビルドします。
  • close — ネイティブハンドルを解放します(冪等)。

PageBuilder

DocumentBuilder.page / letterPage / a4Page が返す、単一ページのための流暢なビルダーです。各操作はチェーンのために this を返します。ページを確定するには done() を、破棄するには close() を呼び出します。

テキストとレイアウト

PageBuilder font(String name, double size)
PageBuilder at(double x, double y)
PageBuilder text(String value)
PageBuilder heading(int level, String value)
PageBuilder paragraph(String value)
PageBuilder space(double points)
PageBuilder horizontalRule()
PageBuilder columns(int columnCount, double gapPt, String value)
PageBuilder inline(String value)
PageBuilder inlineBold(String value)
PageBuilder inlineItalic(String value)
PageBuilder inlineColor(double r, double g, double b, String value)
PageBuilder newline()
PageBuilder footnote(String refMark, String noteText)
PageBuilder textInRect(double x, double y, double w, double h, String value, int align)
PageBuilder newPageSameSize()
  • font / at — アクティブなフォント/サイズとカーソル位置を設定します。
  • text / heading / paragraph — テキスト、指定レベルの見出し、または折り返し付き段落を出力します。
  • space / horizontalRule / newline — 縦方向の余白、罫線、改行。
  • columns — 間隔を指定した複数段組みテキスト。
  • inline / inlineBold / inlineItalic / inlineColor — インラインのテキストラン。
  • footnote — 参照マークと注釈本文。
  • textInRect — 配置コード(0=左、1=中央、2=右)を指定して矩形内に配置したテキスト。
  • newPageSameSize — 同じサイズの新しいページを開始します。

リンク

PageBuilder linkUrl(String url)
PageBuilder linkPage(int page)
PageBuilder linkNamed(String destination)
PageBuilder linkJavascript(String script)

直前のコンテンツに、URL リンク、ページ内部リンク、名前付き宛先リンク、または JavaScript リンクを付与します。

アクションとフィールドスクリプト

PageBuilder onOpen(String script)
PageBuilder onClose(String script)
PageBuilder fieldKeystroke(String script)
PageBuilder fieldFormat(String script)
PageBuilder fieldValidate(String script)
PageBuilder fieldCalculate(String script)

ページのオープン/クローズアクション、および AcroForm フィールドのキーストローク/フォーマット/検証/計算スクリプト。

テキストマークアップ

PageBuilder highlight(double r, double g, double b)
PageBuilder underline(double r, double g, double b)
PageBuilder strikeout(double r, double g, double b)
PageBuilder squiggly(double r, double g, double b)

直前のテキストに対する RGB 色のマークアップ注釈。

注釈 / 透かし / スタンプ

PageBuilder stickyNote(String value)
PageBuilder stickyNoteAt(double x, double y, String value)
PageBuilder watermark(String value)
PageBuilder watermarkConfidential()
PageBuilder watermarkDraft()
PageBuilder stamp(String typeName)
PageBuilder freetext(double x, double y, double w, double h, String value)
  • stickyNote / stickyNoteAt — カーソル位置または明示的な位置に貼り付ける付箋。
  • watermark / watermarkConfidential / watermarkDraft — カスタムまたはプリセットの透かし。
  • stamp — 名前付きのゴム印スタンプ。
  • freetext — 矩形内のフリーテキスト注釈。

画像とバーコード

PageBuilder image(Uint8List bytes, double x, double y, double w, double h)
PageBuilder imageArtifact(Uint8List bytes, double x, double y, double w, double h)
PageBuilder imageWithAlt(Uint8List bytes, double x, double y, double w, double h, String altText)
PageBuilder barcode1d(int barcodeType, String data, double x, double y, double w, double h)
PageBuilder barcodeQr(String data, double x, double y, double size)
  • image — 画像を配置します。imageArtifact — 非コンテンツ(アーティファクト)画像を配置します。imageWithAlt — アクセシビリティのための代替テキスト付きで画像を配置します。
  • barcode1d / barcodeQr — 1 次元バーコードまたは QR コードをページ上に直接描画します。

ベクターグラフィックス

PageBuilder rect(double x, double y, double w, double h)
PageBuilder filledRect(double x, double y, double w, double h, double r, double g, double b)
PageBuilder line(double x1, double y1, double x2, double y2)
PageBuilder strokeRect(double x, double y, double w, double h, double width, double r, double g, double b)
PageBuilder strokeLine(double x1, double y1, double x2, double y2, double width, double r, double g, double b)
PageBuilder strokeRectDashed(double x, double y, double w, double h, double width, double r, double g, double b, List<double> dashArray, [double phase = 0])
PageBuilder strokeLineDashed(double x1, double y1, double x2, double y2, double width, double r, double g, double b, List<double> dashArray, [double phase = 0])

塗りつぶしおよびストローク済みの矩形と線。ダッシュ配列と位相を指定した破線ストロークを含みます。

フォームフィールド

PageBuilder textField(String name, double x, double y, double w, double h, [String? defaultValue])
PageBuilder checkbox(String name, double x, double y, double w, double h, bool checked)
PageBuilder comboBox(String name, double x, double y, double w, double h, List<String> options, int count, [String? selected])
PageBuilder radioGroup(String name, List<String> values, List<double> xs, List<double> ys, List<double> ws, List<double> hs, int count, [String? selected])
PageBuilder pushButton(String name, double x, double y, double w, double h, String caption)
PageBuilder signatureField(String name, double x, double y, double w, double h)

AcroForm ウィジェットを追加します。テキストフィールド、チェックボックス、コンボボックス、ラジオグループ、プッシュボタン、署名フィールド。

テーブル

PageBuilder table(int nCols, List<double> widths, List<int> aligns, int nRows, List<String> cellStrings, bool hasHeader)
PageBuilder streamingTableBegin(List<String> headers, List<double> widths, List<int> aligns, bool repeatHeader)
PageBuilder streamingTableBeginV2(List<String> headers, List<double> widths, List<int> aligns, bool repeatHeader, {int mode = 0, int sampleRows = 0, double minColWidthPt = 0, double maxColWidthPt = 0, int maxRowspan = 1})
PageBuilder streamingTablePushRow(List<String> cells)
PageBuilder streamingTablePushRowV2(List<String> cells, List<int> rowspans)
PageBuilder streamingTableFlush()
PageBuilder streamingTableFinish()
PageBuilder streamingTableSetBatchSize(int batchSize)
int streamingTableBatchCount()
int streamingTablePendingRowCount()
  • table — 行優先の静的テーブルをバッファリングします。
  • streamingTableBegin / streamingTableBeginV2 — ストリーミングテーブルを開始します(v2 では列幅モード、サンプル行、最小/最大列幅、rowspan を追加)。
  • streamingTablePushRow / streamingTablePushRowV2 — 行をプッシュします(v2 ではセル単位の rowspan を指定)。
  • streamingTableFlush / streamingTableFinish — 保留中の行をフラッシュ/テーブルをクローズします。
  • streamingTableSetBatchSize — 各フラッシュ前にバッファリングする行数。
  • streamingTableBatchCount / streamingTablePendingRowCount — フラッシュ済みバッチ数/保留中の行数。

ライフサイクル

void done()
void close()
  • done — バッファリングされた操作を親ビルダーに確定します(ハンドルを消費します)。
  • close — ページを破棄してハンドルを解放します(冪等)。

EmbeddedFont

DocumentBuilder.registerEmbeddedFont で埋め込むために読み込んだ TTF/OTF フォントです。

static EmbeddedFont fromFile(String path)
static EmbeddedFont fromBytes(Uint8List data, [String? name])
void close()
  • fromFile — ファイルパスからフォントを読み込みます。
  • fromBytes — バイト列から読み込みます。name のデフォルトはフォントの PostScript 名です。
  • close — ネイティブハンドルを解放します(冪等)。

RenderedImage

PdfDocument.renderPage などが返す、ラスタライズ済みのページ画像です。

int get width
int get height
Uint8List get data
void save(String path)
void close()
  • width / height — ピクセル単位の画像寸法。
  • data — エンコード済みの画像バイト列(例: PNG)。Dart 側へコピーされます。
  • save — エンコード済み画像をパスに書き込みます。
  • close — ネイティブハンドルを解放します(冪等)。

ElementList

PdfDocument.pageElements が生成する、ページのレイアウト要素です。

int get count
Element operator [](int index)
List<Element> toList()
String toJson()
void close()
  • count — 要素数。
  • operator [] — 指定インデックスの要素を読み取ります。
  • toList — すべての要素をリストとして返します。
  • toJson — リスト全体を JSON にシリアライズします。
  • close — ネイティブハンドルを解放します(冪等)。

BarcodeImage

生成された 1 次元バーコードまたは QR コードです。DocumentEditor.addBarcodeToPage でページ上にスタンプします。

static BarcodeImage qr(String data, {int errorCorrection = 0, int sizePx = 256})
static BarcodeImage barcode(String data, int format, {int sizePx = 256})
String get data
int get format
double get confidence
Uint8List imagePng({int sizePx = 256})
String svg({int sizePx = 256})
void close()
  • qr — エラー訂正レベルとピクセルサイズを指定して QR コードを生成します。
  • barcode — 指定したフォーマットコードの 1 次元バーコードを生成します。
  • data / format / confidence — エンコードされたペイロード、フォーマットコード、デコードの信頼度。
  • imagePng / svg — PNG バイト列または SVG 文字列としてエンコードします。
  • close — ネイティブハンドルを解放します(冪等)。

OcrEngine

検出/認識のモデルファイルに基づく OCR エンジンで、PdfDocument.ocrExtractText に渡します。

static OcrEngine create(String detModelPath, String recModelPath, String dictPath)
void close()
  • create — 検出モデル、認識モデル、辞書ファイルのパスからエンジンを作成します。
  • close — ネイティブハンドルを解放します(冪等)。

Renderer

固定の DPI/フォーマット/品質で構成された、再利用可能なページレンダラーです。

static Renderer create({int dpi = 150, int format = 0, int quality = 90, bool antiAlias = true})
void close()
  • create — レンダラーを作成します(format 0=PNG、1=JPEG。quality 1…100)。
  • close — ネイティブハンドルを解放します(冪等)。

Certificate

署名用の資格情報、すなわち X.509 証明書で、署名のエントリポイントから利用されます。

static Certificate loadFromBytes(Uint8List bytes, String password)
static Certificate loadFromPem(String certPem, String keyPem)
Pointer<Void> get handle
String get subject
String get issuer
String get serial
CertificateValidity get validity
bool isValid()
void close()
  • loadFromBytes — パスワード付きの PKCS#12(.p12/.pfx)バッファから読み込みます。
  • loadFromPem — PEM 証明書 + 秘密鍵の文字列から読み込みます。
  • handle — 生のネイティブハンドル(上級者向け/相互運用用途)。
  • subject / issuer / serial — 識別名とシリアル番号。
  • validityCertificateValidity 形式の notBefore/notAfter 期間。
  • isValid — 証明書が現在有効かどうか。
  • close — ネイティブハンドルを解放します(冪等)。

Timestamp

RFC 3161 タイムスタンプトークンです。

static Timestamp parse(Uint8List bytes)
Uint8List get token
Uint8List get messageImprint
int get time
String get serial
String get tsaName
String get policyOid
int get hashAlgorithm
bool verify()
void close()
  • parse — DER エンコードされた TimeStampToken(または素の TSTInfo)をパースします。
  • token / messageImprint — トークン全体と、ハッシュ化されたメッセージインプリントのバイト列。
  • time — タイムスタンプの時刻(Unix エポック秒)。
  • serial / tsaName / policyOid / hashAlgorithm — トークンのシリアル、TSA 名、ポリシー OID、ハッシュアルゴリズムコード。
  • verify — トークンを暗号学的に検証します。
  • close — ネイティブハンドルを解放します(冪等)。

TsaClient

RFC 3161 TSA(タイムスタンプ局)クライアントです。

static TsaClient create(String url, {String username = '', String password = '', int timeout = 30, int hashAlgo = 0, bool useNonce = true, bool certReq = true})
Timestamp requestTimestamp(Uint8List data)
Timestamp requestTimestampHash(Uint8List hash, int hashAlgo)
void close()
  • create — 任意の Basic 認証とリクエストオプションを指定して、TSA URL 向けのクライアントを作成します。
  • requestTimestamp — 生データに対してタイムスタンプを要求します(クライアントがハッシュ化します)。
  • requestTimestampHash — 事前計算済みのハッシュに対してタイムスタンプを要求します。
  • close — ネイティブハンドルを解放します(冪等)。

SignatureInfo

PdfDocument.getSignature から得られる、PDF に埋め込まれた電子署名の情報です。

SignatureInfo.fromHandle(Pointer<Void> handle)
Pointer<Void> get handle
String get signerName
String get signingReason
String get signingLocation
int get signingTime
Certificate get certificate
int get padesLevel
bool hasTimestamp()
Timestamp get timestamp
bool addTimestamp(Timestamp ts)
int verify()
int verifyDetached(Uint8List pdf)
void close()
  • fromHandle — 生のネイティブハンドルを引き受けます(上級者向け/相互運用用途)。
  • signerName / signingReason / signingLocation / signingTime — 署名者のメタデータ。
  • certificate — 署名者の Certificate
  • padesLevel — PAdES ベースラインのレベルコード。PAdES でない場合は -1
  • hasTimestamp / timestamp — 埋め込みタイムスタンプが存在するかどうか、および Timestamp 本体。
  • addTimestamp — この署名にタイムスタンプを付与します。
  • verify — 署名者属性の暗号チェック(1 有効 / 0 無効 / -1 不明)。
  • verifyDetached — 完全な PDF バイト列に対してエンドツーエンドで検証します(1 有効 / 0 無効 / -1 不明)。
  • close — ネイティブハンドルを解放します(冪等)。

Dss

PdfDocument.getDss から得られる、ドキュメントの /DSS(ドキュメントセキュリティストア)です。

Dss.fromHandle(Pointer<Void> handle)
int get certCount
int get crlCount
int get ocspCount
int get vriCount
Uint8List getCert(int index)
Uint8List getCrl(int index)
Uint8List getOcsp(int index)
void close()
  • fromHandle — 生の DSS ハンドルを引き受けます(上級者向け/相互運用用途)。
  • certCount / crlCount / ocspCount / vriCount — 証明書、CRL、OCSP レスポンス、VRI エントリの数。
  • getCert / getCrl / getOcsp — 指定インデックスの証明書/CRL/OCSP レスポンスの DER バイト列。
  • close — ネイティブハンドルを解放します(冪等)。

PdfAResults

PdfDocument.validatePdfA による PDF/A 検証結果です。

bool isCompliant()
List<String> errors()
List<String> warnings()
void close()
  • isCompliant — ドキュメントが PDF/A 準拠かどうか。
  • errors / warnings — 検証のエラーメッセージと警告メッセージ。
  • close — ネイティブハンドルを解放します(冪等)。

UaResults

PdfDocument.validatePdfUa による PDF/UA アクセシビリティ検証結果です。

bool isAccessible()
List<String> errors()
List<String> warnings()
UaStats uaStats()
void close()
  • isAccessible — ドキュメントが PDF/UA としてアクセシブルかどうか。
  • errors / warnings — アクセシビリティのエラーメッセージと警告メッセージ。
  • uaStats — 検証中に収集された要素統計。
  • close — ネイティブハンドルを解放します(冪等)。

PdfXResults

PdfDocument.validatePdfX による PDF/X 検証結果です。

bool isCompliant()
List<String> errors()
void close()
  • isCompliant — ドキュメントが PDF/X 準拠かどうか。
  • errors — 検証のエラーメッセージ。
  • close — ネイティブハンドルを解放します(冪等)。

トップレベル関数

これらのライブラリレベルの関数は pdf_oxide 名前空間に属します。

マージとタイムスタンプ

Uint8List pdfMerge(List<String> paths)
Uint8List addTimestamp(Uint8List pdf, int sigIndex, String tsaUrl)
  • pdfMerge — 指定したパスの PDF を(順番どおりに)1 つの PDF にマージします。そのバイト列を返します。
  • addTimestamp — 署名に RFC 3161 タイムスタンプを適用し、TSA に接続します。タイムスタンプ付き PDF のバイト列を返します。

署名

Uint8List signBytes(Uint8List pdf, Certificate cert, {String reason = '', String location = ''})
Uint8List signBytesPades(Uint8List pdf, Certificate cert, int level, {String? tsaUrl, String reason = '', String location = '', List<Uint8List> certs = const [], List<Uint8List> crls = const [], List<Uint8List> ocsps = const []})
Uint8List signBytesPadesOpts(Uint8List pdf, Certificate cert, int level, {String? tsaUrl, String reason = '', String location = '', List<Uint8List> certs = const [], List<Uint8List> crls = const [], List<Uint8List> ocsps = const []})
  • signBytes — 証明書で生の PDF バイト列に署名します。署名済みバイト列を返します。
  • signBytesPades — PAdES ベースラインレベル(0=B-B、1=B-T、2=B-LT)で署名します。レベル ≥ 1 では tsaUrl が必須で、certscrlsocsps は B-LT の失効情報を運びます。
  • signBytesPadesOptssignBytesPades と同一の挙動を持つ、構造体オプション版。

ロギング

void setLogLevel(int level)
int getLogLevel()

グローバルなライブラリログレベルを設定/取得します(0=Off、1=Error、2=Warn、3=Info、4=Debug、5=Trace)。

暗号 / FIPS

String cryptoActiveProvider()
String cryptoCbom()
String cryptoInventory()
String cryptoPolicy()
int cryptoFipsAvailable()
int cryptoUseFips()
int cryptoSetPolicy(String spec)
  • cryptoActiveProvider — アクティブな暗号プロバイダー名。
  • cryptoCbom — 暗号部品表(CBOM)を JSON で返します。
  • cryptoInventory — 暗号インベントリを JSON で返します。
  • cryptoPolicy — アクティブな暗号ポリシーを JSON で返します。
  • cryptoFipsAvailable — FIPS 検証済みプロバイダーが利用可能かどうか(非ゼロ = はい)。
  • cryptoUseFips — FIPS 検証済みプロバイダーへ切り替えます。ステータスを返します。
  • cryptoSetPolicy — 仕様文字列から暗号ポリシーを設定します。ステータスを返します。

モデルとグローバル設定

String modelManifest()
int prefetchAvailable()
String prefetchModels(String languagesCsv)
int setMaxOpsPerStream(int limit)
int setPreserveUnmappedGlyphs(int preserve)
  • modelManifest — 同梱モデルのマニフェストを JSON で返します。
  • prefetchAvailable — このビルドでモデルのプリフェッチが利用可能かどうか。
  • prefetchModels — カンマ区切りの言語について OCR/レイアウトモデルをプリフェッチします。JSON のレポートを返します。
  • setMaxOpsPerStream — コンテンツストリームごとのグローバルなオペレーター上限を設定します。以前の値を返します。
  • setPreserveUnmappedGlyphs — 未マッピンググリフの保持を切り替えます。以前の値を返します。

エラーハンドリング

PdfOxideError

成功以外の C-ABI エラーコードはすべて PdfOxideError としてスローされます。

class PdfOxideError implements Exception {
  final int code;   // C-ABI error code
  final String op;  // the operation that failed
}

close() 後にハンドルのメソッドを呼び出すと、Dart の StateError がスローされます。無効なフォントデータを渡した EmbeddedFont.fromBytes、無効な PKCS#12 を渡した Certificate.loadFromBytes、存在しないファイルに対する PdfDocument.open は、いずれも PdfOxideError を発生させます。

import 'package:pdf_oxide/pdf_oxide.dart';

void main() {
  try {
    final doc = PdfDocument.open('input.pdf');
    print(doc.extractText(0));
    doc.close();
  } on PdfOxideError catch (e) {
    print('PDF error: $e');  // PdfOxideError: <op> failed (error code <code>)
  }
}

値型

抽出・検査メソッドが返すプレーンなデータクラスです。

PdfVersion

フィールド 説明
major int メジャーバージョン
minor int マイナーバージョン

Bbox

PDF ユーザー空間ポイント単位の軸並行バウンディングボックスです。

フィールド 説明
x, y double 左下の原点
width, height double ボックスのサイズ

Char

フィールド 説明
character int Unicode コードポイント
bbox Bbox グリフのバウンディングボックス
fontName String PostScript フォント名
fontSize double ポイント単位のフォントサイズ

Word

フィールド 説明
text String 単語のテキスト
bbox Bbox バウンディングボックス
fontName String フォント名
fontSize double フォントサイズ
bold bool 太字かどうか

TextLine

フィールド 説明
text String 行のテキスト
bbox Bbox バウンディングボックス
wordCount int 単語数

Table

メンバー 説明
rowCount int 行数
colCount int 列数
hasHeader bool ヘッダー行が存在するかどうか
cell(int row, int col) String 0 始まりセルのテキスト

Font

フィールド 説明
name String フォント名
type String フォントタイプ
encoding String エンコーディング
embedded bool 埋め込みかどうか
subset bool サブセットかどうか

Image

フィールド 説明
width, height int ピクセル寸法
bitsPerComponent int コンポーネントあたりのビット数
format String 画像フォーマット
colorspace String カラースペース
data Uint8List 生の画像バイト列

Annotation

フィールド 説明
type String 注釈タイプ
subtype String 注釈サブタイプ
content String テキスト内容
author String 作成者
rect Bbox 位置
borderWidth double 境界線の幅

Path

フィールド 説明
bbox Bbox バウンディングボックス
strokeWidth double ストローク幅
hasStroke bool ストロークありかどうか
hasFill bool 塗りつぶしありかどうか
operationCount int パス操作の数

SearchResult

フィールド 説明
text String 一致したテキスト
page int 0 始まりのページインデックス
bbox Bbox 一致のバウンディングボックス

FormField

フィールド 説明
name String 完全修飾フィールド名
value String 現在の値
type String フィールドタイプ(TxBtnChSig
readonly bool 読み取り専用かどうか
required bool 必須かどうか

QuadPoint

ハイライト注釈のクアッド(四隅の点): x1, y1, x2, y2, x3, y3, x4, y4double)。

AnnotationDetails

フィールド 説明
type, subtype, content String 注釈のタイプ/サブタイプと内容
rect Bbox 位置
color int パックされた ARGB 色
creationDate, modificationDate int Unix エポック秒(なければ 0)
hidden, markedDeleted, printable, readOnly bool 注釈フラグ
linkUri String リンク先 URI(なければ空)
iconName String テキスト注釈のアイコン名(なければ空)
quadPoints List<QuadPoint> ハイライトのクアッドポイント(なければ空)

CertificateValidity

フィールド 説明
notBefore int 有効開始時刻(Unix エポック秒)
notAfter int 有効終了時刻(Unix エポック秒)

UaStats

フィールド 説明
structElements int 構造要素
images int 画像
tables int テーブル
forms int フォームフィールド
annotations int 注釈
pages int ページ

Element

フィールド 説明
type String 要素タイプ(例: TextImageTable
text String テキスト内容(空の場合あり)
rect Bbox バウンディングボックス

完全な例

import 'dart:io';
import 'package:pdf_oxide/pdf_oxide.dart';

void main() {
  // --- Creation ---
  final pdf = Pdf.fromMarkdown('# Report\n\nGenerated by PDF Oxide.');
  pdf.save('report.pdf');
  pdf.close();

  // --- Builder ---
  final db = DocumentBuilder.create()..setTitle('Invoice');
  final page = db.letterPage();
  page
      .font('Helvetica', 14)
      .heading(1, 'Invoice')
      .paragraph('Thank you for your business.')
      .done();
  File('invoice.pdf').writeAsBytesSync(db.build());
  db.close();

  // --- Extraction ---
  final doc = PdfDocument.open('report.pdf');
  print('Pages: ${doc.pageCount}');
  for (var i = 0; i < doc.pageCount; i++) {
    print('Page $i: ${doc.extractText(i).length} chars');
  }
  for (final word in doc.extractWords(0)) {
    print('${word.text} @ ${word.bbox}');
  }

  // --- Search ---
  for (final hit in doc.searchAll('PDF Oxide', false)) {
    print('Found "${hit.text}" on page ${hit.page}');
  }

  // --- Rendering ---
  final img = doc.renderPage(0);
  img.save('page0.png');
  img.close();
  doc.close();

  // --- Editing ---
  final ed = DocumentEditor.open('report.pdf');
  ed.rotateAllPages(90);
  ed.setProducer('PDF Oxide');
  ed.save('rotated.pdf');
  ed.close();
}

他の言語のバインディング

PDF Oxide はあらゆる主要なエコシステム向けにネイティブバインディングを提供しています: Rust, Python, Node.js, WASM, C#, Golang, Java, PHP, Ruby, C++, Swift, Kotlin, R, Julia, Zig, Scala, Clojure, Objective-C, Elixir

次のステップ