Как конвертировать PDF в редактируемую книгу Excel в Java
Это руководство показывает, как превратить PDF в книгу, которую действительно можно редактировать, а не просто в плоский экспорт. Вы конвертируете PDF в XLSX с помощью ExcelSaveOptions, настроите экспорт так, чтобы таблицы аккуратно помещались на разумное количество листов, и преобразуете отредактированную книгу обратно в PDF с помощью ExcelLoadOptions.
Конвертировать PDF в базовую книгу Excel
Document.save с SaveFormat.Xlsx выполняет простую конвертацию: текст и табличный контент каждой страницы размещаются на отдельном листе.
import org.aspose.pdf.Document;
import org.aspose.pdf.SaveFormat;
try (Document doc = new Document("report.pdf")) {
doc.save("report.xlsx", SaveFormat.Xlsx); // SaveFormat.Excel is an alias
}Настройте экспорт для более чистых таблиц
Экспорт один лист на страницу часто не соответствует желаниям пользователя таблиц. ExcelSaveOptions управляет объединением листов, расположением столбцов и эвристиками восстановления таблиц для PDF без разметки таблиц:
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);
}setMinimizeTheNumberOfWorksheets(true) — единственная опция, которая в наибольшей степени меняет форму вывода: без неё 20-страничный отчёт создаёт 20 листов.
Преобразовать книгу Excel обратно в PDF
После того как рецензент отредактирует книгу, верните её в формат PDF, загрузив её с помощью ExcelLoadOptions и сохранив полученный документ:
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}