PDF を Excel と Markdown に変換
PDF を Excel と Markdown に変換
このガイドでは、PDF を Excel (.xlsx) ワークブックまたは Markdown に変換する方法と、いずれかの形式から PDF を再度読み込む方法を示します。Document は双方向の変換を実行します;ExcelSaveOptions と MarkdownSaveOptions はエクスポートを調整し、ExcelLoadOptions と MarkdownLoadOptions はインポートを調整します。バージョン 26.9.0 以降。
PDF から XLSX へ
PDF で検出されたテーブルは、型付きセルを持つワークシートのグリッドに変換されます — 数字、日付、ブール値、通貨、パーセンテージはテキストではなく実際の Excel 値として書き込まれます — そして元のスタイリング(フォントファミリー/サイズ、文字色、セルの塗りつぶし、罫線、行の高さ、列の幅、配置、結合セル)が引き継がれます。テーブルセル内の画像は図として埋め込まれます。
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelSaveOptions;
try (Document doc = new Document("report.pdf")) {
ExcelSaveOptions options = new ExcelSaveOptions();
options.setFormat(ExcelSaveOptions.ExcelFormat.XLSX); // default
options.setMinimizeTheNumberOfWorksheets(true); // merge pages onto fewer sheets
options.setInsertBlankColumnAtFirst(false); // no leading spacer column
options.setUniformWorksheets(false); // allow per-sheet column widths
options.setStructuralHeuristics(true); // recover tables on untagged PDFs
options.setSuppressRunningHeadersFooters(true); // drop repeated page furniture
doc.save("report.xlsx", options);
}SaveFormat.Xlsx(エイリアスの SaveFormat.Excel も受け付けます)は、デフォルトオプションで同じ結果を提供します:doc.save("report.xlsx", SaveFormat.Xlsx)。ExcelSaveOptions の独自の ExcelFormat 列挙型は、Aspose.PDF API 互換性のために XmlSpreadSheet2003、CSV、ODS も受け入れますが、このライブラリは設定された値に関係なく常に .xlsx パッケージを書き出します。doc.save(OutputStream, ExcelSaveOptions) を使用してストリームに書き込むことも可能です。
XLSX から PDF へ、ライブフォームを含む
.xlsx ワークブックを、ExcelLoadOptions を受け取る Document コンストラクタを通じてロードします。各シートは、エクスポート方向と同様のセル型付けとスタイリングサポートを備えた PDF テーブルに変換されます。
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}Setting ExcelLoadOptions.setInteractiveForms(true) は数値セルとラベルセルを「live」PDFフォームに変換し、静的テキストではなくなります: 数値セルは編集可能なテキストフィールドになり、数式セルは入力に基づいて再計算する読み取り専用フィールドになり、ラベルまたは定数セルは他の数式が参照しない限り静的テキストのままです。ExcelFormulaTranslator は各数式を Acrobat JavaScript に変換します。サポートされていない関数の数式は最後に計算された静的値にフォールバックするため、フィールドは正しい数値を表示し続けます。再計算は forms/JavaScript エンジンを持つビューア(Adobe Acrobat や Foxit など)でのみ実行されます。そのエンジンがないビューアでは、埋め込まれた値だけが表示され、ライブ再計算は行われません。
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
ExcelLoadOptions options = new ExcelLoadOptions();
options.setInteractiveForms(true); // cells → fields, formulas → calculate actions
try (Document doc = new Document("invoice.xlsx", options)) {
doc.save("invoice-live.pdf");
}PDF から Markdown へ
Document は PDF を CommonMark / GitHub 風 Markdown に変換します: 見出し、段落、リスト、表、強調(太字/斜体/取り消し線)、インラインおよびフェンスコード、リンク、画像、脚注。
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownSaveOptions;
try (Document doc = new Document("article.pdf")) {
MarkdownSaveOptions options = new MarkdownSaveOptions();
options.setStructuralHeuristics(true); // recover headings/lists/tables
options.setSuppressRunningHeadersFooters(true); // drop repeated page furniture
options.setRasterizeVectorGraphics(true); // charts/shapes -> referenced images
doc.save("article.md", options);
}SaveFormat.Markdown はデフォルトオプション doc.save("article.md", SaveFormat.Markdown) で同じ結果を出します。Document.markdownText(MarkdownSaveOptions) は Markdown を String として返し、ファイルを書き出しません(別個の「Markdown テキスト」アクセサはありません — このメソッドがインメモリ結果を取得するために呼び出すべきものです)。
Markdown から PDF へ
Document コンストラクタで MarkdownLoadOptions を受け取り、Markdown ファイルをロードします。手書きの CommonMark/GFM サブセットパーサがソースを読み取ります: 見出し、段落、リスト、表、強調、コード、リンク、画像、ブロック引用、脚注。Markdown に埋め込まれた特殊な HTML は完全には再現されません。
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}ヒントとベストプラクティス
- 忠実度は構造的であり、どちらのフォーマットでもピクセル単位の正確さではありません。変換はコンテンツ、構造、画像、ページジオメトリを保持しますが、正確なレンダリング外観は保持しません。
ExcelSaveOptions.ExcelFormatおよびMarkdownSaveOptions構造フラグは、 output パッケージ形式やヒューリスティックは—PDF にタグ付けされた実際の値が、テーブル、見出し、リストのどれとして検出されるかを決定し続けます。- ライブ XLSX フォームの場合、組み込まれたセル値を正しいフォールバックとして扱ってください:開くときに数式を再計算できるフォーム対応ビューアだけが再計算します。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
XLSX の出力は、ExcelFormat.CSV または ODS を設定した後でも、常に .xlsx 拡張子が付きます。 | FOSS ライターは常に OOXML .xlsx パッケージをシリアライズします;他の ExcelFormat 値は Aspose.PDF API 互換性のためだけに存在します。 | 出力を .xlsx とみなしてください、設定した ExcelFormat の値に関係なく |
| 再計算されるXLSXフォームは、ライブの数式ではなく静的な数値を表示します | PDFビューアには forms/JavaScript エンジンがありません | Adobe AcrobatまたはFoxitでファイルを開くと、ライブの再計算が確認できます |
| 数式セルは古く見える値を表示しています | ExcelFormulaTranslator はその数式の関数をサポートしていません | これは文書化されたフォールバックです:フィールドは最後に計算された静的な値を保持します |
FAQ
Markdown をファイルではなく String として取得できますか?
はい — Document.markdownText(MarkdownSaveOptions) を呼び出してください;ファイルに書き込む代わりに Markdown テキストを直接返します。
XLSX インポーターは実際の Excel 数式をサポートしていますか?
ExcelLoadOptions.setInteractiveForms(true) が設定されている場合にのみ、かつ ExcelFormulaTranslator が Acrobat JavaScript に変換できる関数のサブセットだけがサポートされます。それ以外はすべて、ソースワークブック内で最後に計算された静的値にフォールバックします。
API Reference 概要
| クラス/メソッド | 説明 |
|---|---|
ExcelSaveOptions | PDF から XLSX へのエクスポートを調整します |
ExcelLoadOptions | XLSX から PDF へのインポートを調整し、ライブフォームを含みます |
ExcelFormat | 対象スプレッドシート形式は ExcelSaveOptions が受け入れます |
ExcelFormulaTranslator | Excel の数式を Acrobat JavaScript のライブフォーム用に変換します |
MarkdownSaveOptions | PDF から Markdown へのエクスポートを調整します |
MarkdownLoadOptions | Markdown から PDF へのインポートを調整します |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Markdown を String として返します |