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— ページ数。version—PdfVersion(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にレンダリングします(format0=PNG、1=JPEG)。renderPageZoom— 指定したズーム倍率でレンダリングします。renderPageThumbnail—sizeピクセル内に収まるサムネイルをレンダリングします。renderPageWithOptions— RenderOptions の全機能(dpi、背景、注釈、JPEG 品質)。renderPageWithOptionsEx—excludedLayersによる名前付き OCG レイヤーの抑制を追加します。renderPageRegion— 矩形領域をレンダリングします。renderPageFit— アスペクト比を保ったままwidth×height内に収まるようレンダリングします。renderPageRaw—dpiで 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— フォームデータをエクスポートします(formatType0=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()
sign—Certificateを使ってドキュメントに電子署名します。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 です。
ファクトリ
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 から、families/fontsを並列に対応させたフォントカスケードでビルドします。
メソッド
int get pageCount
void save(String path)
Uint8List toBytes()
void close()
pageCount—pdf_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— レンダラーを作成します(format0=PNG、1=JPEG。quality1…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— 識別名とシリアル番号。validity—CertificateValidity形式の 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が必須で、certs/crls/ocspsは B-LT の失効情報を運びます。signBytesPadesOpts—signBytesPadesと同一の挙動を持つ、構造体オプション版。
ロギング
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 |
フィールドタイプ(Tx、Btn、Ch、Sig) |
readonly |
bool |
読み取り専用かどうか |
required |
bool |
必須かどうか |
QuadPoint
ハイライト注釈のクアッド(四隅の点): x1, y1, x2, y2, x3, y3, x4, y4(double)。
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 |
要素タイプ(例: Text、Image、Table) |
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。
次のステップ
- 型と列挙型 — すべての共有型と列挙型
- Page API リファレンス — バインディング間で一貫したページ単位の反復処理
- Dart 入門 — チュートリアル