Sunteți pe pagina 1din 24

Operatorul w:

Operatorul w definete limea de curs a viitoarelor ci masurat in puncte. Totui, reinei ca


fisierele PDF nu poate trage contur de o cale cum este n curs de construcie care solicita un operator
de desen.

Operatorul d:
Operatorul d defineste modelul de linii. Este nevoie de doi parametrii:o matrice si o
compensare. Matricea conine model de linii ca o serie de lungimi. De exempu cand urmarim fluxul ce
creaza linii cu 20 de puncte pe linie si cu 10 puncte spatiu intre.
10 w
[20 10] 0 d
306 396 m
306 594 l
S

Cteva exemple de linii sunt incluse n figura urmtoare.Ultima i arat cum s resetezi structura ntr-o
linie solid.

Operatorii J,j si M:
Cei trei operatori se raporteaza la stilul de la sfritul traictoriilor segmentelor. Operatorul J
defineste stilul principal, si j defineste un stil alturat. O parte din acetia primesc o reprezentaie
intreag a stilului folosit. Opiunile valabile sunt prezentate in urmtoarea figur.

Operatorul M seteaz limita de mbinare a unghiurilor ascuite, care se determin cnd colurile
ascuite devin teite.
Acest lucru mpiedica liniile cu grosime de a avea lungime si forme ascuite.
Lum n considerare urmatorul exemplu.

10 w
5 M
306 396 m
306 594 l
336 500 l
S

Comanda 5 M transform ceea ce ar fi un col ascuit ntr-un col conic

Operatorul cm:
Prefera mai mult operatorul Tm, cm seteaz transformarea matricei pentru toate desenele de pe
o singur pagin .
La fel ca matricea Tm el poate roti, mrimea ,i grafica asimetriilor
Este mult mai des folosit schimbarea originii paginilor

1 0 0 1 306 396 cm
10 w
5 M
0 0 m
0 198 l
30 104 l
S

Acest curent ncepe cu mutarea originii ctre centru pagini(In loc de colul din stnga jos)
Apoi deseneaz exact acceiai grafic ca la seciunea anterioar, dar folosesc coordonatele care sunt de
acceiai nou origine.

Operatorii q si Q:
Graficile complexe sunt deseori construite din grafice mai mici care au proria or stare
Este posibil sa separi elemente din fiecare prin plasarea unor operatori intr-un bloc q/Q
q
1 0 0 1 306 396 cm
10 w
0 0 m
0 198 l
30 104 l
S
Q
BT
/F0 36 Tf
(I'm in the corner!) Tj
ET

Totul ntre operatorii q i Q se intampla intr-un mediu izolat.


De indata ce Q este chemat, operatorul cm este uitat iar originea revine in colul din stnga jos.

Operatorii RG,rg,K,k:
Ct timp culorile nu sunt considerate din punct de vedere tehnic grafice ale structurilor
operatorilor, acestea determina culoarea oricarui viitor desen al operatorilor deci aceasta este elocatia
logica unde se introduc.
Formatul PDF poate reprezenta mai multe spaii de culoare ,cele mai comune sunt RGB i
CMYK.
n plus, linia de culoare i culoarea de umplere poate fi selectat n mod independent. Aceasta ne ofer
patru operatori pentru selectarea culori:

RG: Schimba spaiul de culoare contur la RGB i setai culoarea de contur.


rg: Schimba spaiul de culoare umplere la RGB i setai culoarea de umplere.
K: Schimba spaiul de culoare contur la CMYK i setai culoarea de contur.
k: Schimba spaiul de culoare umplere la CMYK i setai culoarea de umplere.
Culori RGB sunt definite ca un procent ntre 0 i 1 pentru rou, verde i albastru
componentelor, respectiv. De exemplu, urmtoarele definesc un contur rou cu un albastru de umplere.
0.75 0 0 RG
0 0 0.75 rg
10 w
306 396 m
306 594 l
336 500 l
B

De asemenea, operatorii CMYK iau patru procente, cte unul pentru cyan, magenta,
galben i negru.
Fluxul anterior se face de ctre operatorul B care contureaza si umple calea.

Calea operatorilor de construcie:

Setarea grafici presupune alegerea unei pensule si incarcarea cu vopsea.Urmtorul pas este desenarea
grafica pe pagina.Cu toate acestea n loc s punem fizic pensula pe pagin trebuie s reprezentm
numeric cile de grafic.
Capabilitile PDF sunt cteva:

<x> <y> m: Mut cursorul la punctul specificat


<x> <y> l: Deseneaz o linie de la poziia curent la un punct specificat

<x1> <y1> <x2> <y2> <x3> <y3> c: Adaug o curba Bzier cubica la calea curent.
h: nchide calea curenta cu o linie de segment de la poziia curent pana la inceputul cii.

Operatorul m:
Operatorul m muta cursorul grafic (pensula) la locaia specificat n pagin.Aceast operaie
este foarte important fr ea , toate segmentele de traseu ar fi conectat i ar ncepe la origine.

Operatorul l (litere mici L):


Operatorul l deseneaz o linie de la punctual curent la un alt punct.Se observ acest luctru i n
seciunile anterioare.
Amintii-va c acest PDF este o reprezentare de nivel scazut de text i grafic, deci nu exist nici un
text subliniat ntr-un document PDF
Exist doar text, i linii (ca entiti complet independente). Sublinierea textului trebuie
s fie efectuate manual.
0.75 0 0 RG
0 0 0.75 rg
10 w
306 396 m
306 594 l
336 500 l
B

Operatorul c:
Acest operator creeaz o curb Bzier cubic, care este una dintr-e cele mai commune
modaliti de a reprezenta
grafica vectorial complex. O curb Bzier cubiceste definit de patru puncte:

Dac ai folosit vreodat instrumentul peni n Adobe Illustrator, ar trebui s fii familiarizai
cu curbele Bzier. Curba indicat n figura anterioar poate fi creat ntr-un PDF cu fluxul urmtor.
3 w
250 250 m
300 400 450 450 550 250 c
S

La primul punct de ancorare poziia curenta (250,250), primul punct de control este (300,400), al doilea
punct de control este (450,450), iar ultimul punct de ancorare este (550,250).

Operatorul h:
Operatorul h nchide calea curent utiliznd un segment de linie din punctul curent la nceputul
cii.Nu are nevoie de nici un argument. Acest operator poate fi de multe ori omis, deoarece muli
operatori de pictur va nchide automat calea curent nainte de pictura.

Cei patru operatorii principali de construcie sunt m,l,c i h.


Din nou, nu exist operatori "forma", n specificarea PDF-ului nu se poate crea un "cerc" sau un
"triunghi." Cu toate acestea, toate formele pot fi aproximate ca o serie de linii, curbe Bezier, sau
ambele. Acesta este de pn la editorul aplicaiei PDF pentru a face forme de nivel superior la
dispoziia autorilor de documente i s le transforme ntr-o secven a acestor operaiuni simple de
construcie.

Operatorii grafici de desen:


Dup ce ai terminat construirea unui traseu, trebuie s-l deseneze n mod explicit cu unul dintre
operatorii de desen. Aceasta este similar cu operatorul Tj pentru desen text. Dup aplicarea unui
operator de desen, calea construit se termin. Dup aplicarea unui operator de desen, calea construit
se termin, exist mai muli operatori de desen pot fi aplicate la ea, i un alt apel la un operator de
construcie vor ncepe o cale nou.

Operatorii S,s:
Operatorii S i s deseneaza cursa cii construite folosind limea curs stabilit de w i culoarea de curs
stabilit de RG sau K. nainte de a aplica un atac la cale, versiunea cu litere mici nchide calea curent
cu un segment de linie. Aceasta este acelai comportament exact ca h S.

Operatorul f:
Operatorul f umple calea construit cu culoarea de umplere actual stabilit de RG sau k. Calea actual
trebuie s fi nchis nainte de desenul de umplere, astfel nct nu exist nici un echivalent la capitalul S
pentru conturarea desenului. Urmtoarele fluxuri creeaz un triunghi albastru.
0 0 0.75 rg
10 w
306 396 m
306 594 l
400 500 l
f

Amintii-va c partea de desen completeaz partea curent. Acest lucru nseamn secvena f S
va umple doar calea S se aplic o cale nou, care nu a fost construit nc. Pentru a umple i accentua o
cale, avem nevoie de un operator dedicat.

Operatorii B i b:
Operatorii B i b deseneaz i umple calea curenta. La fel s i b nchide calea nainte de acest
desen.Totui ntruct calea implicita de umplere se nchide, distincia ntre B i b pot fi vzute doar n
model aa cum este prezentat n figura de mai jos.

Operatorul * (asterix) :
Comportamentul de umplere a f, B, i b sunt relativ simple pentru forme simple. Umplerea
desenului devine mai complicat atunci cnd ncepei s lucrai cu ci care se intersecteaz. De
exemplu, luai n considerare urmtoarele:

Dup cum putei vedea, o astfel de cale pot fi umplute utiliznd dou metode diferite:
regula numrului de lichidare interior/exterior nenul sau regula impar. Detaliile tehnice ale acestor
algoritmi sunt n afara domeniului de aplicare a acestei cri, dar efectul lor este evident n diagrama
anterioar.
Operatorii umplere care le-am vzut pn acum folosi nenul de lichidare regul numrul. PDFurile au dedicat operatorilor de regul chiar-impar Umplerea: f *, B *, i b *. n afar de algoritmul de
umplere, aceti operatori de lucru exact acelai ca i omologii lor ONU asterix.

Summary

PDF-uri au fost iniial conceput pentru a fi o reprezentare digital de hrtie fizic i cerneal.
Operatorii grafice prezentate n acest capitol permit s reprezinte ci arbitrare ca o succesiune de linii i
curbe.
Ca i omologii lor textuale, operatorilor grafice sunt procedurali. Ei imita aciunile unui artist
pentru a desena aceeai imagine. Ei imita aciunile unui artist ar lua pentru a desena aceeai imagine.
Acest lucru poate fi intuitivdac suntei creator de grafic de la zero, dar poate deveni destul de
complicat dac care ncercai s editai manual o imagine. De exemplu, este uor s spui ceva de
genul, "trage o linie de aici acolo", dar este mult mai greu de spus, "Muta aceast caset doi inci la
stnga." nc o dat, aceast sarcin este lsat la latitudinea editorul aplicatii PDF-ului .

Capitolul 5
Navigarea i Comentarii
Am vzut cum PDF-urile poate reprezenta cu acuratete un document fizic ntr-un fiier digital, dar ele
ofer, de asemenea, caracteristici puternice care profita de mediul lor. ntruct navigare interactive si
comentariile editabile nu sunt posibile cu o carte fizic, PDF-urile face usor de luat notie, ele se mpart
cu alii, i s marcai locaii importante.
Acest capitol exploreaz cele trei tipuri mai importante de interaciune utilizator: conturul de
documente, hyperlink-uri, i adnotri de text.
Pregatirea:
nainte de a explora sistemul de navigare intern a unui PDF-ului, avem nevoie de un document
suficient de lung pentru a demonstra aceste caracteristici interactive. Exemplu nostru, tot ce trebuie s
facei este s adugai o alt pagin. Aceasta va servi, de asemenea, ca o revizuire relevant a obiectelor
PDF-ului de baz. S ncepem prin adugarea paginii la radacina documentului. Singura modificare
este de a aduga 6 0 R la intrarea / copii

1 0 obj
<< /Type /Pages
/Kids [2 0 R 6 0 R]
/Count 2
>>
endobj

Apoi, avem nevoie pentru a crea obiectul pagin i da un ID de 6 0. Obiectele pot aprea n
orice ordine, astfel nct s putei pune aceast oriunde in corpul documentul.

6 0 obj
<< /Type /Page
/MediaBox [0 0 612 792]
/Resources 3 0 R
/Parent 1 0 R
/Contents [7 0 R]
>>
Endobj

Acest lucru arata exact ca celelalt pagina a noastr (2 0 obj), dar indic un flux de coninut
diferit (7 0 R). Aceast pagin va conine un pic de date textuale.

7 0 obj
<< >>
stream
1 0 0 1 50 706 cm
BT
24 TL
/F0 36 Tf
(Page Two) Tj T*
/F0 12 Tf
(This is the second page of our document.) Tj
ET
endstream
endobj

i asta e tot ce trebuie s facem pentru a crea alt pagin.

Document schi:
PDF-urile complexe, de obicei, vin cu un tabel interactiv cuprins uor de utilizat i
navigare. Pe plan intern, aceasta se numete un contur de document. Cititori PDF-ului prezinta de
obicei acest contur ca un copac imbrcat care utilizatorul poate s-l deschid i nchid.

Structura unui astfel de copac este meninut separat de obiectele paginii i fluxuri de coninut
ale documentului. Doar ca aceste componente, un contur document ncepe n obiectul catalog. Adauga
o intrare / contururi in catalogul nostru existent.

5 0 obj
<< /Type /Catalog
/Pages 1 0 R
/Outlines 8 0 R
>>
endobj

Aceasta indic rdcina schia a documentului. Vom crea o foarte simpl schi care arat exact
ca cel prezentat n figura anterioar. Acesta conine un singur nod rdcin.
8 0 obj
<< /First 9 0 R
/Last 9 0 R
>>
endobj

Primele i ultimele intrri sunt un nod de referin de nivel superior n schia a. n lumea real,
un PDF-ului ar fi, probabil, mai mult de un nod de nivel superior, dar ai prins ideea. Apoi, avem nevoie
pentru a crea urmtorul nod.
9 0 obj
<< /Parent 8 0 R
/Title (Part I)
/First 10 0 R
/Last 11 0 R
/Dest [2 0 R /Fit]
>>
endobj

Puncte printe napoi la rdcina documentului. Titlul este un ir care conine literal titlul
seciunii afiate de cititorul PDF-ului. Prima i ultimul sunt aceleai ca i n 80 obj ele indic primul i
ultimul copil la acest nod. Deoarece acest nod va avea doi copii, primul i ultimul sunt diferite.

n cele din urm, intrarea definete destinaia elementului de navigare. O destinaie este o
locaie specific n document, specificat ca un numr de pagin, poziia pe pagin, i mrire. n acest
caz, dorim pentru a afia prima pagin (2 0 R) i zoom pentru a se potrivi ntreaga pagin n fereastra
cititorului (o poziie poate fi specificat atunci cnd o pagin este mrit pentru a se potrivi). Exist mai
multe cuvinte cheie n afar de potrivire care pot fi utilizate pentru controlul cu granulatie fina pe
interaciunea utilizatorului cu documentul. Cteva dintre acestea vor fi acoperite n scurt timp. Apoi,
avem nevoie pentru a aduga cele dou noduri copii la "Partea I".Prima dintre ele va naviga la
nceputul la a doua pagin.
10 0 obj
<< /Parent 9 0 R
/Title (Chapter 1)
/Next 11 0 R
/Dest [6 0 R /FitH 792]
>>
endobj

Acest lucru pare foarte similar cu nodul printe, dar nu are sub-noduri, astfel nct / Prima i /
Ultima pot fi omise. n schimb, are nevoie de o / intrare lng punctul a fratele su. Cuvntul cheie /
FitH instruiete cititorul PDF pentru a mri doar suficient pentru a face limea paginii a umple limea
ferestrei. Dup FitH este coordonata vertical pentru a afia n partea superioar a ferestrei.Din moment
ce ne-am dorit pentru a naviga la partea de sus a paginii, am specificat nlimea paginii; Cu toate
acestea, trecerea la o valoare mai sczut va permite s defilai parial n jos pe pagin. Exist un
cuvnt cheie corespunztor FitV / care umple pe vertical i ordoneaz din partea stanga a paginii.
n cele din urm, ajungem la ultimul element de navigare. Acesta va indica o jumtatea distanei
destinaia pe pagina a doua.

11 0 obj
<< /Parent 9 0 R
/Title (Chapter 2)
/Prev 10 0 R
/Dest [6 0 R /XYZ 0 396 2]
>>
endobj

Din nou, acest lucru este la fel ca nodul anterior, cu excepia dispune de un / Prev indic napoi
a fratele su anterior. i, n loc de zoom pentru a se potrivi, am specificat manual o locaie (0, 396) i o
mrire (2) folosind cuvntul cheie / XYZ.
Ar trebui s fie acum posibilitatea de a compila PDF cu pdftk i a vedea conturul documentul
(posibil s avei nevoie s deschide panoul de marcaje pentru a vedea).Vei observa c nodul "Partea I"

este ntotdeauna nchis n mod implicit. Dac dorii s-l deschide-i, adauga un / Count 2 intrare la
nodul de nivel superior (9 0 obj). Intrarea / Count conine numrul de noduri copii vizibile. Omiterea
ascunde toate nodurile copil.
Pentru a rezuma, structura documentului const ntr-o serie de elemente de navigare./ n primul
rnd, / Ultima, / dupa, / Prev, i / mam intrrile dicionarului se refer la elemente reciproce i s
defineasc structura contur ca un ntreg. Fiecare element conine, de asemenea o destinaie pentru a
naviga la, care este definit ca o pagin, locaie, i mrire .

Destinaie iniial
n plus fa de definirea unui copac de navigaie controlat de utilizator, obiectul catalog poate
controla pagina iniial pentru a afia. Acest lucru poate fi realizat prin trecerea unui destinaii de
intrare / OpenAction n obiectul catalog.
5 0 obj
<< /Type /Catalog
/Pages 1 0 R
/Outlines 8 0 R
/OpenAction [6 0 R /Fit]
>>
endobj

Acum, cand deschideti documentul, a doua pagin (6 0 OBJ) va fi afiat i privitorul va mri
pentru a se ncadra ntreaga pagin.

Hyperlinlink-uri
Este de asemenea posibil s creeze hyperlink-uri n document pentru a sri la o alt destinaie.
Hyperlink-uri PDF nu sunt ca link-uri HTML n care link-ul este conectat direct cu funcia din text sunt
doar zone dreptunghiulare plasate pe partea de sus a paginii, la fel ca un grafic. Ei lucreaz mai mult ca
butoanele dect hyperlink adevrate.
Hyperlink-uri sunt unul dintre mai multe tipuri de adnotri. Adnotrile sunt informaii
suplimentare asociate cu o anumit pagin. Pagini nu pot partaja adnotri. Al doilea tip cea mai comun
a adnotrii este un comentariu, pe care ne vom uita la ntr-un moment.
Adnotri sunt stocate ntr-o matrice sub intrarea / Annots ntr-un obiect pagin. Link-ul nostru
va fi pe a doua pagin (6 0 obj):

6 0 obj
<< /Type /Page
/MediaBox [0 0 612 792]

/Resources 3 0 R
/Parent 1 0 R
/Contents [7 0 R]
/Annots [12 0 R]
>>
endobj

Lng trebuie s crem adnotarea.


12 0 obj
<< /Type /Annot
/Subtype /Link
/Dest [2 0 R /Fit]
/Rect [195 695 248 677]
>>
endobj

Intrarea / Subtype spune cititorului PDF c aceasta este un hyperlink i nu un comentariu, sau
unul dintre celelalte tipuri de adnotri. Ca obiecte de navigare, / Dest este destinatia pentru a sri atunci
cnd utilizatorul face clic pe link-ul. i, n sfrit, / Rect este un dreptunghi care definete zona de
hyperlink. Din nou, link-uri nu sunt asociate direct cu textul-acestea sunt doar o zon de pe pagina.
Dac nu v place bordura vizibil n jurul dreptunghiului hyperlink, putei scpa de ea cu:
/ Border [0 0 0].

Adnotarile textului
Adnotri de text sunt comentarii definite de utilizator asociate cu o locaie pe o pagin. Ele sunt
de obicei afiate ca "sticky notes", care utilizatorul poate deschide i nchide. Ca hyperlink-uri, adnotri
de text locuiesc n matrice / Annots obiectului pagin HICH din care fac parte. n primul rnd, se
adaug un alt obiect la gama / Annots a doua pagin:
6 0 obj
<< /Type /Page
/MediaBox [0 0 612 792]
/Resources 3 0 R
/Parent 1 0 R
/Contents [7 0 R]
/Annots [12 0 R 13 0 R]
>>
endobj

Apoi, creai adnotarea.

13 0 obj
<< /Type /Annot
/Subtype /Text
/Contents (Hey look! A comment!)
/Rect [570 0 0 700]
>>
endobj

Din nou, / Subtipul definete tipul de adnotare. / Contents este coninutul textual al adnotrii,
i / Rect este locaia. Acest dreptunghi ar trebui s pun comentariu pe marginea din dreapta sus din a
doua pagin.
Adnotri de text au cateva proprieti suplimentare, care v ofer mai mult control asupra
aspectului lor. De exemplu, putei aduga un / Open intrare cu valoarea adevrat la obiect de adnotare
pentru a face deschiderea n mod implicit. Putei schimba, de asemenea pictograma afiat cu / Name /
Help. Alte icoane acceptate sunt: / Insert, / Key, NewParagraph, / Note, i / Paragraf.
n afar de / Link i / Text, exist multe alte forme de adnotri. Unii, cum ar fi adnotri / line, sunt pur
i simplu versiuni mai avansate ale adnotri de text. Dar altele, cum ar fi / Movie annotations, poate
asocia media arbitrare cu o pagin.

Rezumat
Acest document prezint descrierea capitolului, hyperlink-uri, i adnotri de text, dar aceasta
este doar o mic parte din funciile interactive disponibile ntr-un document PDF. Specificaia include
mai mult de 20 de tipuri de adnotri, inclusiv totul, de la mrcile de imprimante la dosare ataamente.
Lista complet a adnotri pot fi gsite n capitolul 8 al Adobe PDF de referin.

Capitolul 6
Crearea fiierelor PDF n C #
Generarea dinamic a PDF-ului dintr-un program C # are multe aplicaii poteniale.
De exemplu, ai putea genera automat facturi personalizate pentru o companie. n loc de
partea de codificare tuturor informaiilor, ai putea trage numele companiei, preul i
elemente dintr-o baz de date i s le utilizeze pentru a genera un flux de coninut.
n timp ce acest lucru ar putea fi realizat prin afiarea de manual fiecare obiect din
limba PDF, o bibliotec ter parte face lucrurile mult mai uor. n loc de manipularea
iruri i salvarea lor ntr-un fiier, o bibliotec PDF v permite s interacionai cu un
document PDF ntr-o manier orientat pe obiecte. Biblioteca iTextSharp este cel mai
popular cu surs deschis bibliotecii PDF pentru C #.

Acest capitol va introduce elementele de baz ale iTextSharp. Se presupune ca avei un SDK
NET de lucru, care prevede comanda CSC pentru ntocmirea cod de C #. Acest capitol nu se dorete a
fi un ghid complet pentru iTextSharp sau dinamic generaiei de document PDF. Ci doar servete ca un
ghid de pornire rapid la caracteristicile de baz ale iTextSharp.

Negare:
Biblioteca iTextSharp este un C # port al bibliotecii iText Java (disponibil de la acelai site).
Unele caracteristici i aspecte ale API s-au pierdut n timpul portului de C #. Pentru a nu face confuzie,
aceste modificri nu sunt documentate. De fapt, ca din acest scris, nu exist nici o documentaie
iTextSharp pentru a se vorbi despre. Singura disponibil referin API on-line este pentru versiunea Java,
care pot fi gsite la http://api.itextpdf.com/itext.
n ciuda unor inconsecvene, aceast documentaie nc se dovedete a fi o referin util pentru
dezvoltatori C #.

Instalarea:
Cea mai recent versiune a iTextSharp poate fi descrcat de SourceForge. Extras itextsharpdll-core-5.2.1.zip din pachet. Acesta ar trebui s conin un fiier numit itextsharp.dll. Orice C #
proiecte care necesit funcionalitatea iTextSharp trebuie compilat cu aceast bibliotec.

Bazele
S ncepem cu un exemplu simplu "Hello, World". Adugai urmtoarele la un nou fisier numit
HelloWorld.cs (acest dosare este disponibil la https://bitbucket.org/syncfusion/pdf-succinctly).

using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
public class HelloWorld {
public static void Main() {
Document doc = new Document();
PdfWriter.GetInstance(doc,
new FileStream("itext.pdf", FileMode.Create)
);
doc.Open();
Paragraph p = new Paragraph("Look! My First PDF!");
doc.Add(p);
doc.Close();
Console.WriteLine("Created a PDF!");
}
}

n primul rnd, declaram spaiile de nume necesare pentru programul nostru. Marea majoritate a
claselor utile locuiesc n iTextSharp.text. Singurul lucru de care avem nevoie la iTextSharp.text.pdf este
PdfWriter, care vor fi discutate ntr-o clip.
Apoi, vom crea o reprezentare C # a unui document PDF cu noul Document (). Dup aceea, am
nregistrat documentul cu o instan de PdfWriter. Acest lucru face sigur de coninut adugm la
obiectul document scris itext.pdf dosare. Apoi, am deschis documentul cu metoda open (). Acest lucru
trebuie s fie numit nainte se adaug orice coninut la doc.

Acum, c documentul este deschis, putem crea o instan Paragraf i sa l ataai la un


text.Acest lucru poate prea ciudat, avnd n vedere faptul c PDF nu tie ce este un paragraf stie doar
Tj, Td, i T *.Acum, c documentul este deschis, putem crea o instan Paragraful i ataai un text s-l.
Acest lucru poate prea ciudat, avnd n vedere faptul c PDF nu tie ce este un paragraf este stie doar
Tj, Td, i T *. Din fericire, iTextSharp ofer elemente de nivel superior, cum ar fi punctele, antete, i
liste. Acest lucru face cu mult mai mai uor pentru a produce PDF-ului dinamice, care includ ruleaz
arbitrarea de text.
n cele din urma nchidem documentul iar la ieire afiam un scurt mesaj de succes.

Compilarea:
Amintii-v, acest program trebuie s fie compilat cu biblioteca iTextSharp. Deci, muta
itextsharp.dll n acelai folder ca i HelloWorld.cs (alternativ, putei plasa n PATH). Apoi, rulai
urmtoarea comand pentru a compila programul.

csc /reference:itextsharp.dll HelloWorld.cs

Acest lucru creeaz un executabil numit HelloWorld.exe. Cnd l rulai, acest program va crea
un document PDF itext.pdf numit cu textul "Look My First PDF! "Cele interne ale acestui document ar
trebui s aib o sintax familiar; Totui, fluxurile sunt comprimate i astfel imposibil de citit. n plus,
mai multe feed-uri de linie au fost eliminate, ceea ce face mai greu s te orienteze.
Putem face mai uor pentru a inspecta itext.pdf prin decomprimare cu pdftk. Sintaxa ei este
oarecum unintuitiv:
pdftk itext.pdf output itext-pretty.pdf uncompress

Acum, dac v deschidei IText-pretty.pdf, ar trebui s gsii un document PDF care este mult
mai uor de neles. Punctele dicionar trailer la catalog, care trebuie s fie de 5 0 obj. Punctele catalog
la arborele pagina rdcin (3 0 obj), i ar trebui s fie capabil s gseasc drumul de acolo.
Cu toate acestea, iTextSharp adugat cteva obiecte noi pentru fiierul de ieire. Remorca are o
intrare / Info, care nu l-am mai vzut pn acum. Se indic un dicionar de informaii care conine
metadate despre document. Dac defilai pn la 7 0 obj, vei vedea c se nregistreaz iTextSharp ca
cererea productor, mpreun cu o dat de modificare i o data de creare. n plus fa de acestea, caietul
de sarcini PDF definesc / titlu, / Autor, / Subiect, i / cuvinte cheie. Toate aceste valori ar trebui s fie
un ir literal.
Exist, de asemenea, o intrare nou / ID din dicionarul trailer. Identific n mod unic aceast
versiune a documentului, care pot fi utile pentru integrarea documentul ntr-un flux de lucru.

Obiecte text iTextSharp


Aa cum am vzut, iTextSharp lucreaz la un nivel mai ridicat dect obiecte de tip text PDF.
Acesta utilizeaz trei niveluri de obiecte de tip text: buci, fraze, i paragrafe. Aceste obiecte de text de
baz, mpreun cu cele mai multe dintre celelalte elemente disponibile, locuiesc n spaiul de nume
iTextSharp.text.

Chunks
Chunks sunt cea mai mic unitate de text pe care se poate lucra. Sunt utile atunci cnd avei
nevoie s stil un cuvnt sau o expresie specific n mod diferit dect restul liniei. Verific urmtoarele
probe de cod.
Chunk before = new Chunk("Look! My ");

Chunk middle = new Chunk("First");


middle.SetUnderline(0.5f, -1.5f);
Chunk after = new Chunk(" PDF!");
Paragraph p = new Paragraph();
p.Add(before);
p.Add(middle);
p.Add(after);
doc.Add(p);

Aa cum v-ai atepta de la o bibliotec de nivel superior, puteti s asociai n mod direct o
subliniere cu o durat de text.SetUnderline () Metoda are dou argumente: limea cursei subliniat, iar
distana decalat fa de baz.
Cu toate acestea, chunks nu ofer mult funcionalitate n afar de stiluri de baz. Ele pot
sublinia i a inclina textul, dar nu pot efectua operaiuni la nivel de linie. Pentru aceasta, avem nevoie
de clasa Expresie.

Expresii:
O fraz este un grup de obiecte bucat, mpreun cu unele funcionaliti-line contient. Se
poate ncadra linii pentru o anumit lungime, linii de spaiu n conformitate cu un anumit lider, i
cascad formatare a buci. Putem vedea acest lucru n aciune, dac ne-am schimba punctul nostru de
o expresie i se adaug cteva buci la ea.
Phrase p = new Phrase();
p.Add(before);
p.Add(middle);
p.Add(after);
p.Add(new Chunk(" Note that Phrases, unlike Chunks, are lineaware."));
p.Add(new Chunk(" They can wrap lines to the width of a
document."));

Alineatul:
Alineatul este la nivel de bloc obiect text iTextSharp lui. Avnd n vedere c este alctuit din
fraze, are toate aceeai funcionalitate legate de linie. n plus, punctele au indentare i text-aliniere.
Vom arunca o privire mai atent la aceste proprieti ntr-o clip.

Lista:

Pe lng aceste obiecte de text de baz, iTextSharp ofer elemente gramaticale comune,
inclusiv liste. Putem crea o list cu clasa List aptly numit, i adug elemente la ea prin crearea List
Items.
List list = new List(List.UNORDERED);
list.Add(new ListItem("Apples"));
list.Add(new ListItem("Oranges"));
list.Add(new ListItem("Bananas"));
doc.Add(list);

n mod implicit, listele folosete o cratim pentru a desemna fiecare element. Dar, acest lucru
poate fi modificat cu ajutorul metodei SetListSymbol ().
list.SetListSymbol("\u2022");

Acum, lista folosete caracterul Unicode. Reinei c aceast metod trebuie s fie numit nainte
de a aduga nici un produs la lista.

Formatarea unui document:


Tot ceea ce se poate face n limbajul nativ PDF, ar trebui s fie capabil s fac n iTextSharp. n
aceast seciune, ne vom uita la versiunea iTextSharp de cutii media, culori, fonturi, i formatarea
punctul.

Dimensinea documentului:
Intrarea / Mediabox ntr-un obiect pagin definete dimensiunea din acea pagin. n iTextSharp,
acest lucru se realizeaz prin trecerea unui dreptunghi care conine dimensiunile la constructorul
Document.
Rectangle mediaBox = new Rectangle(300, 400);
Document doc = new Document(mediaBox);

Acum, dac deschidei documentul creat de HelloWorld.cs, vei gsi o intrare / Mediabox din [0
0 300 400]. iTextSharp asemenea expediaza cu o clas PageSize util care conine constantele de
dimensiuni obinuite de hrtie. De exemplu, este un PageSize.A5 420 x 595 dreptunghi.
Document Constructorul accept, de asemenea, patru parametri numerici care definesc stnga,
dreapta, sus, i de jos a paginii, respectiv. De exemplu, un document creat cu urmtorul eantion nu va
avea margini de pagini, la toate.
Document doc = new Document(mediaBox, 0, 0, 0, 0);

Culoarea:
iTextSharp foloseste clasa BaseColor a reprezenta culorile RGB componente. Putem defini culoarea de
fundal a unei pagini prin atribuirea o instan a BaseColor n domeniul BackgroundColor din
dreptunghi.
mediaBox.BackgroundColor = new BaseColor(255, 255, 240);

Desigur, iTextSharp sprijin, de asemenea alte spaii de culoare comune, inclusiv: MYKColor,
GrayColor i SpotColor. Exist chiar i un PatternColor care poate utiliza un bitmap pentru a umple n
desen.

Selectarea fontului:
Clasa Font combin un font, dimensiunea i culoarea ntr-un stil reutilizabil. Cu toate acestea,
lucrul cu clasa Font direct poate fi un pic complicat, asa ca iTextSharp ofer o metod din fabric
pentru crearea unui exemplu Font.
BaseColor red = new BaseColor(255, 0, 0);
Font apple_font = FontFactory.GetFont(
FontFactory.HELVETICA_OBLIQUE, 12, red
);

Aceasta creeaz un font rou, oblic Helvetica care este de 12 puncte de marime. Acum putem
trece acest caz font la orice obiect de text. De exemplu, vom transforma textul nostru "Apple" n list
roie.
list.Add(new ListItem("Apples", apple_font));

Toate celelalte obiecte de text (bucati de fraze, i paragrafe) s ia, de asemenea, un font ca al
doilea parametru acestora. Cu toate acestea, obiectul List are unele neateptrii de comportament toi
marcatorii sunt roii.

Putem rezolva aceast prin stabilirea n mod explicit fontul marcatorului. n primul rnd, vom
crea fontul.
BaseColor black = new BaseColor(0, 0, 0);
Font symbol_font = FontFactory.GetFont(
FontFactory.HELVETICA, 12, black
);

Atunci vom folosi acest font ntr-un nou Chunk i atribuii-l la simbolul list.
list.ListSymbol = new Chunk("\u2022", symbol_font);

Observai c a trebuit sa foloseasca domeniul ListSymbol locul metodei SetListSymbol (). n


timp ce SetListSymbol () este documentat acceptat fie un ir sau o bucat, C # portul pare s fi pierdut
aceast funcionalitate. n schimb, cmpul ListSymbol accept o bucat. Aceasta este o "expresie"
comun utilizat de dezvoltatorii de portare a bibliotecii.

Fonturi personalizate:
Folosind aceeai metod, putei ncorpora, de asemenea, fonturi n documentul de pe hard disk.
Capacitatea de a ncorpora fonturi este un motiv de mare n spatele prevalenei de PDF-uri. Din
moment ce acestea nu se bazeaz pe resurse pe partea de client, se putem asigura c coninutul apare la
fel pe orice computer, indiferent de fonturile instalate acestora. Fonturile pot fi ncorporate prin
accesarea n mod direct fiierului de font, dup cum urmeaz.
Font chunk_font = FontFactory.GetFont(
"C:\\WINDOWS\\Fonts\\Chunkfive.otf",
BaseFont.WINANSI,
BaseFont.EMBEDDED
);

Aceasta conine un font cu domiciliul la C: \ Windows \ Fonts \ Chunkfive.otf, care este o copie
a Chunk Five Roman obinute de la FontSquirrel.com. WINANSI este codificarea fontului, iar
ncorporat este un steag Boolean care spune PDF de a ncorpora fontul.

Formatarea blocului de text:


Acum, c avem selecie font sub centurile noastre, putem trece la blocarea la nivel de formatare.
Aceasta include: de conducere, spaiere nainte i dup, la stnga i la dreapta indentare, i aliniere:

S sari imediat. Schimbarea fraza napoi la paragraful, setai toi patru dintre urmtoarele
domenii.
Paragraph p = new Paragraph();
p.Leading = 26f;
p.SpacingAfter = 10f;
p.IndentationLeft = 10f;
p.Alignment = Element.ALIGN_CENTER;

Conducere, spaierea i indentare accept toate un flotor, dar aliniere necesit o constant
definit n clasa Element. Alte opiuni aliniere sunt: ALIGN_LEFT, ALIGN_RIGHT i
ALIGN_JUSTIFIED. Dac ai justifica textul, decomprimai fiierul, i cutm n fluxul de coninut,
vei descoperi c iTextSharp justific textul utiliznd aceeai metod Tc i Tw discutat chiar de la
nceputul crii.

Rezumat:
Acest capitol ofer un scurt tur al bibliotecii iTextSharp. Ar trebui s fie bine pe cale de a crea
dinamic documente PDF din C # si valorificarea acestora mpotriva cadrului NET. Las restul din
iTextSharp pentru tine s descoperi. Pe o not legat, Syncfusion ofer, de asemenea, o bibliotec PDF
comercial, care ofer un model de nivel nalt obiect pentru a crea, modifica, transforma, i
vizualizarea fiierelor PDF din aplicaiile .NET. Mostre online ale bibliotecii Syncfusion lui PDF pot fi
gasite aici.

Concluzii:
Aceast carte a introdus componentele fundamentale pentru reprezentarea digital a
documentelor paginate: text, grafic, i navigare. Din fericire, este acum mai mult confortabil editarea

direct acestor elemente n fiiere PDF. Am fost chiar n msur s descoperi bibliotecii iTextSharp
care ne-a dat un API de nivel nalt pentru formatul PDF de nivel sczut.
Am acoperit zeci de obiecte i operatori, dar aceasta este doar nucleul capacitilor PDF lui.
Documente PDF luda, de asemenea Forma XObjects (simboluri reutilizabil), semnturi digitale, opere
de art nativ 3-D, i capabiliti de documente de schimb extinse, inclusiv metadatele arbitrar, date de
aplicare private i etichetat coninut pentru extragerea de date mai uor i urmarirea dinamic a
paginilor.
Toate aceste subiecte sunt bine acoperite n Adobe PDF Reference, ediia a asea,versiunea 1.7.
Aceast referin indispensabil va dovedi a fi un ghid de ncredere ar trebui s v alegei s continuai
cltoria prin limbajul PDF.

S-ar putea să vă placă și