Converter PDF para Excel e Markdown
Converter PDF para Excel e Markdown
Este guia mostra como converter um PDF para uma pasta de trabalho Excel (.xlsx) ou para Markdown, e como carregar um PDF de volta a partir de qualquer dos formatos. Document realiza a conversão em ambas as direções; ExcelSaveOptions e MarkdownSaveOptions ajustam a exportação, e ExcelLoadOptions e MarkdownLoadOptions ajustam a importação. Desde a versão 26.9.0.
PDF para XLSX
As tabelas detectadas no PDF se tornam grades de planilhas com células tipadas — números, datas, booleanos, moedas e porcentagens são gravados como valores reais do Excel em vez de texto — e a formatação original (família/tamanho da fonte, cor do texto, preenchimento da célula, bordas, alturas das linhas, larguras das colunas, alinhamento, células mescladas) é mantida. Imagens dentro das células da tabela são incorporadas como desenhos.
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 (um alias, SaveFormat.Excel, também é aceito) fornece o mesmo resultado com as opções padrão: doc.save("report.xlsx", SaveFormat.Xlsx). O enum ExcelFormat próprio de ExcelSaveOptions também aceita XmlSpreadSheet2003, CSV e ODS para compatibilidade Aspose.PDF API, mas esta biblioteca sempre grava um pacote .xlsx independentemente do valor definido. Você também pode gravar em um stream com doc.save(OutputStream, ExcelSaveOptions).
XLSX para PDF, incluindo formulários interativos
Carregue uma pasta de trabalho .xlsx através de um construtor Document que recebe ExcelLoadOptions. Cada planilha se torna uma tabela PDF com o mesmo suporte de tipagem de células e formatação da direção de exportação.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}Configurar ExcelLoadOptions.setInteractiveForms(true) transforma células numéricas e de rótulo em um formulário PDF “live” em vez de texto estático: células numéricas tornam-se campos de texto editáveis, células de fórmula tornam-se campos somente leitura que recalculam a partir de suas entradas, e células de rótulo ou constantes permanecem como texto estático, a menos que outra fórmula as referencie. ExcelFormulaTranslator traduz cada fórmula para Acrobat JavaScript; uma fórmula cuja função não seja suportada reverte ao seu último valor estático calculado, de modo que o campo ainda mostra o número correto. A recalculação em si só é executada em um visualizador com um motor forms/JavaScript — Adobe Acrobat ou Foxit; um visualizador sem esse motor mostra apenas os valores incorporados, sem recalculação ao vivo.
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 para Markdown
Document projeta um PDF para Markdown com sabor CommonMark / GitHub: títulos, parágrafos, listas, tabelas, ênfase (negrito/itálico/riscado), código inline e em blocos, links, imagens e notas de rodapé.
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 produz o mesmo resultado com opções padrão: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions) devolve o Markdown como um String em vez de gravar um arquivo (não existe um acessor separado de “Markdown text” — este método é o que deve ser chamado para obter um resultado em memória).
Markdown para PDF
Carregue um arquivo Markdown através de um construtor Document que recebe MarkdownLoadOptions. Um analisador de subconjunto CommonMark/GFM escrito à mão lê a fonte: títulos, parágrafos, listas, tabelas, ênfase, código, links, imagens, blocos de citação e notas de rodapé. HTML exótico incorporado no Markdown não é reproduzido completamente.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}Dicas e Melhores Práticas
- A fidelidade é estrutural, não pixel-exata para nenhum dos formatos: as conversões preservam conteúdo, estrutura, imagens e geometria da página, não a aparência renderizada exata.
ExcelSaveOptions.ExcelFormate oMarkdownSaveOptionsas bandeiras estruturais apenas alteram o output formato do pacote ou heurísticas — os valores reais com os quais seu PDF foi marcado ainda determinam o que é detectado como uma tabela, um cabeçalho ou uma lista.- Para formulários XLSX ao vivo, trate os valores de célula incorporados como a alternativa correta: somente um visualizador compatível com formulários recalcula as fórmulas ao abrir.
Problemas comuns
| Problema | Causa | Correção |
|---|---|---|
A saída XLSX sempre tem uma extensão .xlsx mesmo após definir ExcelFormat.CSV ou ODS | O escritor FOSS sempre serializa um pacote OOXML .xlsx; os outros valores ExcelFormat existem apenas para compatibilidade Aspose.PDF API | Trate a saída como .xlsx independentemente do valor ExcelFormat que você definir |
| Um formulário XLSX que recalcula mostra números estáticos em vez de fórmulas ao vivo | O visualizador de PDF não tem motor de formulários/JavaScript | Abra o arquivo no Adobe Acrobat ou no Foxit para ver a recalculação ao vivo |
| Uma célula de fórmula exibe um valor com aparência desatualizada | ExcelFormulaTranslator não suporta a função dessa fórmula | Este é o fallback documentado: o campo mantém seu último valor estático calculado |
FAQ
Posso obter Markdown como um String em vez de um arquivo?
Sim — chame Document.markdownText(MarkdownSaveOptions); ele retorna o texto Markdown diretamente em vez de gravá-lo em um arquivo.
O importador XLSX suporta fórmulas reais do Excel?
Só quando ExcelLoadOptions.setInteractiveForms(true) está definido, e somente o subconjunto de funções que ExcelFormulaTranslator pode traduzir para o Acrobat JavaScript. Todo o resto recai no último valor estático calculado da fórmula na pasta de trabalho de origem.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
ExcelSaveOptions | Ajusta a exportação de PDF para XLSX |
ExcelLoadOptions | Ajusta a importação de XLSX para PDF, incluindo formulários ao vivo |
ExcelFormat | Formato de planilha alvo aceito por ExcelSaveOptions |
ExcelFormulaTranslator | Traduz fórmulas do Excel para Acrobat JavaScript para formulários ao vivo |
MarkdownSaveOptions | Ajusta a exportação de PDF para Markdown |
MarkdownLoadOptions | Ajusta a importação de Markdown para PDF |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Retorna o Markdown como um String |