Convertir PDF en Excel et Markdown
Convertir PDF en Excel et Markdown
Ce guide montre comment convertir un PDF en classeur Excel (.xlsx) ou en Markdown, et comment charger un PDF à partir de l’un ou l’autre format. Document effectue la conversion dans les deux sens; ExcelSaveOptions et MarkdownSaveOptions ajustent l’exportation, et ExcelLoadOptions et MarkdownLoadOptions ajustent l’importation. Depuis la version 26.9.0.
PDF en XLSX
Les tables détectées dans le PDF deviennent des grilles de feuilles de calcul avec des cellules typées — les nombres, dates, booléens, devises et pourcentages sont écrits comme de véritables valeurs Excel plutôt que comme du texte — et le style source (famille/taille de police, couleur du texte, remplissage de cellule, bordures, hauteurs de lignes, largeurs de colonnes, alignement, cellules fusionnées) est conservé. Les images à l’intérieur des cellules de tableau sont intégrées en tant que dessins.
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 (un alias, SaveFormat.Excel, est également accepté) donne le même résultat avec les options par défaut: doc.save("report.xlsx", SaveFormat.Xlsx). L’énumération ExcelFormat propre à ExcelSaveOptions accepte également XmlSpreadSheet2003, CSV et ODS pour la compatibilité Aspose.PDF API, mais cette bibliothèque écrit toujours un package .xlsx quel que soit la valeur définie. Vous pouvez également écrire dans un flux avec doc.save(OutputStream, ExcelSaveOptions).
XLSX en PDF, y compris les formulaires interactifs
Chargez un classeur .xlsx via un constructeur Document qui prend ExcelLoadOptions. Chaque feuille devient une table PDF avec le même typage de cellules et la même prise en charge du style que dans la direction d’exportation.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}Activer ExcelLoadOptions.setInteractiveForms(true) transforme les cellules numériques et d’étiquette en un formulaire PDF «live» au lieu de texte statique: les cellules numériques deviennent des champs de texte éditables, les cellules de formule deviennent des champs en lecture seule qui se recalculent à partir de leurs entrées, et les cellules d’étiquette ou constantes restent du texte statique sauf si une autre formule les référence. ExcelFormulaTranslator traduit chaque formule en Acrobat JavaScript; une formule dont la fonction n’est pas prise en charge revient à sa dernière valeur statique calculée, de sorte que le champ affiche toujours le nombre correct. Le recalcul lui-même ne s’exécute que dans un visualiseur disposant d’un moteur forms/JavaScript — Adobe Acrobat ou Foxit; un visualiseur sans ce moteur n’affiche que les valeurs incorporées, sans recalcul en direct.
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 vers Markdown
Document projette un PDF vers du Markdown à la saveur CommonMark / GitHub: titres, paragraphes, listes, tableaux, emphase (gras/italique/rayé), code en ligne et en bloc, liens, images et notes de bas de page.
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 donne le même résultat avec les options par défaut: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions) renvoie le Markdown sous forme de String au lieu d’écrire un fichier (il n’existe pas d’accesseur séparé «texte Markdown» — cette méthode est celle à appeler pour un résultat en mémoire).
Markdown vers PDF
Chargez un fichier Markdown via un constructeur Document qui accepte MarkdownLoadOptions. Un analyseur écrit à la main du sous-ensemble CommonMark/GFM lit la source: titres, paragraphes, listes, tableaux, emphase, code, liens, images, citations en bloc et notes de bas de page. Les HTML exotiques incorporés dans le Markdown ne sont pas entièrement reproduits.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}Conseils et meilleures pratiques
- La fidélité est structurelle, pas pixel-parfait pour aucun des deux formats: les conversions conservent le contenu, la structure, les images et la géométrie des pages, mais pas l’apparence rendue exacte.
ExcelSaveOptions.ExcelFormatet leMarkdownSaveOptionsles indicateurs structurels ne changent que le output format du paquet ou les heuristiques — les valeurs réelles avec lesquelles votre PDF a été étiqueté déterminent toujours ce qui est détecté comme un tableau, un titre ou une liste.- Pour les formulaires XLSX en direct, considérez les valeurs de cellules intégrées comme le repli correct: seul un visualiseur capable de gérer les formulaires recalcule les formules à l’ouverture.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
La sortie XLSX a toujours une extension .xlsx même après avoir défini ExcelFormat.CSV ou ODS | L’éditeur FOSS sérialise toujours un paquet OOXML .xlsx ; les autres valeurs ExcelFormat n’existent que pour la compatibilité Aspose.PDF API | Traitez la sortie comme .xlsx quelle que soit la valeur ExcelFormat que vous définissez |
| Un formulaire XLSX en cours de recalcul affiche des nombres statiques au lieu de formules en direct | Le visualiseur PDF n’a pas de moteur forms/JavaScript | Ouvrez le fichier dans Adobe Acrobat ou Foxit pour voir le recalcul en direct |
| Une cellule de formule montre une valeur qui paraît périmée | ExcelFormulaTranslator ne prend pas en charge la fonction de cette formule | Ceci est le contournement documenté : le champ conserve sa dernière valeur statique calculée |
FAQ
Puis-je obtenir le Markdown sous forme de String plutôt que d’un fichier?
Oui — appelez Document.markdownText(MarkdownSaveOptions); il renvoie le texte Markdown directement au lieu de l’écrire dans un fichier.
L’importateur XLSX prend-il en charge les vraies formules Excel?
Uniquement lorsque ExcelLoadOptions.setInteractiveForms(true) est défini, et uniquement le sous-ensemble de fonctions que ExcelFormulaTranslator peut traduire vers Acrobat JavaScript. Tout le reste revient à la dernière valeur statique calculée de la formule dans le classeur source.
API Reference Résumé
| Classe/Méthode | Description |
|---|---|
ExcelSaveOptions | Ajuste l’export PDF vers XLSX |
ExcelLoadOptions | Ajuste l’import XLSX vers PDF, y compris les formulaires interactifs |
ExcelFormat | Type de feuille de calcul cible accepté par ExcelSaveOptions |
ExcelFormulaTranslator | Traduit les formules Excel en Acrobat JavaScript pour les formulaires interactifs |
MarkdownSaveOptions | Ajuste l’export PDF vers Markdown |
MarkdownLoadOptions | Ajuste l’import Markdown vers PDF |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Renvoie le Markdown en tant que String |