Převést PDF do Excelu a Markdownu
Převést PDF do Excelu a Markdownu
Tento průvodce ukazuje, jak převést PDF do sešitu Excel (.xlsx) nebo do Markdownu a jak načíst PDF zpět z libovolného formátu. Document provádí konverzi v obou směrech; ExcelSaveOptions a MarkdownSaveOptions ladí export a ExcelLoadOptions a MarkdownLoadOptions ladí import. Od verze 26.9.0.
PDF do XLSX
Tabulky detekované v PDF se stanou mřížkami listu s typovanými buňkami — čísla, data, booleovské hodnoty, měny a procenta jsou zapisovány jako skutečné hodnoty Excelu místo textu — a původní stylování (písmo/velikost, barva textu, výplň buňky, ohraničení, výšky řádků, šířky sloupců, zarovnání, sloučené buňky) je zachováno. Obrázky uvnitř buněk tabulky jsou vloženy jako kresby.
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, je také akceptován) dává stejný výsledek s výchozími možnostmi: doc.save("report.xlsx", SaveFormat.Xlsx). Enum ExcelFormat v ExcelSaveOptions také přijímá XmlSpreadSheet2003, CSV a ODS pro kompatibilitu s Aspose.PDF API, ale tato knihovna vždy zapisuje balíček .xlsx bez ohledu na nastavenou hodnotu. Také můžete zapisovat do proudu pomocí doc.save(OutputStream, ExcelSaveOptions).
XLSX do PDF, včetně živých formulářů
Načtěte sešit .xlsx přes konstruktor Document, který přijímá ExcelLoadOptions. Každý list se stane PDF tabulkou se stejným typováním buněk a podporou stylování jako při exportu.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}Nastavení ExcelLoadOptions.setInteractiveForms(true) převádí číselné a popiskové buňky na „živý“ PDF formulář místo statického textu: číselné buňky se stávají editovatelnými textovými poli, buňky s formulí se mění na pole jen pro čtení, která přepočítávají své vstupy, a popiskové nebo konstantní buňky zůstávají statickým textem, pokud na ně neodkazuje jiná formule. ExcelFormulaTranslator překládá každou formuli do Acrobat JavaScript; formule, jejíž funkci nepodporuje, se vrátí k poslední vypočtené statické hodnotě, takže pole stále zobrazuje správné číslo. Samotné přepočítání probíhá jen v prohlížeči s engine forms/JavaScript — Adobe Acrobat nebo Foxit; prohlížeč bez tohoto enginu zobrazí jen zapečené hodnoty, bez živého přepočítání.
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 do Markdownu
Document převádí PDF na CommonMark / GitHub-flavorovaný Markdown: nadpisy, odstavce, seznamy, tabulky, zvýraznění (tučné/kurzíva/přeškrtnutí), vložený a blokový kód, odkazy, obrázky a poznámky pod čarou.
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 poskytuje stejný výsledek s výchozími možnostmi: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions) vrací Markdown jako String místo zápisu do souboru (neexistuje samostatný přístup k „Markdown text“ — tato metoda je ta, která se má použít pro výsledek v paměti).
Markdown do PDF
Načtěte soubor Markdown pomocí konstruktoru Document, který přijímá MarkdownLoadOptions. Ručně psaný parser podmnožiny CommonMark/GFM čte zdroj: nadpisy, odstavce, seznamy, tabulky, zvýraznění, kód, odkazy, obrázky, blokové citace a poznámky pod čarou. Exotické HTML vložené do Markdownu není plně reprodukováno.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}Tipy a osvědčené postupy
- Věrnost je strukturální, nikoli pixelově přesná pro oba formáty: převody zachovávají obsah, strukturu, obrázky a geometrické uspořádání stránek, nikoli přesný vzhled při vykreslení.
ExcelSaveOptions.ExcelFormataMarkdownSaveOptionsstrukturální příznaky mění pouze output formát balíčku nebo heuristiky — skutečné hodnoty, se kterými byl váš PDF označen, stále určují, co je detekováno jako tabulka, nadpis nebo seznam.- U živých formulářů XLSX považujte přednastavené hodnoty buněk za správný fallback: pouze prohlížeč podporující formuláře přepočítá vzorce při otevření.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
Výstup XLSX má vždy příponu .xlsx, i po nastavení ExcelFormat.CSV nebo ODS | FOSS zapisovač vždy serializuje OOXML balíček .xlsx; ostatní hodnoty ExcelFormat existují pouze pro kompatibilitu s Aspose.PDF API | Považujte výstup za .xlsx bez ohledu na hodnotu ExcelFormat, kterou nastavíte |
| Přepočítávající formulář XLSX zobrazuje pevná čísla místo živých vzorců | Prohlížeč PDF nemá žádný engine formulářů/JavaScript | Otevřete soubor v Adobe Acrobat nebo Foxit, abyste viděli živé přepočítání |
| Buňka s vzorcem zobrazuje zastaralou hodnotu | ExcelFormulaTranslator nepodporuje funkci tohoto vzorce | Toto je dokumentovaný záložní mechanismus: pole si uchovává svou poslední vypočtenou statickou hodnotu |
FAQ
Mohu získat Markdown jako String místo souboru?
Ano — zavolejte Document.markdownText(MarkdownSaveOptions); vrátí text Markdown přímo místo zápisu do souboru.
Podporuje importér XLSX skutečné Excelové vzorce?
Pouze když je nastaveno ExcelLoadOptions.setInteractiveForms(true) a pouze podmnožina funkcí, které ExcelFormulaTranslator dokáže přeložit do Acrobat JavaScript. Všechno ostatní se vrátí k poslední vypočtené statické hodnotě vzorce ve zdrojovém sešitu.
API Reference Shrnutí
| Třída/Metoda | Popis: |
|---|---|
ExcelSaveOptions | Ladí export PDF do XLSX |
ExcelLoadOptions | Ladí import XLSX do PDF, včetně živých formulářů |
ExcelFormat | Cílová varianta tabulky akceptována ExcelSaveOptions |
ExcelFormulaTranslator | Překládá Excelové vzorce do Acrobat JavaScript pro živé formuláře |
MarkdownSaveOptions | Ladí export PDF do Markdown |
MarkdownLoadOptions | Ladí import Markdown do PDF |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Vrací Markdown jako String |