Konversi PDF ke Excel dan Markdown
Konversi PDF ke Excel dan Markdown
Panduan ini menunjukkan cara mengonversi PDF ke workbook Excel (.xlsx) atau ke Markdown, serta cara memuat PDF kembali dari salah satu format. Document melakukan konversi dalam kedua arah; ExcelSaveOptions dan MarkdownSaveOptions menyetel ekspor, dan ExcelLoadOptions dan MarkdownLoadOptions menyetel impor. Sejak 26.9.0.
PDF ke XLSX
Tabel yang terdeteksi dalam PDF menjadi kisi lembar kerja dengan sel yang bertipe — angka, tanggal, boolean, mata uang, dan persentase ditulis sebagai nilai Excel asli bukan teks — dan gaya sumber (jenis/font ukuran, warna teks, isi sel, batas, tinggi baris, lebar kolom, perataan, sel yang digabung) dipertahankan. Gambar di dalam sel tabel disematkan sebagai gambar.
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 (alias, SaveFormat.Excel, juga diterima) memberikan hasil yang sama dengan opsi default: doc.save("report.xlsx", SaveFormat.Xlsx). Enum ExcelFormat milik ExcelSaveOptions juga menerima XmlSpreadSheet2003, CSV, dan ODS untuk kompatibilitas Aspose.PDF API, tetapi pustaka ini selalu menulis paket .xlsx terlepas dari nilai yang dipilih. Anda juga dapat menulis ke aliran dengan doc.save(OutputStream, ExcelSaveOptions).
XLSX ke PDF, termasuk formulir langsung
Muat workbook .xlsx melalui konstruktor Document yang menerima ExcelLoadOptions. Setiap lembar menjadi tabel PDF dengan pengetikan sel dan dukungan gaya yang sama seperti arah ekspor.
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) mengubah sel numerik dan label menjadi formulir PDF “live” alih-alih teks statis: sel numerik menjadi bidang teks yang dapat diedit, sel formula menjadi bidang hanya-baca yang menghitung ulang dari masukan mereka, dan sel label atau konstan tetap teks statis kecuali ada formula lain yang merujuk kepadanya. ExcelFormulaTranslator menerjemahkan setiap formula ke Acrobat JavaScript; formula yang fungsi-nya tidak didukung akan kembali ke nilai statis terakhir yang dihitung, sehingga bidang tetap menampilkan angka yang benar. Penghitungan ulang sendiri hanya berjalan di penampil dengan mesin forms/JavaScript — Adobe Acrobat atau Foxit; penampil tanpa mesin tersebut hanya menampilkan nilai yang sudah dipanggang, tanpa penghitungan ulang secara live.
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 ke Markdown
Document memproyeksikan PDF ke Markdown beraroma CommonMark / GitHub: heading, paragraf, daftar, tabel, penekanan (tebal/miring/garis coret), kode inline dan berkeliling, tautan, gambar, dan catatan kaki.
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 memberikan hasil yang sama dengan opsi default: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions) mengembalikan Markdown sebagai String alih-alih menulis ke file (tidak ada accessor terpisah untuk “teks Markdown” — metode ini adalah yang harus dipanggil untuk hasil dalam memori).
Markdown ke PDF
Muat file Markdown melalui konstruktor Document yang menerima MarkdownLoadOptions. Parser subset CommonMark/GFM yang ditulis tangan membaca sumber: heading, paragraf, daftar, tabel, penekanan, kode, tautan, gambar, blok kutipan, dan catatan kaki. HTML eksotik yang disematkan dalam Markdown tidak sepenuhnya direproduksi.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}Tips dan Praktik Terbaik
- Keakuratan bersifat struktural, bukan pixel-per-pixel untuk kedua format: konversi mempertahankan konten, struktur, gambar, dan geometri halaman, bukan penampilan yang tepat saat dirender.
ExcelSaveOptions.ExcelFormatdanMarkdownSaveOptionsbendera struktural hanya mengubah output format paket atau heuristik — nilai sebenarnya yang ditandai pada PDF Anda masih menentukan apa yang terdeteksi sebagai tabel, judul, atau daftar.- Untuk formulir XLSX langsung, perlakukan nilai sel yang sudah tertanam sebagai fallback yang benar: hanya penampil yang mendukung formulir yang menghitung ulang rumus saat dibuka.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
Output XLSX selalu memiliki ekstensi .xlsx bahkan setelah mengatur ExcelFormat.CSV atau ODS | Penulis FOSS selalu menyerialkan paket OOXML .xlsx; nilai ExcelFormat lainnya hanya ada untuk kompatibilitas Aspose.PDF API | Anggap output sebagai .xlsx terlepas dari nilai ExcelFormat yang Anda tetapkan |
| Formulir XLSX yang menghitung ulang menampilkan angka statis alih-alih rumus langsung | Penampil PDF tidak memiliki mesin forms/JavaScript | Buka file di Adobe Acrobat atau Foxit untuk melihat perhitungan ulang secara langsung |
| Sel formula menampilkan nilai yang tampak usang | ExcelFormulaTranslator tidak mendukung fungsi formula tersebut | Ini adalah fallback yang didokumentasikan: bidang tetap menyimpan nilai statis terakhir yang dihitung |
FAQ
Bisakah saya mendapatkan Markdown sebagai String alih-alih file?
Ya — panggil Document.markdownText(MarkdownSaveOptions); ia mengembalikan teks Markdown secara langsung alih-alih menuliskannya ke file.
Apakah pengimpor XLSX mendukung rumus Excel yang sebenarnya?
Hanya ketika ExcelLoadOptions.setInteractiveForms(true) diatur, dan hanya subset fungsi ExcelFormulaTranslator yang dapat diterjemahkan ke Acrobat JavaScript. Semua yang lain akan kembali ke nilai statis terakhir yang dihitung oleh rumus dalam buku kerja sumber.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
ExcelSaveOptions | Menyetel ekspor PDF ke XLSX |
ExcelLoadOptions | Menyetel impor XLSX ke PDF, termasuk formulir live |
ExcelFormat | Varian spreadsheet target yang diterima oleh ExcelSaveOptions |
ExcelFormulaTranslator | Menerjemahkan formula Excel ke dalam Acrobat JavaScript untuk formulir langsung |
MarkdownSaveOptions | Menyetel ekspor PDF ke Markdown |
MarkdownLoadOptions | Menyetel impor Markdown ke PDF |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Mengembalikan Markdown sebagai String |