Convertir PDF en Excel et Markdown

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.ExcelFormat et le MarkdownSaveOptions les 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èmeCauseCorrection
La sortie XLSX a toujours une extension .xlsx même après avoir défini ExcelFormat.CSV ou ODSL’éditeur FOSS sérialise toujours un paquet OOXML .xlsx ; les autres valeurs ExcelFormat n’existent que pour la compatibilité Aspose.PDF APITraitez 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 directLe visualiseur PDF n’a pas de moteur forms/JavaScriptOuvrez 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éeExcelFormulaTranslator ne prend pas en charge la fonction de cette formuleCeci 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éthodeDescription
ExcelSaveOptionsAjuste l’export PDF vers XLSX
ExcelLoadOptionsAjuste l’import XLSX vers PDF, y compris les formulaires interactifs
ExcelFormatType de feuille de calcul cible accepté par ExcelSaveOptions
ExcelFormulaTranslatorTraduit les formules Excel en Acrobat JavaScript pour les formulaires interactifs
MarkdownSaveOptionsAjuste l’export PDF vers Markdown
MarkdownLoadOptionsAjuste l’import Markdown vers PDF
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptionsMarkdownSaveOptions)`
Document.markdownText(MarkdownSaveOptions)Renvoie le Markdown en tant que String

Voir aussi

 Français