Konversi PDF ke Excel dan Markdown

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.ExcelFormat dan MarkdownSaveOptions bendera 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

MasalahPenyebabPerbaikan
Output XLSX selalu memiliki ekstensi .xlsx bahkan setelah mengatur ExcelFormat.CSV atau ODSPenulis FOSS selalu menyerialkan paket OOXML .xlsx; nilai ExcelFormat lainnya hanya ada untuk kompatibilitas Aspose.PDF APIAnggap output sebagai .xlsx terlepas dari nilai ExcelFormat yang Anda tetapkan
Formulir XLSX yang menghitung ulang menampilkan angka statis alih-alih rumus langsungPenampil PDF tidak memiliki mesin forms/JavaScriptBuka file di Adobe Acrobat atau Foxit untuk melihat perhitungan ulang secara langsung
Sel formula menampilkan nilai yang tampak usangExcelFormulaTranslator tidak mendukung fungsi formula tersebutIni 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/MetodeDeskripsi
ExcelSaveOptionsMenyetel ekspor PDF ke XLSX
ExcelLoadOptionsMenyetel impor XLSX ke PDF, termasuk formulir live
ExcelFormatVarian spreadsheet target yang diterima oleh ExcelSaveOptions
ExcelFormulaTranslatorMenerjemahkan formula Excel ke dalam Acrobat JavaScript untuk formulir langsung
MarkdownSaveOptionsMenyetel ekspor PDF ke Markdown
MarkdownLoadOptionsMenyetel impor Markdown ke PDF
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptionsMarkdownSaveOptions)`
Document.markdownText(MarkdownSaveOptions)Mengembalikan Markdown sebagai String

Lihat Juga

 Bahasa Indonesia