Chuyển đổi PDF sang Excel và Markdown
Chuyển đổi PDF sang Excel và Markdown
Hướng dẫn này cho thấy cách chuyển đổi một tệp PDF sang sổ làm việc Excel (.xlsx) hoặc sang Markdown, và cách tải lại PDF từ bất kỳ định dạng nào. Document thực hiện việc chuyển đổi theo cả hai hướng; ExcelSaveOptions và MarkdownSaveOptions điều chỉnh việc xuất, và ExcelLoadOptions và MarkdownLoadOptions điều chỉnh việc nhập. Từ phiên bản 26.9.0.
PDF sang XLSX
Các bảng được phát hiện trong PDF sẽ trở thành lưới bảng tính với các ô đã được định kiểu — số, ngày, boolean, tiền tệ và phần trăm được ghi dưới dạng giá trị Excel thực thay vì văn bản — và kiểu dáng gốc (phông chữ/kích thước, màu văn bản, nền ô, viền, chiều cao hàng, chiều rộng cột, căn chỉnh, ô hợp nhất) được chuyển sang. Hình ảnh bên trong các ô bảng được nhúng dưới dạng bản vẽ.
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 (một bí danh, SaveFormat.Excel, cũng được chấp nhận) cho ra kết quả tương tự với các tùy chọn mặc định: doc.save("report.xlsx", SaveFormat.Xlsx). Enum ExcelFormat riêng của ExcelSaveOptions cũng chấp nhận XmlSpreadSheet2003, CSV và ODS để tương thích Aspose.PDF API, nhưng thư viện này luôn ghi một gói .xlsx bất kể giá trị nào được đặt. Bạn cũng có thể ghi vào một luồng bằng doc.save(OutputStream, ExcelSaveOptions).
XLSX sang PDF, bao gồm các biểu mẫu động
Tải một sổ làm việc .xlsx thông qua một hàm khởi tạo Document nhận ExcelLoadOptions. Mỗi sheet sẽ trở thành một bảng PDF với cùng kiểu dữ liệu ô và hỗ trợ kiểu dáng như hướng xuất.
import org.aspose.pdf.Document;
import org.aspose.pdf.ExcelLoadOptions;
try (Document doc = new Document("book.xlsx", new ExcelLoadOptions())) {
doc.save("book.pdf");
}Cài đặt ExcelLoadOptions.setInteractiveForms(true) biến các ô số và nhãn thành mẫu PDF “sống” thay vì văn bản tĩnh: các ô số trở thành trường văn bản có thể chỉnh sửa, các ô công thức trở thành trường chỉ đọc mà tính lại từ các đầu vào của chúng, và các ô nhãn hoặc hằng số vẫn là văn bản tĩnh trừ khi một công thức khác tham chiếu đến chúng. ExcelFormulaTranslator chuyển mỗi công thức thành Acrobat JavaScript; một công thức mà hàm của nó không được hỗ trợ sẽ quay lại giá trị tĩnh đã tính lần cuối, vì vậy trường vẫn hiển thị số đúng. Việc tính lại chỉ chạy trong trình xem có engine forms/JavaScript — Adobe Acrobat hoặc Foxit; trình xem không có engine đó chỉ hiển thị các giá trị đã được nhúng, không có tính toán lại trực tiếp.
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 sang Markdown
Document chuyển PDF sang định dạng CommonMark/GitHub-Flavored Markdown: tiêu đề, đoạn văn, danh sách, bảng, nhấn mạnh (in đậm/italic/gạch ngang), mã nội tuyến và mã khối, liên kết, hình ảnh và chú thích.
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 cho cùng một kết quả với các tùy chọn mặc định: doc.save("article.md", SaveFormat.Markdown). Document.markdownText(MarkdownSaveOptions) trả về Markdown dưới dạng String thay vì ghi vào tệp (không có bộ truy cập “văn bản Markdown” riêng — phương pháp này là cách gọi để nhận kết quả trong bộ nhớ).
Markdown sang PDF
Tải một tệp Markdown thông qua hàm khởi tạo Document nhận MarkdownLoadOptions. Một bộ phân tích phụ đề CommonMark/GFM được viết thủ công đọc nguồn: tiêu đề, đoạn văn, danh sách, bảng, nhấn mạnh, mã, liên kết, hình ảnh, trích dẫn khối và chú thích. HTML kỳ lạ được nhúng trong Markdown không được tái tạo đầy đủ.
import org.aspose.pdf.Document;
import org.aspose.pdf.MarkdownLoadOptions;
try (Document doc = new Document("README.md", new MarkdownLoadOptions())) {
doc.save("README.pdf");
}Mẹo và Thực hành tốt nhất
- Độ trung thực là về cấu trúc, không phải chính xác từng pixel cho bất kỳ định dạng nào: quá trình chuyển đổi bảo tồn nội dung, cấu trúc, hình ảnh và hình học trang, không phải diện mạo hiển thị chính xác.
ExcelSaveOptions.ExcelFormatvàMarkdownSaveOptionscác cờ cấu trúc chỉ thay đổi output định dạng gói hoặc các thuật toán heuristic — các giá trị thực tế mà PDF của bạn được gắn thẻ vẫn quyết định những gì được phát hiện là bảng, tiêu đề hoặc danh sách.- Đối với các biểu mẫu XLSX trực tiếp, coi các giá trị ô đã được nhúng sẵn là phương án dự phòng đúng: chỉ một trình xem hỗ trợ biểu mẫu mới tính lại công thức khi mở.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
Đầu ra XLSX luôn có phần mở rộng .xlsx ngay cả sau khi đặt ExcelFormat.CSV hoặc ODS | Trình ghi FOSS luôn tuần tự hoá một gói OOXML .xlsx; các giá trị ExcelFormat khác chỉ tồn tại để tương thích Aspose.PDF API | Xử lý đầu ra như .xlsx bất kể giá trị ExcelFormat bạn đặt |
| Một biểu mẫu XLSX tính lại hiển thị các số tĩnh thay vì công thức trực tiếp | Trình xem PDF không có công cụ forms/JavaScript | Mở tệp trong Adobe Acrobat hoặc Foxit để xem việc tính lại trực tiếp |
| Một ô công thức hiển thị giá trị trông lỗi thời | ExcelFormulaTranslator không hỗ trợ hàm của công thức đó | Đây là cách dự phòng đã được tài liệu ghi lại: trường sẽ giữ giá trị tĩnh đã tính toán cuối cùng |
FAQ
Tôi có thể nhận Markdown dưới dạng String thay vì một tệp không?
Có — gọi Document.markdownText(MarkdownSaveOptions); nó trả về văn bản Markdown trực tiếp thay vì ghi vào tệp.
Trình nhập XLSX có hỗ trợ công thức Excel thực không?
Chỉ khi ExcelLoadOptions.setInteractiveForms(true) được thiết lập, và chỉ một phần nhỏ các hàm ExcelFormulaTranslator có thể chuyển đổi sang Acrobat JavaScript. Các phần còn lại sẽ quay lại giá trị tĩnh cuối cùng đã tính của công thức trong sổ làm việc nguồn.
API Reference Tóm tắt
| Lớp/Phương thức | Mô tả |
|---|---|
ExcelSaveOptions | Tinh chỉnh việc xuất PDF sang XLSX |
ExcelLoadOptions | Tinh chỉnh việc nhập XLSX sang PDF, bao gồm các biểu mẫu trực tiếp |
ExcelFormat | Phiên bản bảng tính mục tiêu được ExcelSaveOptions chấp nhận |
ExcelFormulaTranslator | Chuyển đổi công thức Excel sang Acrobat JavaScript cho các biểu mẫu trực tiếp |
MarkdownSaveOptions | Tinh chỉnh việc xuất PDF sang Markdown |
MarkdownLoadOptions | Tinh chỉnh việc nhập Markdown sang PDF |
Document.save(String, SaveFormat) / `Document.save(String, ExcelSaveOptions | MarkdownSaveOptions)` |
Document.markdownText(MarkdownSaveOptions) | Trả về Markdown dưới dạng String |