Annotations
Chú thích
Trang này đề cập đến việc tạo, đọc, tìm kiếm và làm phẳng các chú thích PDF. Page cung cấp một phương pháp Add*() cho mỗi kiểu phụ chú thích, mỗi phương pháp trả về một handle Annotation sống; lớp cơ sở Annotation và các kiểu phụ của nó (TextAnnotation, StampAnnotation, MarkupAnnotation, và các loại khác) cung cấp các thuộc tính của chú thích để đọc và chỉnh sửa.
Tạo các chú thích Đánh dấu, Ghi chú và Liên kết
Bốn phương pháp đánh dấu văn bản — Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly(), và Page.AddStrikeOut() — nhận một mảng quads (/QuadPoints) và trả về một MarkupAnnotation. Page.AddLink() tạo một vùng có thể nhấp được với một URI hoặc hành động nội bộ, và Page.AddTextNote() thêm một biểu tượng ghi chú dán mà mở một cửa sổ pop-up với văn bản contents, trả về một TextAnnotation.
page.AddHighlight({ quads, color: [1, 1, 0], contents: 'Yellow highlight' });
page.AddUnderline({ quads, color: [0, 0, 1] });
page.AddStrikeOut({ quads, color: [1, 0, 0] });
page.AddLink({
rect: [100, 700, 220, 716],
action: { type: 'uri', uri: 'https://example.com' },
border: 0,
});
page.AddTextNote({
rect: [x, y, x + 20, y + 20], icon: 'Note', author: 'Reviewer',
contents: 'This is a sticky-note annotation.',
});Page cũng cung cấp các phương pháp hình dạng và vẽ tự do — AddSquare(), AddCircle(), AddLine(), AddPolygon(), AddPolyline(), AddInk(), AddFreeText(), AddCaret(), và AddStamp() — mỗi phương pháp trả về handle chú thích tương ứng cho kiểu phụ đó, tự động tạo ra giao diện /AP của nó.
Đọc và Liệt kê các chú thích
page.Annotations là một mảng chứa mọi Annotation trên trang. Mỗi chú thích, bất kể kiểu phụ, đều cung cấp Subtype, Rect, Color, Contents, Name, Layer, ModDate, Flags, Print, Hidden, và Opacity; các kiểu phụ thêm các trường riêng của chúng, chẳng hạn như StampAnnotation.StampName hoặc MarkupAnnotation.QuadPoints.
const freeText = page.Annotations.find((a) => a.Subtype === 'FreeText');
if (freeText) {
freeText.Contents = 'Updated note text';
}Tìm kiếm Văn bản Ghi chú
Page.SearchAnnotationText() and Page.SearchAnnotations() được cố ý tách rời. SearchAnnotationText() tìm các khớp trong văn bản và chú thích carries thay vì vẽ — của một ghi chú’s /Contents, tác giả của nó (/T), hoặc chủ đề của nó (/Subj) — và trả về AnnotationTextMatch[] ({ annot, key, value, text }). SearchAnnotations() tìm các khớp trong văn bản và chú thích draws, chẳng hạn như một FreeTextcác từ hiển thị của ’s, và trả về AnnotationMatch[] ({ annot, text, quads }).
// A sticky note's /Contents text — found by SearchAnnotationText, not SearchAnnotations.
const textHits = page.SearchAnnotationText('body secret');
console.log(textHits[0].key, textHits[0].value); // 'Contents' 'body secret'
// A FreeText's rendered words — found by SearchAnnotations, not SearchAnnotationText.
const drawnHits = page.SearchAnnotations('bravo');Làm phẳng Ghi chú
Annotation.Flatten() đưa vẻ ngoài /AP của một ghi chú trực tiếp vào luồng nội dung của trang tại /Rect, sau đó loại bỏ nó khỏi /Annots. Kết quả là nội dung cố định, tĩnh — không còn là một ghi chú riêng biệt mà người xem có thể nhấp, chỉnh sửa hoặc ẩn.
const note = page.AddTextNote({
rect: [72, 660, 92, 680], icon: 'Comment', contents: 'Reviewed and approved.',
});
note.Flatten();Mẹo và Thực hành Tốt nhất
- Gọi
Flatten()trên đối tượng được trả về trực tiếp bởi lời gọiAdd*()— một ghi chú thu được bằng cách đọc lạipage.Annotationssau đó là một tham chiếu đối tượng khác. SearchAnnotationText()vàSearchAnnotations()bao phủ các đoạn văn bản khác nhau: chạy cả hai nếu bạn cần tìm một cụm từ bất kể nó được gõ vào ghi chú hay được vẽ trên trang.- Bốn phương pháp đánh dấu (
AddHighlight,AddUnderline,AddSquiggly,AddStrikeOut) tự động tạo ra vẻ ngoài/AP— không cần vẽ thủ công trên luồng nội dung. - Mã hóa vẫn tồn tại qua một vòng: các chú thích được thêm trước
Document.Save()với tùy chọnencryptvẫn hợp lệ sau khi tài liệu được mở lại và giải mã.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
page.Annotations.find() trả về undefined cho một chú thích bạn vừa thêm | Tìm kiếm một mảng lỗi thời được ghi lại trước khi chú thích được thêm | Đọc lại page.Annotations sau cuộc gọi Add*(), hoặc sử dụng trực tiếp handle mà cuộc gọi trả về |
SearchAnnotationText() không tìm thấy gì cho văn bản hiển thị trên trang | Văn bản được vẽ bởi chú thích (ví dụ: phần thân của FreeText), không phải được chứa trong /Contents | Sử dụng SearchAnnotations() thay thế — nó khớp với văn bản đã vẽ |
Chú thích vẫn hiển thị có thể chỉnh sửa sau Flatten() | Flatten() đã được gọi trên một bản sao thay vì trên handle Add*() trả về | Gọi Flatten() trên đối tượng được trả về trực tiếp bởi phương thức tạo |
FAQ
Sự khác biệt giữa SearchAnnotationText và SearchAnnotations là gì?
SearchAnnotationText() khớp văn bản một chú thích carries — /Contents, /T (tác giả), hoặc /Subj — chẳng hạn như phần thân của ghi chú dán. SearchAnnotations() khớp văn bản với chú thích draws trên trang, chẳng hạn như một FreeTextcác từ hiển thị. Hai chúng không giao nhau: một kết quả khớp trong một sẽ không xuất hiện trong cái kia.
Làm thế nào để tôi làm cho một chú thích trở nên cố định và không tương tác?
Gọi Flatten() trên handle Annotation được trả về bởi phương thức Add*() đã tạo ra nó. Thao tác này nhúng giao diện của nó vào luồng nội dung của trang và loại bỏ nó khỏi /Annots.
Các kiểu phụ của chú thích nào được hỗ trợ?
Page cung cấp các phương thức tạo cho đánh dấu văn bản (AddHighlight, AddUnderline, AddSquiggly, AddStrikeOut), ghi chú và lời nhắc (AddTextNote, AddFreeText, AddCaret), liên kết (AddLink), hình dạng (AddSquare, AddCircle, AddLine, AddPolygon, AddPolyline), bút vẽ tự do (AddInk), tem (AddStamp), và tệp đính kèm (AddFileAttachment).
Làm sao để liệt kê tất cả các chú thích đã có trên một trang?
Đọc page.Annotations, một mảng các handle Annotation. Mỗi phần tử cung cấp Subtype, Rect, Color, Contents, và các thuộc tính chung khác, vì vậy bạn có thể lọc hoặc kiểm tra chúng bằng các phương thức mảng tiêu chuẩn.
API Reference Tóm tắt
| Lớp/Phương thức | Mô tả |
|---|---|
Annotation | Cơ sở xử lý bất kỳ chú thích nào; cung cấp Subtype, Rect, Color, Contents, Name, Flags, Print, Hidden, Opacity |
Annotation.Flatten() | Nhúng giao diện của chú thích vào nội dung trang tĩnh |
TextAnnotation | Một công cụ ghi chú dính /Text; thêm Icon, Open, Author |
StampAnnotation | Một /Stamp công cụ con tem cao su; thêm StampName |
MarkupAnnotation | Một công cụ đánh dấu văn bản (Highlight/Underline/StrikeOut/Squiggly); thêm MarkupType, QuadPoints |
Page.AddHighlight() / Page.AddUnderline() / Page.AddStrikeOut() / Page.AddSquiggly() | Tạo chú thích đánh dấu văn bản trên /QuadPoints |
Page.AddTextNote() | Tạo chú thích dạng ghi chú dán |
Page.AddLink() | Tạo một liên kết có thể nhấp được với URI hoặc hành động nội bộ |
Page.Annotations | Mỗi Annotation trên trang, dưới dạng mảng |
Page.SearchAnnotationText() | Tìm văn bản mà chú thích chứa (/Contents, /T, /Subj) |
Page.SearchAnnotations() | Tìm văn bản mà chú thích vẽ trên trang |