Giới thiệu
Aspose.PDF FOSS cho TypeScript là một thư viện mã nguồn mở mới để làm việc với tài liệu PDF từ mã Node.js. Nó được phát hành dưới giấy phép MIT và được đóng gói dưới dạng gói @asposefoss/pdf, chỉ yêu cầu Node.js (>=22) ở thời gian chạy — không có bất kỳ phụ thuộc thời gian chạy nào khác.
Thư viện được tổ chức quanh các lớp Document và Page. Document.OpenFile() và Document.Open() tải một PDF từ đĩa hoặc từ byte trong bộ nhớ, và Document.New() bắt đầu một tài liệu trống; mỗi trang trong doc.Pages cung cấp các phương thức để thêm văn bản, hình ảnh, chú thích và các trường AcroForm, cũng như chuyển đổi chính nó sang các định dạng khác. Từ đó, API bao gồm việc tách, hợp nhất và sắp xếp lại các trang, chuyển đổi tài liệu sang HTML, Markdown, DOCX, SVG và hình ảnh raster, thêm và làm phẳng các chú thích, xây dựng biểu mẫu tương tác, và mã hoá, ký hoặc xóa nội dung nhạy cảm của kết quả.
Bản phát hành này dành cho các nhà phát triển cần xử lý PDF trong môi trường Node.js hoặc TypeScript mà không có giấy phép thương mại: các pipeline lắp ráp tài liệu, công cụ xuất bản chuyển PDF sang các định dạng sẵn sàng cho web, tự động điền biểu mẫu, và các dịch vụ cần xóa hoặc mã hoá các PDF nhạy cảm trước khi phân phối. Dự án hiện đang ở phiên bản 0.1.0 và đang trong giai đoạn phát triển sớm, vì vậy các API và phạm vi tính năng có thể thay đổi trước khi có bản phát hành ổn định.
Những gì được bao gồm
Quản lý Tài liệu và Trang
Document.OpenFile() / Document.Open() tải một PDF từ đĩa hoặc Uint8Array trong bộ nhớ; Document.New() bắt đầu một tài liệu trống. Các trang có thể được tách thành các tài liệu riêng biệt bằng Document.Split(), trích xuất bằng Document.ExtractPages(), hợp nhất bằng Document.Merge(), hoặc thêm vào một tài liệu hiện có bằng Document.Append(). Document.WriteTo() ghi lại kết quả, tùy chọn với việc nén.
import { Document } from '@asposefoss/pdf';
// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');
// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2); // 1-based page number
doc.Reorder([3, 1, 2]);
// Save
doc.WriteTo('output.pdf'); // or: const bytes = doc.Save();
Chuyển đổi định dạng
Toàn bộ tài liệu được render thành HTML với Document.ToHtml() và thành Markdown kiểu GitHub với Document.ToMarkdown(). Các trang riêng lẻ được render thành SVG độc lập với Page.ToSvg() hoặc thành byte PNG raster với Page.ToImage(). Document.ToDocx() / Page.ToDocx() tạo ra đầu ra .docx dạng luồng lại hoặc bố cục cố định.
import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
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
Chú thích
Mỗi Page cung cấp các phương thức chú thích trực tiếp: Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly(), và Page.AddStrikeOut() thêm đánh dấu văn bản; Page.AddTextNote(), Page.AddFreeText(), và Page.AddStamp() thêm ghi chú dính, văn bản độc lập và chú thích tem cao su. Các kiểu con được định kiểu như MarkupAnnotation và StampAnnotation cung cấp một phương thức Flatten() để nhúng chú thích vào nội dung trang.
AcroForms
Lớp Form xây dựng các trường tương tác trực tiếp: AddTextField(), AddCheckbox(), AddRadioGroup(), AddComboBox(), AddListBox(), và AddPushButton() mỗi đều trả về một lớp con Field đã được định kiểu. Gọi SetStyle() hoặc GenerateAppearance() trên một trường sẽ làm mới diện mạo đã render của nó, và Document.FlattenForm() nhúng giá trị hiện tại của mọi trường vào nội dung trang tĩnh.
function addFormFields(doc: Document, page: Page): void {
const form = doc.Form;
const pageNum = page.Number;
// Text field
form.AddTextField({
page: pageNum, rect: [200, 670, 450, 690], name: 'FullName', value: 'Alice Sample',
});
// Checkbox
form.AddCheckbox({
page: pageNum, rect: [200, 630, 218, 648], name: 'Subscribe',
checked: true,
});
}
Bảo mật và Xóa thông tin
Document.WriteTo() chấp nhận một tùy chọn encrypt hỗ trợ AES-128, AES-256, hoặc RC4, với mật khẩu người dùng và chủ sở hữu riêng biệt và Permissions chi tiết. Các vùng nhạy cảm hoặc văn bản khớp có thể bị xóa vĩnh viễn bằng Document.Redact(), Document.RedactText(), và Page.ApplyRedactions(), được cấu hình thông qua RedactOptions.
import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
doc.WriteTo('locked.pdf', {
encrypt: {
userPassword: 'open-me', // required to open (default '')
ownerPassword: 'full-rights', // default: same as userPassword
algorithm: 'aes256', // 'aes256' (default) | 'aes128' | 'rc4'
permissions: { copying: false, modifying: false },
encryptMetadata: true,
},
});
Bắt đầu nhanh
Cài đặt gói, sau đó mở một tệp PDF hiện có, chỉnh sửa các trang và siêu dữ liệu của nó, và lưu kết quả:
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildimport { Document } from '@asposefoss/pdf';
// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');
// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2); // 1-based page number
doc.Reorder([3, 1, 2]);
// Metadata
doc.SetMetadata({ title: 'Report', author: 'Jane', custom: { Dept: 'R&D' } });
// Save
doc.WriteTo('output.pdf'); // or: const bytes = doc.Save();
doc.WriteTo('small.pdf', { compressed: true }); // xref stream + object streams
Định dạng được hỗ trợ
| Định dạng | Phần mở rộng | Đọc | Ghi |
|---|---|---|---|
| ✓ | ✓ | ||
| Markdown | md | ✓ | ✓ |
| SVG | svg | ✓ | ✓ |
| TIFF | tiff | ✓ | ✓ |
| DOCX | docx | — | ✓ |
| HTML | html | — | ✓ |
| PNG | png | — | ✓ |
| EPUB | epub | — | ✓ |
Mã nguồn mở & Giấy phép
Aspose.PDF FOSS cho TypeScript được phát hành dưới giấy phép MIT, với mã nguồn được công bố trên GitHub. Không có watermark đánh giá, giới hạn sử dụng, hay tệp giấy phép riêng để quản lý, và thư viện có thể được sử dụng trong các sản phẩm thương mại mà không phải trả phí bản quyền.
Gói hiện đang ở phiên bản 0.1.0, phản ánh quá trình phát triển giai đoạn đầu đang hoạt động. Node.js (>=22) là yêu cầu runtime duy nhất, và gói không có bất kỳ phụ thuộc bên thứ ba nào khác.