Konwertuj PDF do Excela i Markdown
Konwertuj PDF do Excela i Markdown
Ten przewodnik pokazuje, jak przekonwertować PDF do skoroszytu Excel (.xlsx) lub do Markdown oraz jak wczytać PDF z powrotem z dowolnego formatu. Document wykonuje konwersję w obu kierunkach; ExcelSaveOptions i MarkdownSaveOptions dostosowują eksport, a ExcelLoadOptions i MarkdownLoadOptions dostosowują import. Od wersji 26.9.0.
PDF do XLSX
Tabele wykryte w PDF stają się siatkami arkuszy z typowanymi komórkami — liczby, daty, wartości logiczne, waluty i procenty są zapisywane jako prawdziwe wartości Excel, a nie jako tekst — a styl źródłowy (czcionka/rozmiar, kolor tekstu, wypełnienie komórek, obramowania, wysokość wierszy, szerokość kolumn, wyrównanie, scalone komórki) jest zachowywany. Obrazy wewnątrz komórek tabel są osadzane jako rysunki.
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, jest również akceptowany) daje ten sam wynik przy domyślnych opcjach: doc.save("report.xlsx", SaveFormat.Xlsx). ExcelSaveOptions posiada własny enum ExcelFormat, który przyjmuje także XmlSpreadSheet2003, CSV i ODS dla kompatybilności Aspose.PDF API, ale ta biblioteka zawsze zapisuje pakiet .xlsx, niezależnie od ustawionej wartości. Możesz także zapisać do strumienia przy użyciu doc.save(OutputStream, ExcelSaveOptions).
XLSX do PDF, w tym formularze na żywo
Wczytaj skoroszyt .xlsx za pomocą konstruktora Document, który przyjmuje ExcelLoadOptions. Każdy arkusz staje się tabelą PDF z taką samą obsługą typowania komórek i stylizacji, jak w kierunku eksportu.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}Ustawienie ExcelLoadOptions.setInteractiveForms(true) zamienia komórki liczbowe i etykietowe w „żywy” formularz PDF zamiast statycznego tekstu: komórki liczbowe stają się edytowalnymi polami tekstowymi, komórki z formułami stają się polami tylko do odczytu, które przeliczają się na podstawie ich danych wejściowych, a komórki etykietowe lub stałe pozostają statycznym tekstem, chyba że inna formuła odwołuje się do nich. ExcelFormulaTranslator tłumaczy każdą formułę na Acrobat JavaScript; formuła, której funkcji nie obsługuje, powraca do ostatniej obliczonej wartości statycznej, więc pole nadal wyświetla prawidłową liczbę. Samo przeliczanie odbywa się tylko w przeglądarce z silnikiem forms/JavaScript — Adobe Acrobat lub Foxit; przeglądarka bez tego silnika pokazuje tylko wbudowane wartości, bez żywego przeliczania.
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 Markdown
Document projektuje PDF do CommonMark / GitHub-Flavored Markdown: nagłówki, akapity, listy, tabele, wyróżnienia (pogrubienie/kursywa/przekreślenie), kod inline i w blokach, linki, obrazy i przypisy.
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 daje ten sam wynik z ustawieniami domyślnymi: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions) zwraca Markdown jako String zamiast zapisywać plik (nie ma osobnego akcesora “Markdown text” — ta metoda jest tą, którą należy wywołać, aby uzyskać wynik w pamięci).
Markdown do PDF
Wczytaj plik Markdown przy użyciu konstruktora Document, który przyjmuje MarkdownLoadOptions. Ręcznie napisany parser podzbioru CommonMark/GFM odczytuje źródło: nagłówki, akapity, listy, tabele, wyróżnienia, kod, linki, obrazy, cytaty blokowe i przypisy. Egzotyczny HTML osadzony w Markdown nie jest w pełni odtwarzany.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}Wskazówki i najlepsze praktyki
- Wierność jest strukturalna, a nie dokładna pikselowo dla żadnego z formatów: konwersje zachowują treść, strukturę, obrazy i geometrię strony, a nie dokładny wygląd renderowany.
ExcelSaveOptions.ExcelFormatiMarkdownSaveOptionsflagi strukturalne tylko zmieniają output format pakietu lub heurystyki — rzeczywiste wartości, które zostały przypisane Twojemu PDF, nadal decydują o tym, co jest wykrywane jako tabela, nagłówek lub lista.- W przypadku żywych formularzy XLSX traktuj wbudowane wartości komórek jako prawidłowy fallback: tylko przeglądarka obsługująca formularze przelicza formuły przy otwarciu.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
Wyjście XLSX zawsze ma rozszerzenie .xlsx, nawet po ustawieniu ExcelFormat.CSV lub ODS | Pisarka FOSS zawsze serializuje pakiet OOXML .xlsx; pozostałe wartości ExcelFormat istnieją wyłącznie dla kompatybilności Aspose.PDF API | Traktuj wyjście jako .xlsx niezależnie od wartości ExcelFormat, którą ustawisz |
| Formularz XLSX z przeliczaniem wyświetla statyczne liczby zamiast bieżących formuł | Przeglądarka PDF nie ma silnika formularzy/JavaScript | Otwórz plik w Adobe Acrobat lub Foxit, aby zobaczyć bieżące przeliczanie |
| Komórka z formułą wyświetla przestarzałą wartość | ExcelFormulaTranslator nie obsługuje funkcji tej formuły | To jest udokumentowane rozwiązanie awaryjne: pole zachowuje swoją ostatnią obliczoną statyczną wartość |
FAQ
Czy mogę otrzymać Markdown jako String zamiast pliku?
Tak — wywołaj Document.markdownText(MarkdownSaveOptions); zwraca ona tekst Markdown bezpośrednio zamiast zapisywać go do pliku.
Czy importer XLSX obsługuje prawdziwe formuły Excel?
Tylko gdy ustawiony jest ExcelLoadOptions.setInteractiveForms(true), i tylko podzbiór funkcji ExcelFormulaTranslator może być przetłumaczony na Acrobat JavaScript. Wszystko inne wraca do ostatniej obliczonej statycznej wartości formuły w źródłowym skoroszycie.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
ExcelSaveOptions | Dostraja eksport PDF do XLSX |
ExcelLoadOptions | Dostraja import XLSX do PDF, w tym formularze na żywo |
ExcelFormat | Docelowy wariant arkusza kalkulacyjnego akceptowany przez ExcelSaveOptions |
ExcelFormulaTranslator | Tłumaczy formuły Excel na Acrobat JavaScript dla formularzy na żywo |
MarkdownSaveOptions | Reguluje eksport PDF do Markdown |
MarkdownLoadOptions | Reguluje import Markdown do PDF |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Zwraca Markdown jako String |