Kreiranje naprednog PDF dokumenta u VB

Level:
Level3

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).

  • Point 1 is 300 pixels to the right, 150 pixels from the top
  • Point 2 is 400 pixels to the right, 150 pixels from the top
  • Point 3 is 400 pixels to the right, 250 pixels form the top
  • Point 4 is 300 pixels to the right, 250 pixels from the top.

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.

Zašto bih poželeo da kupim PDF control?

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:

  • Morate dodati druge slike pored JPGs osim u letu.
  • Želite da stegnete ili šifrujete vaš pdf file.
  • Treba vam kod koji će više optimizovati za memorijski prostor ili brzinu procesora.
  • Treba vam podrška sa uvažene kompanije.
  • Baš volite da trošite pare za zabavu

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.

If you enjoyed this post, subscribe for updates (it's free)