Conversion
Conversion
Trang này đề cập đến việc render một PDF sang các định dạng khác và chuyển đổi tài liệu hướng tới tuân thủ PDF/A. Document cung cấp một phương thức To*() cho mỗi định dạng đầu ra cho toàn bộ tài liệu; các phương thức tương tự tồn tại trên Page để render một trang duy nhất.
Render sang Các Định Dạng Tài Liệu Khác
Document.ToHtml(), Document.ToDocx(), và Document.ToMarkdown() render mọi trang; Page.ToSvg() và Page.ToImage() render một trang thành chuỗi SVG độc lập hoặc byte PNG. Mỗi phương thức chấp nhận các tùy chọn riêng — mode trên DocxOptions (‘flow’ tái bố cục nội dung, ’textbox’ giữ nguyên hình học của từng trang) và images trên MarkdownExportOptions (‘inline’ nhúng URI dữ liệu hình ảnh, ’external’ ghi các tệp riêng vào imageDir).
const doc = Document.OpenFile('in.pdf');
const svg = doc.Pages[0].ToSvg(); // standalone <svg> string
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI
const html = doc.ToHtml(); // standalone semantic HTML, all pages
const md = doc.ToMarkdown(); // GFM Markdown, all pages
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry
ImageOptions (cho Page.ToImage()) cũng chấp nhận format, quality, scale, một width / height rõ ràng, và background (‘white’ hoặc ’transparent’).
Chuyển Đổi Hướng Tới PDF/A
Document.ConvertToPdfA() cố gắng khắc phục một tài liệu hướng tới PDF/A level (‘b’ hoặc ‘u’) và kiểm tra lại, trả về một ConversionReport với applied (các hành động khắc phục đã thực hiện), unresolved (các vấn đề không thể sửa), và passed. Chạy nó trên một bản sao — ví dụ một bản được tạo bằng Document.ExtractPages() — để tài liệu đang hoạt động không bao giờ bị thay đổi bởi quá trình chuyển đổi.
// ExtractPages gives an independent copy; ConvertToPdfA never touches the original.
const copy = doc.ExtractPages(doc.Pages.map((_, i) => i + 1));
const conversion = copy.ConvertToPdfA('2b');
console.log(`applied ${conversion.applied.length} action(s), `
+ `${conversion.unresolved.length} unresolved, `
+ `result: ${conversion.passed ? 'passes' : 'still fails'} PDF/A-2b`);
copy.WriteTo('output-pdfa.pdf');Các Định Dạng Xuất Khác
Ngoài HTML, Markdown, DOCX, SVG và PNG, thư viện cũng xuất TIFF (TiffExportOptions, encodeTiff()) và nhập/xuất giá trị trường AcroForm trong FDF và XFDF (exportFdfFile(), exportXfdfFile(), importFdfFile(), importXfdfFile()) — hữu ích cho việc trao đổi dữ liệu biểu mẫu đã điền riêng biệt khỏi PDF gốc.
Mẹo và Thực Hành Tốt Nhất
- Chạy
Document.ConvertToPdfA()trên một bản sao (ví dụ từDocument.ExtractPages()), không bao giờ trên tài liệu gốc mà bạn vẫn cần lưu nguyên trạng chưa chuyển đổi. - Kiểm tra
ConversionReport.unresolvedngay cả khipassedlàtrueđể có mức độ xác thực lỏng hơn — một số hành động khắc phục chỉ được giải quyết hoàn toàn ở mức độ chặt chẽ hơn. - Sử dụng
mode: 'textbox'trênDocxOptionskhi đầu ra DOCX cần giữ nguyên hình học trực quan chính xác của mỗi trang; sử dụng chế độ'flow'mặc định khi nó nên được tái bố trí giống như tài liệu xử lý văn bản thông thường. - Chuyển
images: 'external'và mộtimageDirtrênMarkdownExportOptionscho các tài liệu lớn, thay vì sử dụng các URI dữ liệu nội tuyến mặc định, để giữ cho tệp Markdown vẫn nhỏ.
Các Vấn Đề Thường Gặp
| Vấn đề | Nguyên nhân | Cách khắc phục |
|---|---|---|
ConvertToPdfA() vẫn báo cáo passed: false | Không phải mọi vấn đề trong danh sách ConversionReport.unresolved đều có thể được khắc phục tự động (ví dụ: thiếu phông chữ nhúng hoặc thiếu /OutputIntent) | Xử lý thủ công các quy tắc unresolved cụ thể, sau đó chạy lại ConvertToPdfA() |
| Tài liệu trực tiếp đã bị thay đổi một cách bất ngờ sau một cố gắng chuyển đổi PDF/A | ConvertToPdfA() đã được gọi trực tiếp trên tài liệu làm việc thay vì bản sao | Gọi nó trên bản sao được tạo bằng Document.ExtractPages() |
| Xuất Markdown tạo ra một tệp duy nhất rất lớn | Cấu hình mặc định images: 'inline' nhúng mọi hình ảnh dưới dạng data URI | Cung cấp { images: 'external', imageDir: '...' } để ghi các hình ảnh thành các tệp riêng biệt |
| Đầu ra DOCX mất bố cục trang gốc | Cấu hình mặc định mode: 'flow' tái bố cục nội dung như một trình soạn thảo văn bản | Cung cấp { mode: 'textbox' } để giữ nguyên hình học riêng của mỗi trang |
FAQ
PDF có thể chuyển đổi sang những định dạng nào?
HTML, Markdown, và DOCX cho toàn bộ tài liệu (Document.ToHtml() / ToMarkdown() / ToDocx()); SVG và PNG cho mỗi trang (Page.ToSvg() / Page.ToImage()); cộng thêm xuất khẩu dữ liệu dạng form TIFF và FDF/XFDF.
Việc chuyển đổi sang PDF/A có làm thay đổi tài liệu gốc của tôi không?
Chỉ nếu bạn gọi ConvertToPdfA() trực tiếp trên nó. Hãy gọi nó trên một bản sao — ví dụ doc.ExtractPages(doc.Pages.map((_, i) => i + 1)) — để giữ tài liệu gốc không bị chuyển đổi.
Làm sao tôi biết việc chuyển đổi PDF/A thực sự thành công?
Kiểm tra ConversionReport.passed. applied liệt kê những gì chuyển đổi đã sửa, và unresolved liệt kê những gì không thể — kiểm tra unresolved ngay cả khi passed là true.
Tôi có thể xuất chỉ các giá trị trường biểu mẫu đã điền mà không kèm PDF không?
Có — exportFdfFile() và exportXfdfFile() ghi các giá trị trường AcroForm hiện tại vào một tệp FDF hoặc XFDF riêng; importFdfFile() / importXfdfFile() đọc chúng trở lại vào tài liệu.
API Reference Tóm tắt
| Lớp/Phương thức | Mô tả |
|---|---|
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown() | Kết xuất mỗi trang sang định dạng tài liệu khác |
Page.ToSvg() / Page.ToImage() | Kết xuất một trang duy nhất sang SVG hoặc PNG |
DocxOptions / MarkdownExportOptions / ImageOptions | Các tùy chọn kết xuất cho mỗi định dạng |
Document.ConvertToPdfA() | Khắc phục tài liệu đến mức PDF/A và xác thực lại |
ConversionReport | Kết quả chuyển đổi: applied, unresolved, passed |
TiffExportOptions / encodeTiff() | Xuất ra TIFF |
exportFdfFile() / exportXfdfFile() / importFdfFile() / importXfdfFile() | Xuất hoặc nhập các giá trị trường AcroForm dưới dạng FDF/XFDF |