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.ExcelFormat i MarkdownSaveOptions flagi 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

ProblemPrzyczynaNaprawa
Wyjście XLSX zawsze ma rozszerzenie .xlsx, nawet po ustawieniu ExcelFormat.CSV lub ODSPisarka FOSS zawsze serializuje pakiet OOXML .xlsx; pozostałe wartości ExcelFormat istnieją wyłącznie dla kompatybilności Aspose.PDF APITraktuj 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/JavaScriptOtwó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łyTo 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/MetodaOpis
ExcelSaveOptionsDostraja eksport PDF do XLSX
ExcelLoadOptionsDostraja import XLSX do PDF, w tym formularze na żywo
ExcelFormatDocelowy wariant arkusza kalkulacyjnego akceptowany przez ExcelSaveOptions
ExcelFormulaTranslatorTłumaczy formuły Excel na Acrobat JavaScript dla formularzy na żywo
MarkdownSaveOptionsReguluje eksport PDF do Markdown
MarkdownLoadOptionsReguluje import Markdown do PDF
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptionsMarkdownSaveOptions)`
Document.markdownText(MarkdownSaveOptions)Zwraca Markdown jako String

Zobacz także

 Polski