Sunteți pe pagina 1din 6

CREAREA DOCUMENTELOR PDF

Andrei Creoşteanu*

Because of its characteristics, the PDF format has become very popular in the last years,
most of the documents meant to be read by a large public being written in this format. The
paper shortly presents the structure of PDF files and the step by step creation of a PDF
document through code, document which demonstrates different elements and effects that can
be added to it.

1. Introducere

Formatul PDF este foarte popular datorită atuurilor sale:


- cu ajutorul Acrobat Reader aceste documente pot fi deschise pe orice calculator
indiferent de sistemul de operare.
- datorită încorporării în document a elementelor folosite (fonturi, imagini, etc), acestea
vor arăta la fel pe orice calculator.
- asemănător streaming-ului video, prima pagină a unui document este afişată imediat
după descărcare, urmând ca următoarele pagini să fie descărcate şi afişate ulterior.
- elemente de securitate care (la alegerea celui care crează documentul PDF) nu permit
copierea textului, a unor elemente ale sale sau chiar tiparirea documentului.
Prezenta lucrare va prezenta (pe scurt) structura documentelor PDF şi crearea de
documente PDF prin cod Visual Basic.

2. Crearea PDF-urilor

În continuare voi prezenta crearea unui document PDF. Codul ce urmează apelează
proprietăţi şi metode definite în clasa clsCrearePDF, ele au nume sugestive pentru operaţiile
pe care le execută. Aceste metode şi proprietăţi crează un fişier cu o anumită structură
definitorie pentru formatul PDF.
Voi prezenta la început codul şi apoi comentariile, numerotate, numerele acestea
regăsindu-se la sfârşitul liniilor de cod. În această lucrare nu este prezentată toată clasa
clsCrearePDF datorită mărimii ei (2500+ linii de cod) ci doar metoda clasei de scriere a
textului în fişiere PDF.
2.1 Iniţializarea documentului PDF

Dim clsPDF As New (13)


clsCrearePDF (1)
Dim strFişier As String (2)
Dim i As Single
strFişier = App.Path & "\Kreo PDF.pdf" (3)

With clsPDF (4)

.Titlu = "Kreo PDF" (5)


.ModScară = pdfCentimetru (6)
.MărimeHârtie = pdfA4 (7)
.Margini = 0 (8)
.Orientare = pdfPortret (9)

.InitializarePDF (strFişier) (10)

.Font "Font1", "Times New Roman" (11)


.Font "Font2", "Arial", pdfItalic (11)
.Font "Font3", "Courier New" (11)
.FontStandard "Font4","Courier New", pdfBold (11)
.Imagine "Imag2", App.Path & "\2.bmp" (12)

.StartObject "1", pdfToatePaginile (13)


.ColorFill -240
.TextScaling 120
.Text 6, 4, "Kreo PDF", "Font2", 120, , 60 .ColorFill 0
.EndObject (13)
(1)-Creem o instanţă a clasei
(2)-Creem un string pentru calea (şi numele) noului fişier creat
(3)-Dăm calea şi numele noului fişier ce urmează a fi creat. Calea este: Folderul unde se află
aplicaţia
(4)-Tot ce urmează după With şi are .Ceva (punct Ceva) înainte este echivalent cu
clsPDF.Ceva
(5)-Titlul fisierului
(6)-Unitatea de masură pentru pagină
(7)-Formatare pagina / Mărime pagină
(8)-Marginea paginii
(9)-Orientarea paginii
(10)-Iniţializarea fisierului PDF: se crează fişierul la adresa din strFişier, se scrie versiunea de
PDF, atributele (titlul documentului, creator, autor, dată), catalogul (preferinţe vizualizare,
limba, tip pagină, etc.)
(11)-Definirea fonturilor folosite (Formatul PDF conţine fonturile folosite a.î. documentul va
arăta exact la fel pe orice sistem de operare şi orice PC)
(12)-Definirea resurselor la imagini
(13)-Definire Watermark - text care va aparea scris pe toate foile (în fundal)
2.2 Iniţializarea primei pagini

.StartPagina (14)

.Text 19, 1.5, "pagina " & Trim(CStr(.Pages)), "Font1",


12, pdfAliniereDreapta (15)
.Text 10.5, 27, "Test creere fisier PDF", "Font1", 48,
pdfCentru (15)
.TextScaling 70 (16)
.Text 20, 23, "Aliniere dreapta", "Font2", 24,
pdfAliniereDreapta (15)
.Text 1, 23, "Aliniere stanga", "Font2", 24,
pdfAliniereStanga (15)
.Text 10.5, 23, "Aliniere centrata", "Font2", 24,
pdfCentru (15)
.TextScaling 100 (16)

For i = 0 To 359 Step 15 (17)


.ColorFill RGB(CByte(255 * i / 359), CByte(255
* (359 - i) / 359),0)
If i<=60 Or i>=240 then .Text 10.5, 16, "Test
rotire text " & CStr(i) & "°", "Font2", 20, , i
Next (17)

.ColorFill 0
.ColorStroke 0
.TextScaling 45 (16)
.Text 20, 6, "Text micsorat la 45%", "Font2", 24,
pdfAliniereDreapta (15)
.TextScaling 200 (16)
.Text 1, 6, "Text marit 200%", "Font4", 24,
pdfAliniereStanga (15)
.CharSpacing 5 (18)
.Text 1, 3, "Spatiu intre caractere: 5", "Font3", 16,
pdfAliniereStanga (15)
.CharSpacing 0 (18)

.SfarsitPagina (19)

(14)-Iniţializarea primei pagini a documentului: folosind sintaxa necesară tipului de fişier


PDF se incrementează numărul de pagini, se selectează pagina nou creată şi verificăm dacă
există declarat un watermark – text care va apărea ca fundal pe toate paginile – şi îl inserăm
dacă există; setăm pe 0 distanţa între caractere, cuvinte, şi setăm mărimea textului la 100%
(adică mărimea lui naturală)
(15)-Sintaxa pentru afişarea textului (în cadrul clasei, pentru metode): se dau coordonatele de
inserţie, textul ce va apărea în document, fontul şi mărimea acestuia şi eventual tipul de
aliniere (implicit este aliniere la stânga). Scrierea textului în fişier (PDF): Întâi verificăm tipul
de aliniere şi în funcţie de acesta setăm punctul de inserţie, folosind sintaxa necesară tipului
de fişier PDF se scrie fontul, mărimea fontului şi textul (Această metodă de inserare a textului
poate fi citită la sfârşitul lucrării – prezintă inclusiv sintaxa necesară formatului PDF pentru
inserarea de text într-un astfel de document)
(16)-Mărirea sau micşorarea textului scris cu acelaşi font
(17)-Afişarea unui text rotit şi cu variaţie a culorii. Afişăm textul doar pentru valorile <= cu
60 şi >= cu 240
(18)-Distanţa dintre caractere
(19)-Inchidem pagina

2.3 Iniţializarea celei de a doua pagini

.StartPagina (14)

.Text 19, 1.5, "pagina " & Trim(CStr(.Pages)), "Font1",


12, pdfAliniereDreapta (15)
.Text 10.5, 27, "Elemente grafice:", "Font1", 48,
pdfCentru (15)
.Dreptunghi 1, 2, 19, 24.5, Stroked (20)
.Img "Imag2", 1.5, 19, 3, 4 (21)
.Text 3.1, 14.4, “Imagine inserată”, “Font1”, 14,
pdfCentru (15)
.Dreptunghi 1.5, 23, 2.5, 3, , 0.5 (20)
.ColorFill RGB(0, 0, 255) (22)
.Dreptunghi 5, 23, 2.5, 3, Filled, 0.5
.ColorFill 0 (22)
.LineWidth 0.1 (23)
.ColorStroke RGB(255, 0, 0)
.Cerc 15.5, 6, 2, Stroked (23)
For i = 0 To 90 Step 10 (24)
.ColorStroke RGB(95 - i, i + 5, 255 - i)
.Arc 15, 7.3, 5, , , 0.5, , i, , Stroked
Next (24)

.SfarsitPagina (19)

.ÎnchiderePDF (25)

End With (4)

(20)-Desenare dreptunghi
(21)-Inserare imagine în fişier PDF
(22)-Desenare dreptunghi plin de culoare albastră
(23)-Desenare cerc de culoare roşie
(24)-Arce de cerc în jurul cercului roşu
(25)-Închiderea documentului PDF

2.4 Sintaxa PDF

În continuare voi prezenta metoda utilizată pentru scrierea textului într-un document
PDF, metodă conţinută în clasa clsCrearePDF. Această metodă arată cum este scrisă
informaţia (în cazul nostru textul) într-un fişier PDF.
Public Sub Text(x As Single, y As Single, strTemp As String,
NumeFont As String, MarimeFont As Single, Optional Aliniere
As pdfAliniereText = pdfAliniereStanga) (26)

Select Case Aliniere (27)


Case pdfAliniereStanga

Case pdfAliniereDreapta
l = Length(strTemp, NumeFont, MarimeFont)
x=x-l
Case pdfCentru
l = Length(strTemp, NumeFont, MarimeFont)
x=x-l/2
End Select (27)

Scrie "BT" (28)


Scrie "/" & NumeFont & " " & ToStr(MarimeFont) & " Tf"
Scrie ToStr(ToSpace(x)) & " " & ToStr(ToSpace(y)) & " Td"
Scrie "(" & ToPdfStr(strTemp) & ") Tj"
Scrie "ET" (28)

End Sub

(26)-Numele metodei cu parametrii ei: coordonatele x şi y, textul ce urmează să fie scris,


numele fontului, mărimea fontului şi opţional tipul de aliniere, alinierea implicită fiind
aliniearea la stânga
(27)-În funcţie de tipul alinierii setăm punctul de inserţie a textului
(28)-Cele cinci linii de cod prezintă sintaxa fişierului PDF şi modul de scriere a informaţiei în
acest tip de fişier
(29)-Sfârşitul funcţiei

2.5 Interfaţa programului

Pentru acest program am utilizat o interfaţă grafică cât mai simplă şi cât mai uşor de
folosit pentru o rapiditate în folosire. Acest program la apăsarea butonului “Crează PDF”
crează un document PDF de aproximativ 100 kb care demonstrează diverse opţiuni: alinieri
diferite ale textului, rotiri de text, mărirea şi micşorarea unui text scris cu aceeaşi mărime de
font, lăsarea de spaţiu între caractere, inserarea de imagini şi crearea de elemente grafice.

După deschiderea programului sunt suficiente două apăsări ale tastei enter pentru a se
crea documentul PDF şi a se ieşi din program (după primul enter focus-ul se mută pe
“Ieşire”).
2.6 Rezultatul rulării: fişierul PDF

*
Andrei Creoşteanu, student, Universitatea Titu Maiorescu – Bucureşti, e-mail: andrei.creo@gmail.com