C# / .NET API リファレンス
PdfOxide NuGet パッケージは、LibraryImport で生成された P/Invoke(全 881 宣言)を介して Rust コアをラップします。NativeAOT 発行に対応し、トリミング安全です。ターゲットフレームワーク: net8.0、net10.0。
dotnet add package PdfOxide
using PdfOxide.Core;
他の言語については Python、Node.js、Golang、Rust を参照してください。
名前空間
using PdfOxide.Core; // PdfDocument, Pdf, DocumentEditor, DocumentBuilder, ...
using PdfOxide.Geometry; // Color, Point, Rect
using PdfOxide.Exceptions; // PdfException and typed subclasses
ネイティブに支えられたすべての型は IDisposable を実装します。using ブロックまたは using 宣言を使用してください。座標は特に断りのない限り左下原点からの PDF ポイント単位です。float で渡す色チャンネルは 0.0–1.0 の範囲です。
PdfDocument
読み取り専用 / 抽出用ハンドルです。PdfDocument は列挙可能かつインデックス可能で、遅延評価される Page ハンドルを返します。
Open
static PdfDocument Open(string path)
static PdfDocument Open(Stream stream)
static PdfDocument Open(byte[] data)
static PdfDocument Open(ReadOnlySpan<byte> data)
static PdfDocument OpenWithPassword(string path, string password)
static PdfDocument OpenFromDocxBytes(byte[] data)
static PdfDocument OpenFromPptxBytes(byte[] data)
static PdfDocument OpenFromXlsxBytes(byte[] data)
Open(...)— パス、ストリーム、バイト配列、またはスパンから開きます。OpenWithPassword(path, password)— 暗号化された PDF を一度に開きます。OpenFromDocxBytes/OpenFromPptxBytes/OpenFromXlsxBytes— Office のバイト列を変換し、結果を PDF として開きます(officeフィーチャーが必要)。
プロパティ
(byte Major, byte Minor) Version { get; } // PDF version, e.g. (1, 7)
int PageCount { get; } // number of pages
bool HasStructureTree { get; } // Tagged PDF with a structure tree
bool IsEncrypted { get; } // document is encrypted
bool HasXfa { get; } // contains XFA forms
int SignatureCount { get; } // number of digital signatures
IReadOnlyList<Signature> Signatures { get; } // signature handles
IReadOnlyList<Page> Pages { get; } // lazy per-page handles
Page this[int pageIndex] { get; } // page at index
認証
bool Authenticate(string password)
開いた後に、ユーザーまたはオーナーパスワードで暗号化されたドキュメントを認証します。成功時に true を返します。
テキスト抽出
string ExtractText(int pageIndex)
string ExtractAllText()
Task<string> ExtractTextAsync(int pageIndex, CancellationToken cancellationToken = default)
string ExtractTextInRect(int pageIndex, float x, float y, float width, float height)
(string Text, float X, float Y, float W, float H)[] ExtractWords(int pageIndex)
(string Text, float X, float Y, float W, float H)[] ExtractWordsInRect(int pageIndex, float x, float y, float width, float height)
(string Text, float X, float Y, float W, float H)[] ExtractTextLines(int pageIndex)
(char Char, float X, float Y, float W, float H)[] ExtractChars(int pageIndex)
(float X, float Y, float W, float H, float StrokeWidth)[] ExtractPaths(int pageIndex)
Table[] ExtractTables(int pageIndex)
ExtractText/ExtractAllText— 1 ページまたはドキュメント全体のプレーンテキスト。ExtractTextInRect— 矩形領域内のテキスト。ExtractWords/ExtractWordsInRect— 境界ボックス付きの単語(必要に応じて領域でクリップ)。ExtractTextLines— 境界ボックス付きの行。ExtractChars— グリフ単位の位置。ExtractPaths— 線幅付きのベクターパスセグメント。ExtractTables— 検出されたテーブル(Tableを参照)。
分類と自動抽出
string ExtractStructured(int page)
string ClassifyPage(int pageIndex)
string ClassifyDocument()
string ExtractTextAuto(int pageIndex)
string ExtractPageAuto(int pageIndex, string? optionsJson = null)
ExtractStructured— ページコンテンツの構造化 JSON。ClassifyPage/ClassifyDocument— ページまたはドキュメント全体を分類します(例: スキャン文書かデジタル文書か)。ExtractTextAuto— ページを最適なテキスト経路(デジタルまたは OCR)へ自動振り分けします。ExtractPageAuto— 任意の JSON オプション blob を指定する自動抽出。
変換
string ToMarkdown(int pageIndex)
string ToMarkdownAll()
string ToHtml(int pageIndex)
string ToHtmlAll()
string ToPlainText(int pageIndex)
string ToPlainTextAll()
byte[] ToDocxBytes()
byte[] ToPptxBytes()
byte[] ToXlsxBytes()
ToMarkdown/ToHtml/ToPlainText(および*All)— 1 ページまたはドキュメント全体を変換します。ToDocxBytes/ToPptxBytes/ToXlsxBytes— Office 形式にエクスポートします(officeフィーチャーが必要)。
コンテンツのクリーンアップ
int RemoveHeaders(float threshold = 0.8f)
int RemoveFooters(float threshold = 0.8f)
int RemoveArtifacts(float threshold = 0.8f)
繰り返し現れるランニングヘッダー、フッター、ページアーティファクトを検出して除去します。除去した要素数を返します。threshold はページ間での出現比率です。
検索
(int Page, string Text, float X, float Y, float W, float H)[] SearchAll(string text, bool caseSensitive = false)
(int Page, string Text, float X, float Y, float W, float H)[] SearchPage(int pageIndex, string text, bool caseSensitive = false)
ドキュメント全体または単一ページを横断して検索します。ページインデックスと境界ボックス付きのマッチを返します。
構造とメタデータ
string GetPageLabels()
string GetXmpMetadata()
string GetOutline()
string PlanSplitByBookmarks(int level, string? namePattern = null)
string[] GetFonts(int pageIndex)
GetPageLabels— ページラベルの範囲(JSON)。GetXmpMetadata— XMP メタデータ(JSON / XML パケット)。GetOutline— ブックマークツリー / 目次(JSON)。PlanSplitByBookmarks— ブックマークレベルでの分割プランを計算します。GetFonts— ページで使用されているフォント名。
画像
ExtractedImage[] ExtractImages(int pageIndex)
埋め込み画像をメタデータと生バイト列とともに抽出します(ExtractedImage を参照)。
フォーム
FormField[] GetFormFields()
AcroForm フィールドを列挙します(FormField を参照)。
レンダリング
byte[] RenderPage(int pageIndex, int format = 0)
byte[] RenderPage(int pageIndex, RenderOptions options)
byte[] RenderPageZoom(int pageIndex, float zoom, int format = 0)
byte[] RenderPageFit(int pageIndex, int fitWidth, int fitHeight, int format = 0)
byte[] RenderThumbnail(int pageIndex, int format = 0)
RgbaPixmap RenderToRgba(int pageIndex, int dpi = 150)
void SaveRenderedImage(int pageIndex, string filePath, int format = 0)
RenderPage— デフォルト DPI(format:0= PNG、1= JPEG)または完全なRenderOptionsでレンダリングします。RenderPageZoom— ズーム倍率でレンダリングします。RenderPageFit— ピクセルボックスに収まるようスケールしてレンダリングします。RenderThumbnail— 小さなサムネイルをレンダリングします。RenderToRgba— 生の RGBA ピクスマップにレンダリングします(RgbaPixmapを参照)。SaveRenderedImage— レンダリングしてファイルへ直接書き出します。
署名
unsafe DocumentSecurityStore? GetDss()
bool HasDocumentTimestamp()
GetDss— Document Security Store(DSS)が存在する場合に読み取ります。HasDocumentTimestamp— ドキュメントレベルのタイムスタンプが存在するかどうか。
署名ごとの検証については Signature を参照してください。
静的設定
static void SetLogLevel(int level)
static int GetLogLevel()
static string PrefetchModels(params string[] languages)
static string ModelManifest()
static bool PrefetchAvailable()
static string GetActiveCryptoProvider()
static bool IsFipsCryptoAvailable()
static void UseFipsCryptoProvider()
static void SetCryptoPolicy(string spec)
static string CryptoPolicy()
static string[] CryptoInventory()
static string CryptoCbom()
SetLogLevel/GetLogLevel— ネイティブログの詳細度を制御します。PrefetchModels/ModelManifest/PrefetchAvailable— OCR モデルのダウンロードを管理します。GetActiveCryptoProvider/IsFipsCryptoAvailable/UseFipsCryptoProvider— 暗号プロバイダーの選択(FIPS)。SetCryptoPolicy/CryptoPolicy— アクティブな暗号ポリシーの取得 / 設定。CryptoInventory/CryptoCbom— 暗号の利用状況を列挙 / CBOM を出力します。
Dispose
void Dispose()
Page
doc[i] または反復から得られる遅延評価のページ単位ハンドルです。すべてのメンバーは親ドキュメントへディスパッチされます。
int Index { get; }
string ExtractText();
Task<string> ExtractTextAsync(CancellationToken ct = default);
string ToMarkdown();
Task<string> ToMarkdownAsync(CancellationToken ct = default);
string ToHtml();
Task<string> ToHtmlAsync(CancellationToken ct = default);
string ToPlainText();
Task<string> ToPlainTextAsync(CancellationToken ct = default);
(string Text, float X, float Y, float W, float H)[] ExtractWords();
(string Text, float X, float Y, float W, float H)[] ExtractLines();
(char Char, float X, float Y, float W, float H)[] ExtractChars();
(float X, float Y, float W, float H, float StrokeWidth)[] ExtractPaths();
Table[] ExtractTables();
ExtractedImage[] ExtractImages();
string[] GetFonts();
(int Page, string Text, float X, float Y, float W, float H)[] Search(string text, bool caseSensitive = false);
byte[] Render(int format = 0);
byte[] RenderThumbnail(int format = 0);
Pdf — 作成
ソース形式から PDF を作成し、保存します。
static Pdf FromMarkdown(string markdown)
static Pdf FromHtml(string html)
static Pdf FromHtmlCss(string html, string css, byte[] fontBytes)
static unsafe Pdf FromHtmlCssWithFonts(string html, string css, (string Name, byte[] Bytes)[] fonts)
static Pdf FromText(string text)
static Pdf FromImage(string path)
static Pdf FromImageBytes(byte[] data)
int PageCount { get; }
void Save(string path)
byte[] SaveToBytes()
void SaveToStream(Stream stream)
Task SaveAsync(string path, CancellationToken cancellationToken = default)
Task SaveToStreamAsync(Stream stream, CancellationToken cancellationToken = default)
void Dispose()
FromMarkdown/FromHtml/FromText— テキスト形式から作成します。FromHtmlCss/FromHtmlCssWithFonts— フォントを埋め込んだ HTML + CSS パイプライン。FromImage/FromImageBytes— 画像から単一ページの PDF を作成します。Save/SaveToBytes/SaveToStream(および async)— 結果を永続化します。
DocumentEditor
既存 PDF を変更するためのエディターです。メタデータ、ページ、フォーム、墨消し、暗号化を扱います。
Open と save
static DocumentEditor Open(string path)
static DocumentEditor OpenFromBytes(byte[] data)
void Save(string path)
Task SaveAsync(string path, CancellationToken cancellationToken = default)
byte[] SaveToBytes()
byte[] SaveToBytesWithOptions(bool compress, bool garbageCollect, bool linearize)
void SaveEncrypted(string path, string userPassword, string ownerPassword)
byte[] SaveEncryptedToBytes(string userPassword, string ownerPassword)
unsafe byte[] ExtractPages(int[] pageIndices)
void Dispose()
プロパティ
bool IsModified { get; }
string SourcePath { get; }
(byte Major, byte Minor) Version { get; }
int PageCount { get; }
string? Title { get; set; }
string? Author { get; set; }
string? Subject { get; set; }
string? Keywords { get; set; }
string? Producer { get; set; }
string? CreationDate { get; set; }
string[] FlattenWarnings { get; }
ページ操作
void MergeFrom(string sourcePath)
int MergeFromBytes(byte[] data)
void DeletePage(int pageIndex)
void MovePage(int fromIndex, int toIndex)
int GetPageRotation(int pageIndex)
void SetPageRotation(int pageIndex, int degrees)
void RotateAllPages(int degrees)
void RotatePageBy(int pageIndex, int degrees)
void CropMargins(float left, float right, float top, float bottom)
(double X, double Y, double Width, double Height) GetPageMediaBox(int pageIndex)
void SetPageMediaBox(int pageIndex, double x, double y, double width, double height)
(double X, double Y, double Width, double Height) GetPageCropBox(int pageIndex)
void SetPageCropBox(int pageIndex, double x, double y, double width, double height)
MergeFrom/MergeFromBytes— 別の PDF からページを追加します(MergeFromBytesはマージ後のページ数を返します)。DeletePage/MovePage— ページの削除や並べ替えを行います。GetPageRotation/SetPageRotation/RotateAllPages/RotatePageBy— 回転の制御(絶対指定と相対指定)。CropMargins— すべてのページの余白をトリミングします。Get/SetPageMediaBoxおよびGet/SetPageCropBox— ページのジオメトリボックス。
消去 / ホワイトアウト
void EraseRegion(int pageIndex, float x, float y, float width, float height)
void EraseRegions(int pageIndex, double[][] rects)
void ClearEraseRegions(int pageIndex)
注釈とフォーム
void SetFormFieldValue(string name, string value)
void FlattenForms()
void FlattenFormsOnPage(int pageIndex)
void FlattenAnnotations(int pageIndex)
void FlattenAllAnnotations()
bool IsPageMarkedForFlatten(int pageIndex)
void UnmarkPageForFlatten(int pageIndex)
墨消し
void AddRedaction(int pageIndex, double x1, double y1, double x2, double y2, byte r, byte g, byte b)
int RedactionCount(int pageIndex)
void ApplyPageRedactions(int pageIndex)
void ApplyAllRedactions()
int ApplyRedactions(bool scrubMetadata = true, bool scrubText = true)
bool IsPageMarkedForRedaction(int pageIndex)
void UnmarkPageForRedaction(int pageIndex)
int SanitizeDocument()
AddRedaction— 塗りつぶし色付きの墨消し矩形をキューに入れます。ApplyPageRedactions/ApplyAllRedactions/ApplyRedactions— 保留中の墨消しを焼き込みます(ApplyRedactionsは任意でメタデータ / 隠しテキストもスクラブします)。SanitizeDocument— 隠された / 参照されていないデータを除去します。スクラブした件数を返します。
その他
void EmbedFile(string name, byte[] data)
void ConvertToPdfA(PdfALevel level = PdfALevel.A2b)
EmbedFile— ファイルを PDF に添付します。ConvertToPdfA— PDF/A 準拠レベルへ変換します。
厳密な
AddRedaction/ApplyRedactionsのシグネチャは、内部的に snake-case のネイティブ引数を使用します。ここに示す C# サーフェスは公開バインディングです。
DocumentBuilder
新規ドキュメント用の流暢なビルダーです。DocumentBuilder.Create() → メタデータ → ページ → Build() / Save() の流れで使います。
static DocumentBuilder Create()
DocumentBuilder Title(string title)
DocumentBuilder Author(string author)
DocumentBuilder Subject(string subject)
DocumentBuilder Keywords(string keywords)
DocumentBuilder Creator(string creator)
DocumentBuilder OnOpen(string script) // document-open JavaScript
DocumentBuilder TaggedPdfUa1() // emit a Tagged PDF/UA-1
DocumentBuilder Language(string lang)
DocumentBuilder RoleMap(string custom, string standard)
DocumentBuilder RegisterEmbeddedFont(string name, EmbeddedFont font)
PageBuilder A4Page()
PageBuilder LetterPage()
PageBuilder Page(float width, float height)
byte[] Build()
void Save(string path)
void SaveEncrypted(string path, string userPassword, string ownerPassword)
byte[] ToBytesEncrypted(string userPassword, string ownerPassword)
void Dispose()
PageBuilder
A4Page() / LetterPage() / Page(w, h) が返すページ単位の流暢なサーフェスです。各メソッドはチェーン用にビルダーを返します。Done() はページを親へコミットします。
テキストとレイアウト
PageBuilder Font(string name, float size)
PageBuilder At(float x, float y)
PageBuilder Text(string text)
PageBuilder Heading(byte level, string text)
PageBuilder Paragraph(string text)
PageBuilder Space(float points)
PageBuilder HorizontalRule()
PageBuilder Newline()
PageBuilder Columns(uint columnCount, float gapPt, string text)
PageBuilder Footnote(string refMark, string noteText)
PageBuilder TextInRect(float x, float y, float w, float h, string text, Alignment align = Alignment.Left)
PageBuilder NewPageSameSize()
float Measure(string text)
float RemainingSpace()
インラインラン
PageBuilder Inline(string text)
PageBuilder InlineBold(string text)
PageBuilder InlineItalic(string text)
PageBuilder InlineColor(float r, float g, float b, string text)
リンクと JavaScript
PageBuilder LinkUrl(string url)
PageBuilder LinkPage(int pageIndex)
PageBuilder LinkNamed(string destination)
PageBuilder LinkJavascript(string script)
PageBuilder OnOpen(string script)
PageBuilder OnClose(string script)
PageBuilder FieldKeystroke(string script)
PageBuilder FieldFormat(string script)
PageBuilder FieldValidate(string script)
PageBuilder FieldCalculate(string script)
注釈
PageBuilder Highlight(float r, float g, float b)
PageBuilder Underline(float r, float g, float b)
PageBuilder Strikeout(float r, float g, float b)
PageBuilder Squiggly(float r, float g, float b)
PageBuilder StickyNote(string text)
PageBuilder StickyNoteAt(float x, float y, string text)
PageBuilder Watermark(string text)
PageBuilder WatermarkConfidential()
PageBuilder WatermarkDraft()
PageBuilder Stamp(string typeName)
PageBuilder FreeText(float x, float y, float w, float h, string text)
フォームウィジェット
PageBuilder TextField(string name, float x, float y, float w, float h, string? defaultValue = null)
PageBuilder Checkbox(string name, float x, float y, float w, float h, bool @checked = false)
unsafe PageBuilder ComboBox(string name, float x, float y, float w, float h, string[] options, string? selected = null)
unsafe PageBuilder RadioGroup(string name, (string Value, float X, float Y, float W, float H)[] buttons, string? selected = null)
PageBuilder PushButton(string name, float x, float y, float w, float h, string caption)
PageBuilder SignatureField(string name, float x, float y, float w, float h)
グラフィックス
PageBuilder Rect(float x, float y, float w, float h)
PageBuilder FilledRect(float x, float y, float w, float h, float r, float g, float b)
PageBuilder Line(float x1, float y1, float x2, float y2)
PageBuilder StrokeRect(float x, float y, float w, float h, float width = 1f, float r = 0f, float g = 0f, float b = 0f)
PageBuilder StrokeLine(float x1, float y1, float x2, float y2, float width = 1f, float r = 0f, float g = 0f, float b = 0f)
unsafe PageBuilder StrokeRectDashed(float x, float y, float w, float h, float[] dash, float phase = 0f, float width = 1f, float r = 0f, float g = 0f, float b = 0f)
unsafe PageBuilder StrokeLineDashed(float x1, float y1, float x2, float y2, float[] dash, float phase = 0f, float width = 1f, float r = 0f, float g = 0f, float b = 0f)
画像とバーコード
unsafe PageBuilder Image(byte[] imageBytes, float x, float y, float w, float h)
unsafe PageBuilder ImageWithAlt(byte[] imageBytes, float x, float y, float w, float h, string altText)
unsafe PageBuilder ImageArtifact(byte[] imageBytes, float x, float y, float w, float h)
PageBuilder Barcode1d(int barcodeType, string data, float x, float y, float w, float h)
PageBuilder BarcodeQr(string data, float x, float y, float size)
テーブル
unsafe PageBuilder Table(TableSpec spec)
StreamingTable StreamingTable(IReadOnlyList<Column> columns, bool repeatHeader = true,
TableMode? mode = null, int maxRowspan = 1, int batchSize = 256)
DocumentBuilder Done()
void Dispose()
Table—TableSpecから完全にマテリアライズされたテーブルをレンダリングします。StreamingTable— 大規模 / 行単位のデータ向けにストリーミングテーブルを開きます(StreamingTableを参照)。Done— ページをコミットして親のDocumentBuilderを返します。
EmbeddedFont
static EmbeddedFont FromFile(string path)
static EmbeddedFont FromBytes(byte[] data, string? name = null)
void Dispose()
DocumentBuilder.RegisterEmbeddedFont で埋め込むための TTF/OTF フォントを読み込みます。
StreamingTable
PageBuilder.StreamingTable(...) が返す、大規模データセット向けの行単位テーブルビルダーです。
unsafe StreamingTable AddRow(params string[] cells)
unsafe StreamingTable AddRowSpan(params (string? Text, int Rowspan)[] cells)
void Flush()
PageBuilder Build()
void Dispose()
AddRow— セルの行を 1 行追加します。AddRowSpan— セルごとの行スパンを持つ行を追加します(maxRowspan >= 2が必要)。Flush— バッファリングされた行をネイティブ層へフラッシュします。Build— 確定して親のPageBuilderを返します。
OcrEngine
スキャンされた PDF に対する OCR です(ocr フィーチャーが必要)。モデルは検出 / 認識 / 辞書のパスから読み込まれます。
static OcrEngine Load(string detectionModelPath, string recognitionModelPath, string dictionaryPath)
static bool PageNeedsOcr(PdfDocument document, int pageIndex)
string ExtractText(PdfDocument document, int pageIndex)
void Dispose()
Load— モデルファイルからエンジンを読み込みます。PageNeedsOcr— ページにデジタルテキストレイヤーがないかをヒューリスティックに判定します。ExtractText— ページに対して OCR を実行します。
PdfDocument.PrefetchModels、ModelManifest、PrefetchAvailable も参照してください。
電子署名
Signature
PdfDocument.Signatures から得られる署名単位のハンドルです。
string? SignerName { get; }
string? Reason { get; }
string? Location { get; }
Certificate GetCertificate()
bool Verify()
bool VerifyDetached(ReadOnlySpan<byte> pdfData)
void Dispose()
Verify— 署名の暗号的完全性を検証します。VerifyDetached— さらに、指定した PDF バイト列に対してmessageDigestを検証します。GetCertificate— 署名者の証明書。
Certificate
static Certificate LoadFromPem(string certPem, string keyPem)
static Certificate Load(byte[] data, string? password = null)
unsafe byte[] SignPdfBytes(byte[] pdfData, string? reason = null, string? location = null)
unsafe byte[] SignPdfBytesPades(byte[] pdfData, PadesSignOptions options)
void Dispose()
LoadFromPem/Load— 署名用証明書を読み込みます(PEM ペア、または任意のパスワード付き PKCS#12 バイト列)。SignPdfBytes— 基本的な CMS 署名で署名します。SignPdfBytesPades— PAdES プロファイルで署名します(PadesSignOptionsを参照)。
Timestamp
static Timestamp Parse(byte[] data)
string Serial { get; }
string PolicyOid { get; }
string TsaName { get; }
bool Verify()
void Dispose()
TsaClient
static TsaClient Create(TsaClientOptions options)
Timestamp RequestTimestamp(byte[] data)
Timestamp RequestTimestampHash(byte[] hash, TimestampHashAlgorithm hashAlgorithm)
void Dispose()
TsaClientOptions(init-only): Url(必須)、Username、Password、TimeoutSeconds(= 30)、HashAlgorithm(= Sha256)、UseNonce(= true)、CertReq(= true)。tsa-client フィーチャーの背後にあります。
Barcode
static Barcode GenerateQrCode(string data, int errorCorrection = 1, int sizePx = 300)
static Barcode Generate(string data, BarcodeFormat format = BarcodeFormat.Code128, int sizePx = 300)
byte[] ToPng(int sizePx = 300)
string ToSvg()
void Dispose()
BarcodeFormat: Code128、Code39、Ean13、Ean8、UpcA、Itf。
PdfValidator
静的な準拠チェックです。それぞれ PdfValidationResult を返します。
static PdfValidationResult ValidatePdfA(PdfDocument document, PdfALevel level = PdfALevel.A2b)
static PdfValidationResult ValidatePdfX(PdfDocument document, PdfXLevel level = PdfXLevel.X4)
static PdfValidationResult ValidatePdfUA(PdfDocument document, PdfUaLevel level = PdfUaLevel.Ua1)
データ型
RgbaPixmap
public sealed record RgbaPixmap(ReadOnlyMemory<byte> Data, int Width, int Height);
Table
public sealed class Table
{
public int RowCount { get; }
public int ColCount { get; }
public bool HasHeader { get; }
}
ExtractedImage
public sealed class ExtractedImage
{
public int Width { get; }
public int Height { get; }
public string Format { get; }
public string Colorspace { get; }
public int BitsPerComponent { get; }
public byte[] Data { get; }
}
FormField
public sealed class FormField
{
public string Name { get; }
public string FieldType { get; }
public string Value { get; }
}
TableSpec
public sealed class TableSpec
{
public List<Column> Columns { get; set; }
public IList<IList<string>> Rows { get; set; }
public bool HasHeader { get; set; }
}
public sealed class Column
{
public string Header { get; set; }
public float Width { get; set; }
public Alignment Align { get; set; }
public Column(string header, float width, Alignment align = Alignment.Left);
}
public abstract class TableMode
{
public sealed class Fixed : TableMode { }
public sealed class Sample : TableMode
{
public int SampleRows { get; init; } // = 20
public float MinColWidthPt { get; init; } // = 0
public float MaxColWidthPt { get; init; } // = 9999
}
}
public enum Alignment { Left = 0, Center = 1, Right = 2 }
RenderOptions
public sealed class RenderOptions
{
public int Dpi { get; set; } // = 150
public RenderImageFormat Format { get; set; } // = Png
public bool TransparentBackground { get; set; }
public bool RenderAnnotations { get; set; } // = true
public int JpegQuality { get; set; } // = 85
}
public enum RenderImageFormat { Png = 0, Jpeg = 1 }
PAdES / DSS 型
public enum PadesLevel { BB = 0, BT = 1, BLt = 2, BLta = 3 }
public sealed class PadesSignOptions
{
public PadesLevel Level { get; set; } // = BB
public string? TsaUrl { get; set; }
public string? Reason { get; set; }
public string? Location { get; set; }
public RevocationMaterial? Revocation { get; set; }
}
public sealed class RevocationMaterial
{
public IList<byte[]> Certificates { get; }
public IList<byte[]> Crls { get; }
public IList<byte[]> OcspResponses { get; }
}
public sealed class DocumentSecurityStore
{
public IReadOnlyList<byte[]> Certificates { get; }
public IReadOnlyList<byte[]> Crls { get; }
public IReadOnlyList<byte[]> OcspResponses { get; }
public int VriCount { get; }
}
public enum TimestampHashAlgorithm { Unknown = 0, Sha1 = 1, Sha256 = 2, Sha384 = 3, Sha512 = 4 }
検証型
public sealed class PdfValidationResult
{
public bool IsCompliant { get; }
public IReadOnlyList<string> Errors { get; }
public IReadOnlyList<string> Warnings { get; }
}
public enum PdfALevel { A1b = 0, A1a = 1, A2b = 2, A2a = 3, A2u = 4, A3b = 5, A3a = 6, A3u = 7 }
public enum PdfXLevel { X1a = 0, X3 = 1, X4 = 2 }
public enum PdfUaLevel { Ua1 = 1, Ua2 = 2 }
Geometry(PdfOxide.Geometry)
public struct Color : IEquatable<Color>
{
public Color(byte red, byte green, byte blue);
public Color(byte red, byte green, byte blue, byte alpha);
public byte Red { get; }
public byte Green { get; }
public byte Blue { get; }
public byte Alpha { get; }
public static Color FromArgb(uint argb);
public uint ToArgb();
public string ToHex();
public static Color Black { get; }
public static Color White { get; }
public static Color Yellow { get; }
public static Color Cyan { get; }
public static Color Magenta { get; }
}
public struct Point : IEquatable<Point>
{
public Point(float x, float y);
public float X { get; }
public float Y { get; }
public float Magnitude { get; }
public float Distance(Point other);
// operators: + - * / == !=
}
public struct Rect : IEquatable<Rect>
{
public Rect(float x, float y, float width, float height);
public float X { get; }
public float Y { get; }
public float Width { get; }
public float Height { get; }
public bool Contains(Point point);
public bool Intersects(Rect other);
}
例外
すべてのネイティブ失敗は PdfException(PdfOxide.Exceptions 内)を発生させます。
public class PdfException : Exception
{
public string Code { get; }
public static string GetErrorMessage(int errorCode);
public PdfException WithContext(string operation, params (string key, object? value)[] context);
}
型付きのサブクラスが特定のカテゴリを扱います。例: ParseException、InvalidStructure、CorruptedData、UnsupportedVersion、EncryptionException、InvalidPassword、DecryptionFailed、UnsupportedAlgorithm、DocumentClosed、OperationNotAllowed、UnsupportedFeatureException、FeatureNotImplemented、FormatNotSupported、ValidationException、InvalidParameter、MissingRequired、RenderingException、RenderFailed、UnsupportedRenderFormat、SearchException、InvalidPattern、SignatureException、RedactionException、AccessibilityException、OptimizationException、ComplianceException、ComplianceFailed、OcrException、RecognitionFailed、LanguageNotSupported、ImageProcessingFailed、InternalError、XfaException。
try
{
using var doc = PdfDocument.Open("file.pdf");
var text = doc.ExtractText(0);
}
catch (InvalidPassword)
{
// wrong / missing password
}
catch (UnsupportedFeatureException)
{
// feature not compiled into this build (e.g. ocr, office)
}
catch (PdfException e)
{
Console.Error.WriteLine($"{e.Code}: {e.Message}");
}
I/O(FileNotFoundException など)や引数検証(ArgumentOutOfRangeException、ArgumentNullException)については、標準の .NET 例外が引き続き発生します。
スレッドセーフティ
PdfDocumentの読み取り専用メソッドはスレッドセーフです。単一のドキュメントを複数スレッドで共有できます。DocumentEditorとビルダーは書き込みに対してスレッドセーフではありません。書き込みは 1 つのスレッドに直列化するか、ロックで保護してください。
並行性ガイド を参照してください。
非同期パターン
I/O バウンドなメソッドには、CancellationToken を受け取る *Async バリアントがあります(ExtractTextAsync、SaveAsync、SaveToStreamAsync、および Page.*Async ファミリー)。非同期ガイド を参照してください。
NativeAOT
-p:PublishAot=true で発行します。追加設定は不要です。すべての P/Invoke はソース生成されており、リフレクションも動的コードもありません。
完全な例
using PdfOxide.Core;
// --- Creation ---
using (var builder = DocumentBuilder.Create()
.Title("Report").Author("PDF Oxide"))
{
builder.LetterPage()
.Heading(1, "Quarterly Report")
.Paragraph("Generated by PDF Oxide.")
.LinkUrl("https://oxide.fyi")
.Done();
builder.Save("report.pdf");
}
// --- Extraction ---
using var doc = PdfDocument.Open("report.pdf");
Console.WriteLine($"Pages: {doc.PageCount}");
foreach (var page in doc)
Console.WriteLine($"Page {page.Index}: {page.ExtractText().Length} chars");
// Search with LINQ
var hits = doc.SearchAll("Report", caseSensitive: false)
.GroupBy(r => r.Page);
// --- Editing ---
using (var editor = DocumentEditor.Open("report.pdf"))
{
editor.Title = "Updated Title";
editor.RotateAllPages(90);
editor.SetFormFieldValue("name", "Jane Doe");
editor.Save("report-updated.pdf");
}
// --- Rendering ---
byte[] png = doc.RenderPage(0, new RenderOptions { Dpi = 200, Format = RenderImageFormat.Png });
File.WriteAllBytes("page0.png", png);
他の言語のバインディング
PDF Oxide はあらゆる主要なエコシステム向けにネイティブバインディングを提供しています: Rust, Python, Node.js, WASM, Golang, Java, PHP, Ruby, C++, Swift, Kotlin, Dart, R, Julia, Zig, Scala, Clojure, Objective-C, Elixir。
次のステップ
- 型と列挙型 — すべての共有型と列挙型
- Page API リファレンス — バインディング間で一貫したページ単位の反復処理
- C# 入門 — チュートリアル