PDF in Excel und Markdown konvertieren
PDF in Excel und Markdown konvertieren
Dieser Leitfaden zeigt, wie man ein PDF in eine Excel (.xlsx) Arbeitsmappe oder in Markdown konvertiert und wie man ein PDF aus beiden Formaten wieder lädt. Document führt die Konvertierung in beide Richtungen durch; ExcelSaveOptions und MarkdownSaveOptions steuern den Export, und ExcelLoadOptions und MarkdownLoadOptions steuern den Import. Seit Version 26.9.0.
PDF zu XLSX
Im PDF erkannte Tabellen werden zu Arbeitsblatt-Gittern mit typisierten Zellen — Zahlen, Datumsangaben, Booleans, Währungen und Prozentsätze werden als echte Excel-Werte statt als Text geschrieben — und die ursprüngliche Formatierung (Schriftart/Größe, Textfarbe, Zellfüllung, Rahmen, Zeilenhöhen, Spaltenbreiten, Ausrichtung, zusammengeführte Zellen) wird übernommen. Bilder in Tabellenzellen werden als Zeichnungen eingebettet.
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 (ein Alias, SaveFormat.Excel, wird ebenfalls akzeptiert) liefert dasselbe Ergebnis mit den Standardoptionen: doc.save("report.xlsx", SaveFormat.Xlsx). Das eigene ExcelFormat-Enum von ExcelSaveOptions akzeptiert außerdem XmlSpreadSheet2003, CSV und ODS für die Aspose.PDF API-Kompatibilität, aber diese Bibliothek schreibt immer ein .xlsx-Paket, unabhängig davon, welcher Wert gesetzt ist. Sie können auch mit doc.save(OutputStream, ExcelSaveOptions) in einen Stream schreiben.
XLSX zu PDF, einschließlich Live-Formularen
Laden Sie eine .xlsx-Arbeitsmappe über einen Document-Konstruktor, der ExcelLoadOptions entgegennimmt. Jeder Arbeitsblatt wird zu einer PDF-Tabelle mit derselben Zelltypisierung und Formatierungsunterstützung wie in der Export-Richtung.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}Das Einstellen von ExcelLoadOptions.setInteractiveForms(true) verwandelt numerische und Beschriftungszellen in ein „Live“-PDF-Formular anstelle von statischem Text: Numerische Zellen werden zu editierbaren Textfeldern, Formelfelder zu schreibgeschützten Feldern, die aus ihren Eingaben neu berechnet werden, und Beschriftungs- oder Konstantenzellen bleiben statischer Text, sofern nicht eine andere Formel sie referenziert. ExcelFormulaTranslator übersetzt jede Formel in Acrobat JavaScript; eine Formel, deren Funktion nicht unterstützt wird, fällt auf ihren zuletzt berechneten statischen Wert zurück, sodass das Feld weiterhin die korrekte Zahl anzeigt. Die Neuberechnung selbst läuft nur in einem Viewer mit einer forms/JavaScript-Engine — Adobe Acrobat oder Foxit; ein Viewer ohne diese Engine zeigt nur die eingebetteten Werte, ohne Live-Neuberechnung.
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 zu Markdown
Document projiziert ein PDF zu CommonMark / GitHub-basiertem Markdown: Überschriften, Absätze, Listen, Tabellen, Hervorhebungen (fett/kursiv/durchgestrichen), Inline- und Block-Code, Links, Bilder und Fußnoten.
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 liefert dasselbe Ergebnis mit den Standardoptionen: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions) gibt das Markdown als String zurück, anstatt eine Datei zu schreiben (es gibt keinen separaten “Markdown text”-Accessor — diese Methode ist die zu verwendende für ein Ergebnis im Speicher).
Markdown zu PDF
Lade eine Markdown-Datei über einen Document-Konstruktor, der MarkdownLoadOptions entgegennimmt. Ein handgeschriebener CommonMark/GFM-Teilparser liest die Quelle: Überschriften, Absätze, Listen, Tabellen, Hervorhebungen, Code, Links, Bilder, Blockzitate und Fußnoten. Exotisches HTML, das im Markdown eingebettet ist, wird nicht vollständig reproduziert.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}Tipps und bewährte Verfahren
- Die Treue bezieht sich auf die Struktur, nicht auf pixelgenaue Übereinstimmung für beide Formate: Konvertierungen erhalten Inhalt, Struktur, Bilder und Seitengeometrie, jedoch nicht das exakt gerenderte Erscheinungsbild.
ExcelSaveOptions.ExcelFormatund dasMarkdownSaveOptionsStrukturelle Flags ändern nur das output Paketformat oder Heuristiken — die tatsächlichen Werte, mit denen Ihr PDF getaggt wurde, bestimmen weiterhin, was als Tabelle, Überschrift oder Liste erkannt wird.- Bei Live-XLSX-Formularen sollten die eingebetteten Zellwerte als korrekter Fallback behandelt werden: Nur ein formularfähiger Viewer berechnet Formeln beim Öffnen neu.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
XLSX-Ausgabe hat immer eine .xlsx-Erweiterung, selbst nachdem ExcelFormat.CSV oder ODS eingestellt wurde. | Der FOSS-Writer serialisiert immer ein OOXML .xlsx-Paket; die anderen ExcelFormat-Werte existieren nur für die Aspose.PDF API-Kompatibilität | Behandle die Ausgabe als .xlsx, ungeachtet des von dir gesetzten ExcelFormat-Werts. |
| Ein neu berechnendes XLSX-Formular zeigt statische Zahlen anstelle von Live-Formeln. | Der PDF-Viewer hat keine forms/JavaScript-Engine. | Öffne die Datei in Adobe Acrobat oder Foxit, um die Live-Neuberechnung zu sehen. |
| Eine Formezelle zeigt einen veraltet wirkenden Wert an. | ExcelFormulaTranslator unterstützt die Funktion dieser Formel nicht. | Dies ist der dokumentierte Fallback: Das Feld behält seinen zuletzt berechneten statischen Wert bei. |
FAQ
Kann ich Markdown als String statt einer Datei erhalten?
Ja — rufen Sie Document.markdownText(MarkdownSaveOptions) auf; es gibt den Markdown-Text direkt zurück, anstatt ihn in eine Datei zu schreiben.
Unterstützt der XLSX-Importer echte Excel-Formeln?
Nur wenn ExcelLoadOptions.setInteractiveForms(true) gesetzt ist und nur der Funktionsunterbereich, den ExcelFormulaTranslator in Acrobat JavaScript übersetzen kann. Alles andere fällt auf den zuletzt berechneten statischen Wert der Formel im Quell-Arbeitsbuch zurück.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
ExcelSaveOptions | Optimiert den PDF-zu-XLSX-Export |
ExcelLoadOptions | Optimiert den XLSX-zu-PDF-Import, einschließlich Live-Formularen |
ExcelFormat | Zieltabellenkalkulationsvariante, die von ExcelSaveOptions akzeptiert wird |
ExcelFormulaTranslator | Übersetzt Excel-Formeln in Acrobat JavaScript für Live-Formulare |
MarkdownSaveOptions | Optimiert den PDF-zu-Markdown-Export |
MarkdownLoadOptions | Optimiert den Markdown-zu-PDF-Import |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Gibt das Markdown als String zurück |