Конвертувати PDF у Excel та Markdown
Конвертувати PDF у Excel та Markdown
Цей посібник показує, як конвертувати PDF у книгу Excel (.xlsx) або у Markdown, а також як завантажити PDF назад з будь-якого з форматів. Document виконує конвертацію в обох напрямках; ExcelSaveOptions і MarkdownSaveOptions налаштовують експорт, а ExcelLoadOptions і MarkdownLoadOptions — імпорт. З версії 26.9.0.
PDF у XLSX
Таблиці, виявлені у PDF, перетворюються у сітки листів з типізованими клітинками— числа, дати, булеві значення, валюта та відсотки записуються як реальні значення Excel, а не як текст— і стиль джерела (шрифт/розмір, колір тексту, заливка клітинки, межі, висота рядків, ширина колонок, вирівнювання, об’єднані клітинки) зберігається. Зображення всередині клітинок таблиці вбудовуються як рисунки.
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 (псевдонім, SaveFormat.Excel, також приймається) дає той самий результат з параметрами за замовчуванням: doc.save("report.xlsx", SaveFormat.Xlsx). Перелік ExcelFormat у ExcelSaveOptions також приймає XmlSpreadSheet2003, CSV і ODS для сумісності Aspose.PDF API, але ця бібліотека завжди записує пакет .xlsx незалежно від встановленого значення. Ви також можете записати у потік за допомогою doc.save(OutputStream, ExcelSaveOptions).
XLSX у PDF, включаючи живі форми
Завантажте книгу .xlsx за допомогою конструктора Document, який приймає ExcelLoadOptions. Кожен лист перетворюється у таблицю PDF з тією ж підтримкою типізації клітинок та стилізації, що й під час експорту.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}Налаштування ExcelLoadOptions.setInteractiveForms(true) перетворює числові та міткові комірки у “живу” форму PDF замість статичного тексту: числові комірки стають редагованими полями вводу, комірки формули – полями лише для читання, які переобчислюються за їхніми вхідними даними, а міткові чи константні комірки залишаються статичним текстом, якщо їх не посилається інша формула. ExcelFormulaTranslator перетворює кожну формулу у Acrobat JavaScript; формула, функцію якої система не підтримує, повертається до останнього обчисленого статичного значення, тож поле все одно показує правильне число. Саме переобчислення виконується лише у переглядачі з движком forms/JavaScript — Adobe Acrobat або Foxit; переглядач без цього двигуна показує лише вбудовані значення без живого переобчислення.
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 у Markdown
Document проєктує PDF у CommonMark / GitHub-стильний Markdown: заголовки, абзаци, списки, таблиці, виділення (жирний/курсив/закреслення), вбудований та блоковий код, посилання, зображення та виноски.
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 дає той самий результат з параметрами за замовчуванням: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions) повертає Markdown як String замість запису у файл (окремого “Markdown text” accessor’а не існує — цей метод слід викликати для отримання результату в пам’яті).
Markdown у PDF
Завантажте файл Markdown через конструктор Document, який приймає MarkdownLoadOptions. Ручний парсер підмножини CommonMark/GFM читає джерело: заголовки, абзаци, списки, таблиці, виділення, код, посилання, зображення, блокові цитати та виноски. Екзотичний HTML, вбудований у Markdown, не відтворюється повністю.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}Поради та найкращі практики
- Точність є структурною, а не піксельно-точною для будь-якого формату: перетворення зберігають вміст, структуру, зображення та геометрію сторінок, а не точний вигляд при рендерингу.
ExcelSaveOptions.ExcelFormatіMarkdownSaveOptionsструктурні прапорці лише змінюють output формат пакету або евристики — фактичні значення, якими ваш PDF був позначений, все ще визначають, що розпізнається як таблиця, заголовок або список.- Для живих форм XLSX розглядайте вбудовані значення клітинок як правильний запасний варіант: лише переглядач, який підтримує форми, переобчислює формули під час відкриття.
Поширені проблеми
| Проблема | Причина | Виправлення |
|---|---|---|
Вивід XLSX завжди має розширення .xlsx, навіть після встановлення ExcelFormat.CSV або ODS | FOSS-пишучий завжди серіалізує пакет OOXML .xlsx; інші значення ExcelFormat існують лише для сумісності Aspose.PDF API | Розглядайте вивід як .xlsx незалежно від значення ExcelFormat, яке ви встановлюєте |
| Перераховуюча форма XLSX показує статичні числа замість живих формул | PDF-переглядач не має движка forms/JavaScript engine | Відкрийте файл у Adobe Acrobat або Foxit, щоб побачити живе перерахування |
| Комірка з формулою показує застаріле значення | ExcelFormulaTranslator не підтримує функцію цієї формули | Це документований резервний варіант: поле зберігає своє останнє обчислене статичне значення |
FAQ
Чи можу я отримати Markdown у вигляді String замість файлу?
Так — викличте Document.markdownText(MarkdownSaveOptions); вона повертає текст Markdown безпосередньо, а не записує його у файл.
Чи підтримує імпортер XLSX справжні формули Excel?
Лише коли встановлено ExcelLoadOptions.setInteractiveForms(true), і лише підмножина функцій ExcelFormulaTranslator може бути перекладена в Acrobat JavaScript. Усі інші випадки повертаються до останнього обчисленого статичного значення формули у вихідній робочій книзі.
API Reference Огляд
| Клас/Метод | Опис |
|---|---|
ExcelSaveOptions | Налаштовує експорт PDF у XLSX |
ExcelLoadOptions | Налаштовує імпорт XLSX у PDF, включаючи живі форми |
ExcelFormat | Цільовий варіант електронної таблиці, прийнятий ExcelSaveOptions |
ExcelFormulaTranslator | Перетворює формули Excel у JavaScript Acrobat для живих форм |
MarkdownSaveOptions | Налаштовує експорт PDF у Markdown |
MarkdownLoadOptions | Налаштовує імпорт Markdown у PDF |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Повертає Markdown як String |