Hogyan dolgozzunk képekkel és grafikákkal TypeScript-ben
Ez az útmutató bemutatja, hogyan helyezhetők képek és vektorgrafikák egy PDF oldalra a Aspose.PDF FOSS segítségével a TypeScript számára. A Page.AddImage() beágyaz raszteres bájtokat, a Page.Graphics() egy PageGraphics-t ad vissza alakzatrajzoláshoz, és a Document.OptionalContent ezeket egy kapcsoltható rétegekbe csoportosítja. Node.js 22 vagy újabb szükséges.
Lépésről lépésre útmutató
1. lépés: A csomag telepítése
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildEllenőrizze a telepítést a Document osztály importálásával egy új TypeScript fájlban — ennek a sornak hibamentesen kell feloldódnia, miután a csomag telepítve van:
import { Document } from '@asposefoss/pdf';2. lépés: Szükséges osztályok importálása
Importálja a Document elemet a fájl megnyitásához; a AddImage(), Graphics() és AddBarcode() közvetlenül a visszaadott Page példányokon hívódnak:
import { Document } from '@asposefoss/pdf';3. lépés: Rasterkép beágyazása
Page.AddImage(data, rect, opts) JPEG vagy PNG bájtokat helyez egy körülhatároló rect belsejébe, a méretezéshez igazítva:
const doc = Document.OpenFile('input.pdf');
const page = doc.Pages[0];
const imgW = 300;
const imgH = 237; // aspect preserved from a 1280x1014 source
page.AddImage(imageBytes, [150, 400, 150 + imgW, 400 + imgH]);4. lépés: Vektorgrafika rajzolása
Page.Graphics() egy PageGraphics objektumot ad vissza, amely a rajzolási hívásokat puffereli, amíg a apply() el nem küldi őket. Láncolja a setStrokeColor(), setFillColor(), setLineWidth() és alakzatmetódusokat, például a rect(), circle() és drawLine(), majd a stroke() / fill() / fillStroke() műveleteket:
const g = page.Graphics();
g.save()
.setStrokeColor([0.55, 0.60, 0.75])
.setLineWidth(1)
.rect(80, 300, 435, 340)
.stroke()
.restore();
g.setFillColor([0.88, 0.91, 0.98])
.setStrokeColor([0.45, 0.52, 0.75])
.setLineWidth(1)
.circle(120, 340, 13)
.fillStroke();
g.apply();5. lépés: Képek és grafika kötése opcionális tartalmi rétegekhez
doc.OptionalContent.AddLayer(name, opts) egy Layer elemet hoz létre, amely a néző rétegpanelekben be- és kikapcsolható. Adja át layer paraméterként a AddImage() számára, vagy csomagolja a PageGraphics hívásokat a BeginLayer() / EndLayer() segítségével:
const oc = doc.OptionalContent;
const grid = oc.AddLayer('Grid', { visible: false }); // default off
const branding = oc.AddLayer('Branding');
const g2 = page.Graphics();
g2.BeginLayer(grid);
g2.save().setStrokeColor([0.72, 0.76, 0.88]).setLineWidth(0.4).setDash([3, 3]);
g2.drawLine(80, 300, 515, 300);
g2.stroke().restore();
g2.EndLayer();
g2.apply();
page.AddImage(logoBytes, [370, 606, 480, 640], { layer: branding });6. lépés: Vonalkód hozzáadása
Page.AddBarcode(spec, rect, opts) egy vonalkód szimbólumot rajzol; spec.type kiválasztja a szimbológiát, és spec.data a kódolt payload. A AddImage()-hoz hasonlóan egy layer opciót fogad el:
page.AddBarcode({ type: 'code128', data: 'ROOM-204' }, [370, 340, 500, 384], {
layer: branding,
text: true, // draw the human-readable payload beneath the symbol
});Általános problémák és megoldások
A következővel rajzolt grafikák PageGraphics nem jelennek meg az oldalon. Puffert hív, amíg apply() hívásra kerül — minden PageGraphics sorozatnak szüksége van egy megfelelő apply() mielőtt az oldal mentésre kerül.
Egy réteg soha nem jelenik meg a megjelenítő rétegek paneljén. Confirm AddLayer() hívásra került a(z) doc.OptionalContent, nem önálló objektumként hozva létre — a rétegeket a dokumentum opcionális tartalom konfigurációjában kell regisztrálni, hogy megjelenjenek a listában.
A kép vagy vonalkód figyelmen kívül hagyja egy réteg láthatóságának kapcsolóját. Only AddImage(), AddBarcode(), és a tartalom, amely be van csomagolva PageGraphics.BeginLayer() / EndLayer() kapcsolódik egy réteghez a /OC — az oldal egyéb alap tartalma (például réteg opció nélkül megrajzolt egyszerű szöveg) nem érintett semmilyen rétegkapcsoló által.
Page.AddImage() torzítja a képet. rect közvetlenül beállítja a helyezett szélességet és magasságot — ha a képet nem szabad nyújtani, először számold ki a forráskép saját képarányából.
Gyakran Ismételt Kérdések
Lehet egy réteg alapértelmezetten rejtett?
Igen — adja át { visible: false } a OptionalContent.AddLayer()nek.
Lehet egy réteg egy másik alá ágyazva?
Igen — adja át { parent: someLayer } a AddLayer() hívásakor, hogy az új réteg egy meglévő alatt legyen a rétegek paneljének /D /Order részében.
Milyen képformátumokat fogad el a Page.AddImage()?
JPEG és PNG raszter bájtok.
Támogatja-e a PageGraphics használatával a rajzolás átlátszóságát és a szaggatott vonalakat?
Igen — a setOpacity(alpha) beállítja a kitöltés/vonal alfa értékét, a setDash(pattern, phase) egy szaggatott mintát állít be; mindkettő láncolható, akárcsak a többi PageGraphics beállító.