Ovaj VB tutorial gradi poslednji i pokazuje kako možete da kreirate naprednije PDF fajlove. Ona vas uči kako da napravite višeslojni dokument, sa postavkom zaglavlja, podnožja stranice, brojeve stranica, oblika i slika.
U prethodnom tutorialu smo gledali kako da napravimo jednostavan PDF dokument koji je bio sa jednom stranicom i imao samo tekst. Ako ste videli mnogo PDF dokumenata na internetu ili negde drugde ,znate da oni obično uključuju više od samog teksta. Srećom,mi smo u mogućnosti da radimo ove stvari . U ovom VB PDF tutorialu mi ćemo pogledati kako ćemo dalje koristiti mjwPDF klasu i ostvariti ono što nam treba. Do kraja tutoriala trebalo bi da budete u mogućnosti da napravite višeslojni dokument koji ima zaglavlja, podnožja sa brojevima stranica , oblike, grafike, i web linkove.Ako želite, možete download the source code for this VB PDF tutorial i pratite zajedno sa njim.
Ako niste čitali uvodni tutorial o Creating a PDF document using Visual Basic. Molim vas,prvo to uradite. Ovaj VB tutorial sagrađen je isključujući prethodni. U stvari počećemo sa gledanjem koda koji smo stvorili ranije:
Private Sub Command1_Click()
' Create a simple PDF file using the mjwPDF class
Dim objPDF As New mjwPDF
' Set the PDF title and filename
objPDF.PDFTitle = "Test PDF Document"
objPDF.PDFFileName = App.Path & "\test.pdf"
' We must tell the class where the PDF fonts are located
objPDF.PDFLoadAfm = App.Path & "\Fonts"
' View the PDF file after we create it
objPDF.PDFView = True
' Begin our PDF document
objPDF.PDFBeginDoc
' Set the font name, size, and style
objPDF.PDFSetFont FONT_ARIAL, 15, FONT_BOLD
' Set the text color
objPDF.PDFSetTextColor = vbBlue
' Set the text we want to print
objPDF.PDFTextOut "Hello, World! From mjwPDF (www.vb6.us)"
' End our PDF document (this will save it to the filename)
objPDF.PDFEndDoc
End Sub
Divno. Sa ovim kodom napravili smo inicijalizaciju i napravili osnovni fajl. Sada dodajemo nekoliko formatiranih opcija. Odmah posle podešavanja foldera fontova dodajmo nekoliko linija koda koji govore mjwPDF koji govore kako bi trebalo rasporediti dokumente.
' We must tell the class where the PDF fonts are located
objPDF.PDFLoadAfm = App.Path & "\Fonts"
' Set the file properties
objPDF.PDFSetLayoutMode = LAYOUT_DEFAULT
objPDF.PDFFormatPage = FORMAT_A4
objPDF.PDFOrientation = ORIENT_PORTRAIT
objPDF.PDFSetUnit = UNIT_PT
' View the PDF file after we create it
objPDF.PDFView = True
Ovaj kod podešen je na standardnoj stranici (veličina slova) uspravno i našoj jedinici mere kao tačke.
Sledeći omogućava da uradimo nešto zabavno. Mnogo puta želite da dodate u naslov PDF dokumenta nešto kao "Vrlo važan izveštaj Blah Blah" Saznajmo kako da dodamo u naslov kao što je ovaj naš dokument. Obrišite bold linije ispod koda:
' Begin our PDF document
objPDF.PDFBeginDoc
' Set the font name, size, and style
objPDF.PDFSetFont FONT_ARIAL, 15, FONT_BOLD
' Set the text color
objPDF.PDFSetTextColor = vbBlue
' Set the text we want to print
objPDF.PDFTextOut "Hello, World! From mjwPDF (www.vb6.us)"
' End our PDF document (this will save it to the filename)
objPDF.PDFEndDoc
I dodajte ove linije koda na njihovo mesto:
' Lets add a heading
objPDF.PDFSetFont FONT_ARIAL, 15, FONT_BOLD
objPDF.PDFSetDrawColor = vbRed
objPDF.PDFSetTextColor = vbWhite
objPDF.PDFSetAlignement = ALIGN_CENTER
objPDF.PDFSetBorder = BORDER_ALL
objPDF.PDFSetFill = True
objPDF.PDFCell "A centered heading", 15, 15, _
objPDF.PDFGetPageWidth - 30, 40
Dozvolite mi da vam objasnim šte to znači. Prepoznaćete prvu liniju koda. Samo postavlja info font. Sledeće podešavamo DrawColor (koji će u ovom slučaju biti istaknuta ili u boji naše kutije). Sledeće je postavljanje boje teksta i naše svrstavanje i granice. PDFSetFill=istinski govori mjwPDF da ispuni ovu kutiju kada štampa naš tekst. Sledeća linija je šta sve prikazuje.
Pustite me da ga razbijem . Prvi parametar je jednostavan tekst koji želimo prikazati. Sledeće ćemo reći koliko daleko želimo preko leve strane kutije (ili ćelijel) u našem slučaju smo rekli 15 bodova preko leve strane. Sledeći parametar je 15 bodova dole od vrha. Sledeće moramo odrediti koliko će široka biti kutija. Želimo da razvučemo na sve strane ka desnoj strani stranice (minus 15 bodova desne granice). Da bi ovo ostvarili možemo koristiti mjwPDF klase PDFGetPageWidth funkcije. To će nam dati punu širinu stranice koju onda oduzimamo 30 od toga (15 za levu granicu i 15 za desnu granicu), poslednji parametar je visina ćelije, 40 će biti previsoko da smestite naš tekst.
Ako vratite kod trebalo bi da vidite vaš PDF koji iskače sa lepim zaglavljem na vrhu stranice.
Druga zanimljiva stvar je stvaranje oblika u vašim PDF fajlovima. Ovo može biti iskorišćeno za stvaranje bar grafikona na određenim obojenim poljima. Ovde su neki jednostavni kodovi koji stvaraju kvadrate.
' Lets draw a dashed red square
objPDF.PDFSetLineColor = vbRed
objPDF.PDFSetFill = True
objPDF.PDFSetLineStyle = pPDF_DASHDOT
objPDF.PDFSetLineWidth = 1
objPDF.PDFSetDrawMode = DRAW_NORMAL
objPDF.PDFDrawPolygon Array(300, 150, 400, 150, 400, 250, 300, 250)
Većina postavki je razumljiva. Primetićete da možete odrediti stil i širinu linije. Takođe primećujete da ovde nema nacrtane square funkcije. Umesto toga,nacrtana je polygon funkcija. Potreban je jedan parametar, ali je taj parametar niz tačaka određen u x y koordinatama. X pokazuje koliko daleko od leve do desne strane da nacrtamo tačku a Y pokazuje koliko sa vrha do dna . Tako,u našem primeru mi smo odredili 4 boda (četiri ugla kvadrata).
Sledeći omogućava crtanje elipse. Elipsa je prost krug koji može biti smanjen i vertikalno i horizontalno. Da bi je pravilno odredili moramo koristiti neke matematičke termine. Ako se sećate sa časa geometrije,krug ima radijus. Radijus je udaljenost od centra ka ivicama kruga. Elipsa ima dva dva radijusa. Jedan je horizontalan,drugi je vertikalan. Tako,kod za našu elipsu je ovaj:
' Lets draw an ellipse
objPDF.PDFSetDrawColor = vbYellow
objPDF.PDFSetLineColor = vbBlack
objPDF.PDFSetLineStyle = pPDF_DASHDOT
objPDF.PDFSetLineWidth = 1.25
objPDF.PDFSetDrawMode = DRAW_DRAWBORDER
objPDF.PDFDrawEllipse 300, 150, 75, 25
Svi parametri do sada treba da imaju smisla. Nova linija je PDFDrawEllipse poziv. To je vrlo jednostavan poziv osim što mnogo puta mislite da x i y koordinate treba rasporediti u centar kruga. Kakogod,pogrešićete. Umesto prvog parametra rasporedite u gornji levi ugao kvadrata koji ograničava elipsa.Sledeća dva parametra određuju horizontalni radijus i vertikalni radijus . Ako vam ovo deluje zbunjujuće,samo pokrenite program i videćete šta sam mislio. x & y parametri za našu elipsu su isti kao i x & y parametri za našu prvu tačku u kvadratu,tako da će te videti kako to radi. Ako pokrenete program treba ovo da vidite:
Vratimo se korak unazad,na rukovanje tekstom u PDF dokumentima,ponovo. Jedna stvar koju obično viđate u profesionalnom dokumentu je zaglavlje koje smo mi napravili iznad. Druga uobičajena stvar su brojevi stranica u podnožju stranice. Možemo koristiti istu logiku koju smo koristili za naša zaglavlja da dodamo brojeve stranica. Želeo bih da dodam brojeve u podnožje stranice sa desne strane,kao što većina dokumenata ima. Neću vam objašnjavati kako to da uradite korak po korak,ali tu je kod za visual basic potprogram kojim dodajete brojeve stranici sa dugmetom u desnom uglu vašeg PDF dokumenta.
' Adds the page number to the current page
Private Sub AddPageNumber(objPDF As mjwPDF, pageNumber As Integer)
Dim sPageInfo As String
Dim fontSize As Double
Dim margin As Double
fontSize = 10 'Size of font to use
margin = 40 'Size of margin (left, right, bottom)
' Set what we want to print for page info
sPageInfo = "Page " & pageNumber
' Should save these settings and change them back for more robust code
objPDF.PDFSetTextColor = vbBlack
objPDF.PDFSetAlignement = ALIGN_RIGHT
objPDF.PDFSetFont FONT_ARIAL, Conversion.CInt(fontSize), FONT_NORMAL
objPDF.PDFSetFill = False
' Uncomment the below line if you want to see how our formatting works
'objPDF.PDFSetBorder = BORDER_ALL
' Draw the page number at the bottom of the page to the right
objPDF.PDFCell sPageInfo, margin, _
objPDF.PDFGetPageHeight - margin - fontSize, _
objPDF.PDFGetPageWidth - (margin * 2), fontSize
End Sub
Sada mi znamo kako da dodamo brojeve stranici ,kako da praktično stvorimo višeslojne stranice? Vrlo je jednostavno. Kada ste to učinili sa prvom stranicom, prosto pozovite PDFEndPage metod. Sledeći poziv je PDFNewPage metod da započnete sledeću stranicu. Onda jednostavno zovite komande da dodate vašem tekstu ili oblicima na sledećoj stranici. Možete ovo raditi koliko god puta želite. Ne zaboravite da zovete AddPageNumber metod na svakoj strani.
Druga korisna karakteristika PDF dokumenata je dodavanje bookmarks. Bookmarks vam dopuštaju da skaču lako iz sekcije u sekciju u PDF dokumentu . Kada korisnici pogledaju u PDF dokument sa bookmarks, u mogućnosti su da vide pregled sadržaja tipa kartice na levoj strani ekrana. Zapišite: ako želite da ovo okno bude vidljivo podrazumevano,treba dodati ovu liniju koda da pokrenete sekciju vašeg programa.
' Lets us set see the bookmark pane when we view the PDF
objPDF.PDFUseOutlines = True
Dodavanje bookmark je vrlo lako u Visual Basic koristeći mjwPDF. Na primer,hajde da dodamo četiri bookmarks prvoj stranici našeg dokumenta. Pozovite ih bilo gde u vašem kodu pre nego što pozovete PDFEndPage method.
'Lets add a bookmark to the start of page 1
objPDF.PDFSetBookmark "A. Page 1", 0, 0
'Now a bookmark half way down page 1
objPDF.PDFSetBookmark "A1. Page 1 Halfway down", 1, 300
'Now one at the end page 1
objPDF.PDFSetBookmark "A2. End of Page 1", 1, 500
'Another one a little further down and shows nesting
objPDF.PDFSetBookmark "A2-Sub1.", 2, 800
Prvi poziv PDFSetBookmark stvara bookmark,obeležen "A. Page 1". Sledeći parametar je dubina ovih bookmark. Zapišite: Počnite vašu dubinu sa 0. Poslednji parametar je y pozicija gde će bookmark pokrenuti stranicu. Tako,prvi poziv je stvaranje bookmark nazvan "A. Page 1" koji ukazuje na vrh 1.stranice . Sledeći poziv stvara bookmark nazvan "A1. Page 1 halfway down". Ima dubinu od 1 (tako da će biti mlađe dete našeg prvog bookmark) i pomicaće stranice 300 bodova dole. Ako pokrenete program,videćete sve bookmarks stvorene kao što ovaj ekran pokazuje.
Druga neophodnost da uče kada stvore PDF documente je kako da im dodaju slike. mjwPDF klasa dopušta vam da dodate bilo koju .jpg images vašem PDF dokumentu. Ako je slika na različitim formatima,moraćete da ga konvertujete u .jpg pre nego što budete u mogućnosti da ga dodate u vaš PDF file. Međutim, ako je slika u jpeg vrlo je lako dodati u PDF doc. Uzorak izvornog koda uključen sa ovim tutorialom,videćete logo.jpg file. Ispod ovog koda na kraju naše prve stranice i početak naše druge stranice. Na drugoj stranici dodaćemo naš logo na vrh levog ugla stranice.
objPDF.PDFEndPage
'Start page 2
objPDF.PDFNewPage
'Lets add an image to page 2
objPDF.PDFImage App.Path & "\logo.jpg", _
15, 15, 50, 50, "http://www.vb6.us"
Istaknuti kod koji dodaje logo. Mi zovemo to PDFImage funkcija. Prvi parametar je putanja ka jpeg file. Sledeća dva parametra su x i y koordinate za logo. Sledeća dva parametra određuju širinu i visinu slike. Ovi parametri mogu ostati i onda samo prikazati sliku u originalnoj veličini. Takođe možete odrediti samo visinu ili širinu i to će skalirati drugu stranu slike i čuvati je u proporciji. Poslednji parametar je takođe neobavezan, ali vam dopušta da odredite web site da idu na neke klikove na slici.
Ako sad pokrenete vaš program,videćete PDF file koji ima sva svojstva potpunog PDF dokumenta. Zaglavlja,oblike,slike i brojeve stranice. Kombinujući sve ove tehnike,trebalo bi da ste u mogućnosti da uradite sve što poželite. Download the Advanced PDF VB Tutorial source code sa vidite celo okno.
Ovo je obično pitanje. Takođe mjwPDF klas dopušta ti da uradite neke prilično lepe stvari,i dalje možete želeti da kupite control zbog jednog ili više razloga ispod:
Ako dobijete tačku gde treba da kupite PDF control,verovatno vam mogu preporučiti jednu. Pošaljite mi email i ja vam mogu pomoći. Inače,ako mjwClass radi za vas, besplatno ga koristite. I dalje želim da vas zamolim da mi pošaljete email samo da znam za šta ga koristite. Hvala.
Zapišite: Originalni izvorni kod za ovaj class (pre modifikacije) možete naći ovde.
This tutorial is translated to Serbo-Croatian language by Jovana Milutinovich from Webhostinggeeks.com.
Post new comment