Giriş
introductory post açıklamaları kısaca kapsar: vurgulamalar, altı çizgiler, yapışkan notlar ve damgalar, Page.AddHighlight(), Page.AddUnderline() ve benzeri yöntemlerle eklenir. Bu, bir Page‘nin gerçekte desteklediği şeylerin küçük bir dilimidir — bu kütüphanedeki açıklama galerisi işaretleme, serbest şekiller, gerçek gezinme ve form gönderme eylemleri içeren bağlantılar ve aramayı kapsar; tümü Page‘den doğrudan erişilebilir.
Bu gönderi o yüzeyin geri kalanını ele alır: şekil ve serbest çizim açıklama yöntemleri, bir Link açıklamasının eyleminin gerçekte ne yapabileceği ve aradığınız metnin açıklamanın görünümünde mi yoksa /Contents yorumunda mı bulunduğuna bağlı olarak açıklama içeriğini aramanın iki farklı yolu.
Her açıklama yöntemi, yeni oluşturduğu açıklamaya özgü tiplenmiş bir tutamaç döndürür ve bir sayfadaki her açıklama daha sonra page.Annotations aracılığıyla okunabilir.
Neler Dahildir
İşaretleme Açıklamaları
Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() ve Page.AddStrikeOut() aynı seçenek biçimini alır — metin bölgesini işaretleyen bir dizi dört nokta ve isteğe bağlı bir renk — ve dörtü de bir MarkupAnnotation döndürür. Dört nokta genellikle bir metin aramasından veya bilinen bir metin dikdörtgeninden türetilir.
const markup = (body: [number, number, number, number], sample: string,
add: (quads: number[]) => void): void => {
const yMid = (body[1] + body[3]) / 2 - 6;
const textRect: [number, number, number, number] = [body[0] + 4, yMid, body[2] - 4, yMid + 16];
page.AddText(sample, textRect[0], textRect[1], { fontSize: 12 });
add(rectToQuads(textRect));
};
markup(cardBody, 'Highlight this phrase', (quads) =>
page.AddHighlight({ quads, color: [1, 1, 0], contents: 'Yellow highlight' }));
markup(cardBody, 'Underline this phrase', (quads) =>
page.AddUnderline({ quads, color: [0, 0, 1] }));
markup(cardBody, 'Squiggle this phrase', (quads) =>
page.AddSquiggly({ quads, color: [1, 0.5, 0] }));
markup(cardBody, 'Strike this phrase out', (quads) =>
page.AddStrikeOut({ quads, color: [1, 0, 0] }));
Notlar ve Bağımsız Metin
Page.AddTextNote() tıklandığında bir yorum açılır penceresi açan klasik bir yapışkan not simgesi ekler ve bir TextAnnotation döndürür. Page.AddFreeText() ise metnini doğrudan sayfada, kenarlıklı bir kutu içinde, kendi yazı tipi boyutu, hizalaması ve dolgu rengiyle çizer — hiçbir şeyi açmadan görünmesi gereken açıklamalar için kullanışlıdır.
page.AddTextNote({
rect: [x, y, x + 20, y + 20], icon: 'Note', author: 'Reviewer',
contents: 'This is a sticky-note annotation.',
});
page.AddFreeText({
rect: [220, 60, 520, 96],
contents: 'FreeText sample', fontSize: 10, align: 'center',
fill: [1, 1, 0.8], width: 1,
});
Şekiller ve Serbest Çizim Mürekkebi
Page.AddSquare() ve Page.AddCircle() kenarlıklı bir dikdörtgen veya elips çizer, her biri isteğe bağlı iç dolgu ile. Page.AddLine() iki nokta arasında düz bir çizgi çizer ve her iki uçta bağımsız olarak seçilebilen ok ucu stillerini (startEnding/endEnding, ör. 'OpenArrow'/'ClosedArrow') kullanır. Page.AddPolygon() ve Page.AddPolyline() düz bir koordinat listesinde bulunan çok noktalı kapalı ve açık şekilleri çizer, ve Page.AddInk() bir veya daha fazla serbest el kalemi darbesini paths nokta listeleri olarak kaydeder.
page.AddSquare({ rect: [50, 400, 130, 435], color: [0.8, 0, 0], fill: [1, 1, 0.5], width: 2 });
page.AddCircle({ rect: [150, 400, 230, 435], color: [0, 0.5, 0], width: 2 });
page.AddLine({
line: [260, 417, 420, 417],
color: [0, 0, 0.7], width: 2,
startEnding: 'OpenArrow', endEnding: 'ClosedArrow',
});
const stroke: number[] = [];
[-8, 6, -4, 10, -2, 8, -6].forEach((dy, i) => stroke.push(440 + i * 12, 417 + dy));
page.AddInk({ paths: [stroke], color: [0.6, 0, 0.6], width: 2 });
Bağlantılar ve Eylemleri
Page.AddLink() bir LinkAnnotation döndürür; bu LinkAnnotation‘in action‘si tıklandığında ne olacağını belirler: { type: 'uri', uri: '...' } harici bir URL açar, { type: 'goto', page: N } aynı belgedeki bir sayfaya atlar ve { type: 'submit', url: '...', format: 'html' } mevcut form alanı değerlerini bir uç noktaya gönderir. Aralık dışı bir goto sayfa numarası ya da hatalı biçimlendirilmiş bir eylem nesnesi, sessizce kabul edilmek yerine oluşturulma sırasında reddedilir.
const uriLink = page.AddLink({
rect: [10, 10, 100, 30], action: { type: 'uri', uri: 'https://example.com' },
});
const gotoLink = page.AddLink({
rect: [10, 40, 100, 60], action: { type: 'goto', page: 2 },
});
const submitLink = page.AddLink({
rect: [10, 70, 100, 90],
action: { type: 'submit', url: 'https://example.com/post', format: 'html' },
});
// page.AddLink({ rect: [...], action: { type: 'goto', page: 99 } }) throws RangeError
// when 99 is out of range for the document.
Ek Açıklama İçeriğini Arama
İki farklı yöntem açıklama metnini arar ve kasıtlı olarak birbirinden ayrıdır: Page.SearchAnnotations() bir açıklamanın kendi görünümündeki metni arar çizer — bir … üzerindeki görünür etiket FreeText veya damga, örneğin — iken Page.SearchAnnotationText() bir açıklamanın içinde taşınan metni arar /Contents giriş, örneğin bir yapışkan notun yorum gövdesi gibi. Birinde eşleşme olması, diğerinde de eşleşme olduğu anlamına gelmez.
page.SearchAnnotations('bravo'); // finds it if the annotation's drawn appearance contains it
page.SearchAnnotationText('bravo'); // finds it if the annotation's /Contents comment contains it
Artık ihtiyaç duyulmayan açıklamalar, Page.RemoveAnnotation() ile doğrudan kaldırılabilir; bu, açıklama tutamacını veya onun temel sözlüğünü geçerek yapılır.
Hızlı Başlangıç
Paketi kurun, ardından mevcut bir sayfaya vurgulama, bir bağlantı ve bir yapışkan not ekleyin:
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';
const doc = Document.OpenFile('input.pdf');
const page = doc.Pages[0];
page.AddHighlight({ quads: [72, 700, 300, 700, 72, 715, 300, 715], color: [1, 1, 0] });
page.AddLink({
rect: [72, 670, 200, 690], action: { type: 'uri', uri: 'https://example.com' },
});
page.AddTextNote({
rect: [320, 670, 340, 690], icon: 'Note', author: 'Reviewer',
contents: 'Please double-check this figure.',
});
doc.WriteTo('annotated.pdf');
Desteklenen Biçimler
| Biçim | Uzantı | Okuma | Yazma |
|---|---|---|---|
| ✓ | ✓ | ||
| Markdown | md | ✓ | ✓ |
| SVG | svg | ✓ | ✓ |
| TIFF | tiff | ✓ | ✓ |
| DOCX | docx | — | ✓ |
| HTML | html | — | ✓ |
| PNG | png | — | ✓ |
| EPUB | epub | — | ✓ |
Açık Kaynak & Lisanslama
Aspose.PDF FOSS for TypeScript, MIT lisansı altında yayımlanmıştır ve kaynak kodu GitHub üzerinde yayınlanmıştır. Değerlendirme filigranı, kullanım sınırı veya yönetilecek ayrı bir lisans dosyası yoktur; ayrıca kütüphane telif ücreti alınmadan ticari ürünlerde kullanılabilir.
Paket şu anda 0.1.0 sürümündedir ve aktif erken aşama geliştirmeyi yansıtmaktadır. Node.js (>=22) tek çalışma zamanı gereksinimidir ve paket başka üçüncü taraf bağımlılığa sahip değildir.