Bevezetés

Az bevezető bejegyzés röviden tárgyalja a megjegyzéseket: kiemelések, aláhúzások, ragadós cetlik és bélyegek, amelyeket a Page.AddHighlight(), a Page.AddUnderline() és hasonló módszerekkel adhatunk hozzá. Ez csak egy kis szelete annak, amit egy Page valójában támogat — a könyvtár annotációs galériája a jelöléseket, szabadkézi alakzatokat, valódi navigációval és űrlapbeküldéssel működő hivatkozásokat, valamint keresést fed le, mindezt közvetlenül a Page segítségével érhetjük el.

Ez a bejegyzés áttekinti a maradék felületet: az alakzat- és szabadkézi annotációs módszereket, hogy egy Link annotáció művelete valójában mit tud végrehajtani, valamint a két különböző módot a megjegyzés tartalmának keresésére attól függően, hogy a keresett szöveg az annotáció megjelenésében vagy a /Contents megjegyzésében található.

Minden annotációs módszer egy típusos kezelőt ad vissza, amely az épp létrehozott annotációra vonatkozik, és egy oldalon lévő minden annotáció később a page.Annotations segítségével olvasható.


Mi van benne

Jelölő annotációk

Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() és Page.AddStrikeOut() ugyanazt a típusú opciókat használják — egy sor négyes pontot, amely a szövegrégiót jelöli, valamint egy opcionális színt — és mind a négy egy MarkupAnnotation értéket ad vissza. A négyes pontok általában egy szövegkeresésből vagy egy ismert szövegtéglalapból származnak.

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] }));

Jegyzetek és önálló szöveg

Page.AddTextNote() egy klasszikus ragasztójegyzet ikont ad hozzá, amely kattintásra megnyit egy megjegyzés felugró ablakot, és egy TextAnnotation-t ad vissza. Page.AddFreeText() ehelyett a szövegét közvetlenül az oldalon, egy szegélyezett dobozban rajzolja, saját betűmérettel, igazítással és kitöltőszínnel — hasznos felhívásokhoz, amelyeknek megnyitás nélkül is láthatónak kell lenniük.

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,
});

Alakzatok és szabadkézi tinta

Page.AddSquare() és Page.AddCircle() egy szegélyezett téglalapot vagy ellipszist rajzolnak, mindegyik opcionális belső kitöltéssel. Page.AddLine() egy egyenes vonalat rajzol két pont között, függetlenül választható nyílfej stílusokkal (startEnding/endEnding, például 'OpenArrow'/'ClosedArrow') minden végén. Page.AddPolygon() és Page.AddPolyline() zárt és nyitott többpontos alakzatokat rajzolnak egy sík koordináta-listából, és Page.AddInk() egy vagy több szabadkézi tollvonást rögzít paths pontlistaként.

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 });

Hivatkozások és azok műveletei

Page.AddLink() egy LinkAnnotation-t ad vissza, amelynek action határozza meg, mi történik kattintáskor: { type: 'uri', uri: '...' } egy külső URL-t nyit meg, { type: 'goto', page: N } egy oldalt ugrik a dokumentumon belül, és { type: 'submit', url: '...', format: 'html' } elküldi a jelenlegi űrlapmező értékeket egy végpontra. Egy tartományon kívüli goto oldalszám vagy egy hibásan felépített műveleti objektum a létrehozáskor elutasításra kerül, ahelyett, hogy csendben elfogadná.

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.

Annotációs tartalom keresése

Két különböző módszer keres az annotáció szövegében, és szándékosan elkülönülnek: Page.SearchAnnotations() keresi az annotáció saját megjelenésének szövegét rajzol — a látható címke egy FreeText vagy pecsét, például — míg Page.SearchAnnotationText() keresi az annotációban hordozott szöveget /Contents bejegyzésben, például egy ragadós jegyzet megjegyzés szövegében. Egy találat az egyikben nem jelenti azt, hogy a másikban is megtalálásra kerül.

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

A már nem szükséges megjegyzéseket közvetlenül a Page.RemoveAnnotation() segítségével lehet eltávolítani, a megjegyzés kezelőjét vagy annak alapszótárát átadva.


Gyors kezdés

Telepítsd a csomagot, majd adj egy kiemelést, egy hivatkozást és egy ragadós jegyet egy meglévő oldalhoz:

git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run build
import { 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');

Támogatott formátumok

FormátumKiterjesztésOlvasásÍrás
PDFpdf✓✓
Markdownmd✓✓
SVGsvg✓✓
TIFFtiff✓✓
DOCXdocx—✓
HTMLhtml—✓
PNGpng—✓
EPUBepub—✓

Nyílt forráskód és licencelés

Aspose.PDF FOSS a(z) TypeScript számára MIT licenc alatt kerül kiadásra, a forráskód GitHub-en közzétéve. Nincs értékelési vízjel, felhasználási korlát, vagy külön licencfájl kezelése, és a könyvtár kereskedelmi termékekben jogdíj nélkül használható.

A csomag jelenleg a 0.1.0 verzióban van, ami az aktív korai fejlesztési szakaszt tükrözi. A Node.js (>=22) az egyetlen futtatási követelmény, és a csomagnak nincsenek egyéb harmadik féltől származó függőségei.


Kezdő lépések

Kapcsolódó erőforrások