Pridėkite PDF peržiūrą prie programos naudodami ActiveX. Esė apie PDF failų kūrimą Delphi pdf skaitymo komponentai

Šiam pavyzdžiui mums reikės šių komponentų, esančių Rave skirtuke. Taigi, pradėkime diegti mums reikalingus komponentus, būtent:

  • TRvNDRRašytojas
  • TRvRenderPdf
  • TBygtukas

Siūlau šiek tiek pasilikti ties šiais komponentais ir suprasti, kam jie tarnauja. Beje, informacijos apie juos gavau iš kelių knygų, kurias įsigijau progbook.ru. Todėl, jei norite įsigyti tinkamų knygų Delphi, kviečiame apsilankyti šioje parduotuvėje.

Taigi, pirmiausia turime TRvNDRWriter komponentą. Mums reikia šio komponento, kad galėtume įrašyti informaciją į pdf failą, nesvarbu, ką, tekstą ar grafinį, per srautą.

Procedūra TForm1.Button1Click(Siuntėjas: TObject); var Streams:TMemoryStream; begin Streams:=TMemoryStream.create; RvNDrWriter1.Stream:=Srautai; RvNDRWriter1.Execute; RvRenderPdf1.PrintRender(Streams, "test.pdf"); ShellExecute(Ranka, nulis, "test.pdf", "", "", SW_SHOW); FreeAndNil (Srautai); galas;

Kitas komponentas yra TRvRenderPdf. Mums jos reikia norint sukurti, tiksliau, piešti informaciją, nesvarbu, ar tai tekstas, ar grafika. Atitinkamai, paspaudę mygtuką, mums reikalingą informaciją įrašysime į savo pdf failą.

Bet per daug nepykime, o pereikime tiesiai prie mus dominančios temos, būtent programavimo :)

Pirmiausia turime sukurti įprastą tuščią pdf failą ir įdėti jį į mūsų programos šakninį aplanką.

Tiesą sakant, su šiuo kodu sukuriame srautą, kuriame nubraižysime reikiamą informaciją, po to pradedame vaizdavimą, nurodome savo galutinį pdf failą, į kurį bus traukiami duomenys ir pabaigoje uždarome srautą.

Atlikę tai kada, mums reikia įvykio, kuris įvyksta piešiant duomenis, šiame įvykyje parodysime mums reikalingą informaciją.

Pažiūrėkime į kodą. Pirmiausia įkeliu *.bmp vaizdą, sukuriu bmp kintamąjį ir TBitmap klasės objektą. Atsisiunčiau, kad galėčiau piešti į mūsų pdf failą.

Manau, kad neverta visko aiškiau aprašyti, todėl PrintHeader procedūra prideda užrašą prie dokumento antraštės, PrintFooter procedūra prideda užrašą dokumento pabaigoje. Procedūra PrintBitmap prideda prie dokumento paveikslėlį, SetFont procedūra nustato reikiamą dokumento šriftą, FontColor – norimą dokumento šrifto spalvą.

Visos tolesnės grafinės funkcijos ir procedūros yra lygiai tokios pačios kaip ir išvesties grafinę informaciją ant kitų komponentų drobės.

Naudoju funkciją NewPage, kad sukurčiau naują lapą dokumente. Viskas, kas bus pridėta po jo, kad būtų rodoma informacija, bus rodoma naujame dokumento lape.

Svarbu kad visi moduliai: RpRender, RpRenderPDF, RpDefine, RpBase, RpFiler, RpRave, RpCon būtų prijungti prie projekto!

Šiame straipsnyje apžvelgsime, kaip sukurti savo pdf-dokumentus, o kitame straipsnyje apžvelgsime, kaip galite peržiūrėti pdf-dokumentus savo projektuose, taip pat spausdinti turinį, naršyti dokumente ir pan.

Tam mums reikia komponentų iš skirtuko Rave. Įdiegkime komponentus, kurių mums reikia, ir tai yra:

  • TRvNDRRašytojas
  • TRvRenderPdf
  • TBygtukas

Komponentas TRvNDRRašytojas skirtas įrašyti pdf-failo informacija (tekstas, grafika) per srautą.

Komponentas TRvRenderPdf skirta informacijai (tekstui, grafinei ir kt.) kurti ir piešti. Na, o kai paspausite mygtuką, mes ką nors įvesime į savo pdf-failas.

Apie teoriją daug nerašysime, o pereisime tiesiai prie programavimo, bet pirmiausia turime sukurti įprastą tuščią pdf-failą ir įdėkite jį į programos šaknį. Šalia renginio Paspaudus Mygtukui parašysime šį kodą:

procedūra TForm1. Button1Click(Siuntėjas: TObject); var Srautai: TMemoryStream; begin Srautai: = TMemoryStream. sukurti; RvNDrWriter1. Srautas := Srautai; RvNDRWriter1. Vykdyti ; RvRenderPdf1. PrintRender(Streams, "test.pdf"); ShellExecute(Handle, nil, "test.pdf" , "" , "" , SW_SHOW) ; FreeAndNil (Srautai); galas ;

Sukuriame srautą, kuriame nubraižysime visą informaciją, tada pradedame atvaizduoti, nurodome failą, į kurį bus traukiami duomenys, o pabaigoje sunaikiname srautą.

Tai dabar, mums reikia įvykio, kuris įvyksta braižant duomenis, kuriame parodysime visą savo informaciją. Komponento pasirinkimas TRvNDRRašytojas ir peržiūrėkite šio komponento įvykių sąrašą, po kurio randame įvykį OnPrint ir šiuo atveju rašome šį kodą:

procedūra TForm1. Spausdinti(Siuntėjas: TObject); begin bmp: = TBitmap. Sukurti ; bmp. LoadFromFile("test.bmp"); su RvNDRWriter1 pradėkite SetFont("Arial" , 16) ; Šrifto spalva: = clGreen; Spausdinti ("Test tekstas"); PrintHeader ("Pradėti PDF failą" , pjCenter); PrintFooter ("Pabaigti PDF failą" , pjCenter); LineTo(10, 10) ; SpausdintiBitmap(1, 1, 1, 1, bmp); galas ;

FreeAndNil(bmp); galas ; Na, pirmiausia įkeliame vaizdą.*.bmp , natūraliai kintamas bmp , turime klasės objektą TBitmap pdf. Atsisiunčiame jį, kad vėliau nupieštume savo

- dokumentas. Ir tada, manau, viskas aišku, procedūra Spausdinimo antraštė - parodo įrašą dokumento (puslapio) pavadinime, procedūrą Spausdinti Footer - rodo užrašą dokumento (puslapio) pabaigoje. Procedūra PrintBitmap - išveda vaizdą į dokumentą, procedūrą SetFont - nustato dokumento šriftą, procedūrąŠrifto spalva


- nustato dokumento šrifto spalvą.

publikavimo data 2005-09-23 07:00 Esė apie PDF failų kūrimą Pastaruoju metu internete buvo aptikta daug PDF keitiklių, skaitytuvų ir rašančių. Pati programa kainuoja nuo 10 USD iki 300 USDšaltinis

už daug didesnius pinigus kaina prasideda nuo 200$ ir vienoje vietoje (pasidomėjęs tuo naršiau internete) net nuo 900 eurų. Ši problema mane sudomino programavimo požiūriu, todėl atkreipiu jūsų dėmesį į rezultatus. (Šiuos rezultatus gavau tyrinėdamas PDF failo vidų, kai jį atidarote totalus vadas

per F3) :=

Įprastą PDF failą sudaro keturios dalys

Kas tai

? Tai įprasta nuoroda į PDF specifikacijos versiją. Kuris yra pirmoje PDF failo eilutėje. Pavyzdžiui, „%PDF-1.3“ Septintoje „Acrobat“ versijoje, kuri buvo išleista kažkur šių metų vasaros pradžioje, šis skaičius yra „%PDF-1.7“, tačiau tai nėra produkto versija, tai yra specifikacija. versija. Antroji PDF eilutė yra maža santrumpa (matyt, skirta naudoti ateityje) „%vgPU“

Visi suprato pirmąją PDF dalį. ?

Kaip vadinasi antroji dalis

Atsakymas labai paprastas: tai yra objektų seka, kurios aprašymas ir antraštė pateikiami teksto forma. Kiekvienas objektas yra teksto fragmentas pavyzdžiui, su serijos numeriu pavadinime

Visi objektai skirstomi į netiesioginius ir tiesioginius. Visi yra netiesioginiai, ir dauguma jų yra po žodžio dideja turėti savo kūne delimetrą"<<", означающее начало данных объекта. И в конце данных закрывающий делиметер ">>" ir kodinis žodis endobj

Tiesioginių objektų kūne neturėtų būti atidarymo ir uždarymo skiriamųjų ženklų.<<", ">>>"Visi netiesioginiai objektai pasiekiami per kryžminių nuorodų lentelė. Tai rodo nuorodas poslinkio forma nuo failo pradžios iki objekto pradžios (objekto duomenys (eilutės) yra atskirti #13#10 arba #13 )

„Svarbiausio“ objekto tipas PDF failo tekste turi puikų pavadinimą "/Katalogas"

4 0 obj<< /Type /Catalog /Pages 2 0 R /OpenAction [ 5 0 R /XYZ null 364 1 ] /PageMode /UseNone >>endobj

Tiesą sakant, minimalaus „Hello world“ PDF failo turinyje turėtų būti 3 „pagrindiniai“ objektai. Leiskite išvardyti juos pagal tipą:

  • "/Katalogas" yra nuoroda: į puslapio medį ( /Puslapiai)
  • "/Puslapiai" yra nuoroda į dokumento puslapių grupę (pvz., 2 0 obj > endobj)
  • "/Puslapis" yra nuoroda į objektus, susijusius su konkrečiu puslapiu. (Pavyzdžiui, 3 0 obj > /Pasukti 0 >>)
Ir keletas smulkių

Išanalizuokime puslapio objektą:

  • /Pasukti laukas, nurodantis, kiek laipsnių turi būti pasuktas puslapio vaizdas, kai jis rodomas programoje
  • /MediaBox Ir /CropBox puslapių dydį apibūdinančius laukus
  • /Tėvai nuoroda į pirminį objektą "/Puslapiai"
  • /IštekliaiŠiame lauke aprašomas koks šriftas turi būti naudojamas rodant puslapį (šriftas yra atskiras objektas), o ProcSet nustatymas šis nustatymas nurodo koks turinys yra šio puslapio duomenų sraute (taip pat gali būti apibrėžtas kaip objektas, o ne kaip laukas )
  • /TurinysĮdomiausias laukelis objekte „puslapis“ pateikia nuorodą į šio puslapio turinio objektą ir: jei šio lauko objekte „puslapis“ nėra, tai puslapis tuščias.
Puslapio turinys:
Objektas "srautas" 4 0 obj > srautas BT /F12 9 Tf 10 782 TD 0 -12.5 TD (Maks. Fokinas) Tj 0 -12.5 TD (mnb) Tj 0 -12.5 TD () Tj 0 -12.5 TD (Maks. Privet) Tj 0 -12. (1) Tj 0 -12,5 TD (1) Tj 0 -12,5 TD (2) Tj 0 -12,5 TD (3) Tj 0 -12,5 TD (45) Tj ET galutinis srautas endobj /Length 305 šiame lauke rodoma, kiek baitų yra žodis srautas prie žodžio galinė srovė

Paprasčiausias variantas yra nekoduotas ir nesuspaustas duomenų srautas objekte srautas. Tai taikoma tik operatoriams BT Ir ET

BT Begins a Text Object – apibūdina teksto pradžią ET Ends a Text Object. - apibūdina teksto pabaigą /F12 9 Tf

  • /F12 tai yra kodinis objekto pavadinimas, apibūdinantis šiame puslapyje naudojamą šriftą
  • 9 tai šrifto dydis
  • Tf tai yra operatorius, kuris apibūdina tai duota linija garo objekte yra šrifto ir dydžio nustatymas
10 782 TD yra skaičiai, kuriais prasideda ši eilutė (skaičiuojama nuo viršutinio kairiojo kampo) Tj yra naujas eilutės operatorius Na, skliausteliuose yra mūsų tekstas

Aš čia nepaaiškinu užkoduoto srauto. Jis pagrįstas RC4, RC5, MD5 algoritmais.

Kas yra objektas Šriftas 12 0 obj >

  • /Tipas /ŠriftasŽinoma, tipo pavadinimas
  • /Potipis /1 tipas potipio pavadinimas
  • /Vardas /F7 F7 tai kodinis pavadinimas

PDF palaiko kelių tipų šriftus. Jie išvardyti žemiau

  • 1 tipas, įskaitant poaibius ir kelis pagrindinius momentinius vaizdus
  • 3 tipas
  • TrueType, įskaitant poaibius
  • Tipas 0
Jei atvirai, aš nesupratau 3 tipo, TrueType, įskaitant poaibius, 0 tipo, negaliu nieko apie juos pasakyti
1 tipas yra šie šriftai Courier Courier-Bold Courier-BoldOblique Courier-Oblique Helvetica Helvetica-Bold Helvetica-BoldOblique Helvetica-Oblique Times-Roman Times-Bold Times-Italic Times-BoldItalic simbolis

20 0 obj > endobj Tai objektas su kodiniais pirmojo tipo šriftų pavadinimais. Naudodami šį kodinį pavadinimą galite lengvai gauti patį objektą šriftas. 6 0 obj >

VISI: tai yra minimumas Susideda iš šių objektų: "katalogas" , "puslapiai", "puslapis", "ištekliai"(pasirinktinai gali būti puslapio objekto laukas), neįvestas objektas "srautas", objektų grupė "šriftas"

Kas nutiko ? Tiesą sakant, tai įprasta teksto lentelė, jis prasideda žodžiu xref o jo turinys turi nuorodas į visus netiesioginius objektus dokumente. Štai pavyzdys xref 0 27 0000000021 65535 f 0000000016 00000 n 0000000105 00000 n 0000000169 00000 n 00000000300000000000 t 0000 n 0001725 00000 n 0000001850 00000n 0000000024 000 01 f 0000002751 00000 n 0000002831 00000 n 0000000000 00001 f 0000002915 000000 n 0005 0 27 Šie skaičiai reiškia:

  • 0 – pirmasis objekto numeris lentelėje
  • 27 - lentelės elementų skaičius

Pirmasis lentelės elementas visada turi formą " XXXXXXXXXX 65535 f" kur X yra skaitmuo, o 65535 yra numatytoji pirmojo lentelės elemento reikšmė. Simbolis "f" reiškia " Laisvas“, tai yra, objektas nenaudojamas

Išanalizuokime šios lentelės elementą.

  • Pirmieji 10 skaitmenų yra poslinkis nuo failo pradžios iki objekto pradžios.
  • 0000000016 reiškia, kad 16 baitų nuo failo pradžios pamatysite pirmą objekto paminėjimą, tai yra, pavyzdžiui, 4 0 obj

Antrieji penki skaitmenys yra failo generavimo numeris. Jei failas buvo ką tik sukurtas, tada jų visada yra nulis. Jei failas yra modifikuotas, šis skaičius padidėja vienu. Tai yra, 0000000024 00001 f

Kanoninis PDF failas, kurį ką tik sukūrėme, turi tik vieną lentelę. Bet jei failas yra redaguojamas, tokių lentelių gali būti daug.

Lentelių ryšys atliekamas naudojant paskutinį elementą ir kodinis žodis startxref

Kanoninis, naujai sukurtas PDF failas turi tik vieną lentelę, po lentelės yra elementas priekaba O po anonso pasirodo kodinis žodis startxref, nurodant poslinkį nuo failo pradžios iki lentelės pradžios, štai pavyzdys. anonsas > startxref 173 %%EOF Tai reiškia, kad po 173 baitų nuo dokumento pradžios bus kodo žodis xref. Bet jei failas buvo redaguotas, paskutinis failo anonsas atrodys taip: xref 0 3 0000000000 65535 f 0000003609 00000 n 0000003832 00000 n anonsas ] Bet pasukti lentelę OF7, %xref 1, kur3 %xref 1 nuorodos taškai startxref 173, tada rasime tokią lentelę, o už jos priekabą, kurioje bus laukas /Ankstesnis 3896 3 16 0000000016 00000 N 0000000664 00000 N 0000000936 00000 N 0000001106 00000 N 00001133 00000 N 0000002760 00000 N 0000003438 00000 N 516 00000 N 0000000776 00000 N 0000000916 00000 n priekaba ] >> startxref 567 %%EOF

Šis laukas /Ankstesnis 3896 nukreipia mus į ankstesnę lentelę ir nuorodą startxref 567 rodo į kitą lentelę ir taip beveik iki begalybės, kol į kitą lauką startxref nematysime 0 . Tai reiškia, kad mes perskaitėme visas lenteles.

Šiam rašiniui, žinoma, trūksta šaltinio kodo. Štai čia: pristatomi du pagrindiniai moduliai" PDF dokumentas"ir pagalbinis" PDFBaseFonts"

Prie medžiagos pridedami failai:

  • Modulių PDFDocument.pas ir PDFBaseFonts.pas šaltinio kodas (16 K) atnaujinta nuo 2005-09-23 7:02:00

Medžiagos aptarimas [ 07/31/2006 06:33 ] 7 žinutės

Kūrėjų deklaruotos komponentų galimybės:

  • Vektorius ir rastrinė grafika PDF dokumentuose
  • Apsaugokite PDF dokumentus slaptažodžiu
  • AcroForms/PDF formų palaikymas
  • Vandens žymės
  • Karta PDF dokumentai su vidiniais ir Išorinės nuorodos, žiniatinklio nuorodos ir žymės
  • Visiškas Unicode palaikymas
  • Įvairių šriftų palaikymas, teksto formatavimas, kelių stulpelių teksto išdėstymas
  • TCanvas palaikymas
  • Integruotas archyvatorius, skirtas suspausti teksto ir grafinę informaciją dokumente
  • Konvertuoti TIFF į PDF

Pavyzdžiui, nusprendžiau sukurti demonstracinę programą, kuri pateikiama kartu su komponentu THotPDF. Programa gana paprasta – sugeneruoja PDF su dviem nuorodomis ir paprastu tekstu. Kodas taip pat paprastas ir aiškus:

procedūra TForm1. HelloWorldButtonClick(Siuntėjas: TObject); startHPDF. BeginDoc ; HPDF. Dabartinis puslapis. SpausdintiHipersaitas(20, 35, "Svetainė: " + PagrindinisRedaguoti Tekstas, PagrindinisRedaguoti. Tekstas); HPDF. Dabartinis puslapis. SetFont("Times New Roman", , 16); HPDF. Dabartinis puslapis. Nustatyti RGBHyperlinkColor(clRed); HPDF. Dabartinis puslapis. SpausdintiHipersaitą (20, 50, "Užsakymo puslapis: " + PirktiRedaguoti. Tekstas, PirktiRedaguoti. Tekstas); HPDF. Dabartinis puslapis. SetFont("Times New Roman", , 14); HPDF. Dabartinis puslapis. TextOut(20, 75, 0, "Norėdami naršyti spustelėkite nuorodą"); HPDF. EndDoc ; galas ;

Net nesigilindami į komponento veikimo subtilybes galite suprasti, kas ir kaip vyksta šiame demonstraciniame pavyzdyje. Paleisime, pažiūrėkime išvaizda sugeneruotas dokumentas:

Šie du mėlyni stačiakampiai dokumente yra nuorodos į du puslapius... o paprastas tekstas „Spustelėkite nuorodą, kad naršytumėte“ išvis niekur nesimato. Nors turime pagerbti, paspaudus ant stačiakampio nuoroda iš tikrųjų atsidaro. Apskritai, arba kūrėjai suskubo skelbti Delphi iki XE3 palaikymą, arba bandomoji versija veikia taip įdomiai, bet paleidus šią demonstraciją kažkaip dingo noras naudotis THotPDF net ir nemokamai. Eikime toliau.

4. PDF kūrimo pilotas

Kaina: nuo 450 USD be šaltinio kodų iki 9950 USD (!!!) su šaltinio kodais
5-XE4
http://www.colorpilot.com/pdflibrary.html#download

Biblioteka kainuoja beveik tiek pat, kiek Delphi XE3 Professional... Na, gerai, pažiūrėkime, kokia tai biblioteka.

Kūrėjų nurodytos savybės:

  • Išplėstas metodų ir savybių rinkinys, skirtas lengvas kūrimas PDF;
  • Skaityti ir sujungti esamus PDF dokumentus;
  • PDF dokumento puslapių įtraukimas ir pašalinimas;
  • Unicode palaikymas;
  • Vandenženklių kūrimas kiekvienam puslapiui;
  • Pridėti miniatiūras į PDF dokumentą;
  • Šriftų naudojimas ir įdėjimas (TrueType, OpenType, Type1 ir kt.);
  • Kurti interaktyvius PDF dokumentus naudojant JavaScript ir hipersaitus;
  • Interaktyvių AcroForm elementų palaikymas: teksto įvesties laukai, mygtukai, radijo mygtukai, išskleidžiamieji sąrašai, žymės langeliai;
  • sukurtų PDF dokumentų šifravimas ir apsauga slaptažodžiu;
  • Dokumentų turinio kūrimas ir valdymas;
  • Pasiekite HDC, kad galėtumėte piešti PDF puslapiuose naudodami WinAPI funkcijas.
  • Įvairių formatų vaizdų naudojimas (JPEG, TIFF, PNG, BMP, GIF);
  • Anotacijų kūrimas ir naudojimas;
  • Kurti PDF dokumentus diske arba atmintyje;
  • Ištraukite tekstą iš PDF dokumentų;

Apskritai, gana įspūdingas funkcijų sąrašas. Pažiūrėkime, kaip kai kurios iš šių funkcijų veikia praktiškai. Atsisiųskite demonstracinę versiją ir įdiekite ją.

Įdiegę paleiskite Delphi (mano atveju tai Delphi XE3) ir eikite į meniu:

Komponentas – Importuoti komponentą – Importuoti tipo biblioteką

Sąraše ieškome bibliotekos

Importuojame, kuriame naujas projektas ir prijunkite modulį prie naudojimo būdų PDFCreatorPilotLib_TLB.

Dabar galime išbandyti biblioteką naudodami kokį nors gyvą pavyzdį. Pirmiausia pabandykime sugeneruoti dokumentą su paprastu tekstu:

procedūra TForm1. Button1Click(Siuntėjas: TObject); var fnt: sveikasis skaičius; pradžia ( inicijavimas ) PDF := TPDFDocument4. Sukurti (nulis); PDF. SetLicenseData ("demo" , "demo" ); fnt:=pdf. AddFont („Verdana“, klaidinga, klaidinga, klaidinga, klaidinga, fcANSI); PDF. UseFont(fnt, 14); PDF. ShowTextAt (20, 40, "SVEIKA, PDF!"); (išsaugoti) PDF. SaveToFile("HelloPDF.pdf", tiesa); PDF. Sunaikinti ; galas ;

Paleiskite programą ir pažiūrėkite į sukurtą PDF dokumentą:

Dabar pabandykime įrašyti rusišką tekstą į failą:

procedūra TForm1. Button1Click(Siuntėjas: TObject); pradėti ( inicijavimas ) (...) PDF. ShowTextAt(20, 40, "Sveiki, PDF!"); (išsaugoti) (...) pabaiga ;


Galbūt kur nors klasės ypatybėse reikia ką nors sukonfigūruoti, iškviesti kokį nors metodą, kuris įjungs Unicode palaikymą, BET už tokius pinigus norėčiau gauti biblioteką, kuri veiktų iš karto be jokių vargo su nustatymais ir keitimais. .. Beje, nuorodos įterpimo būdas (AddHyperLink) taip pat nepasiteisino – dokumentas liko nesugadintas, nepaisant to, kad nuoroda neva buvo įdėta. Tačiau turime atiduoti pagarbą, bandymą įterpti naujas dokumentas anksčiau sukurtas PDF - jis veikė su kaupu - dokumentas buvo įdėtas į naują puslapį taip, kaip turėtų, be stulpelių.

5. PDFtoolkit VCL v4.0.1.293

Kaina: nuo 349 USD be šaltinių iki 499 USD su šaltiniais
Palaikomos Delphi versijos: 6-XE4
Bandomosios versijos atsisiuntimo puslapis: http://www.gnostice.com/PDFtoolkit_VCL.asp?show=downloads

Internete yra gana daug teigiamų atsiliepimų apie šią „Gnostice“ komponentų biblioteką.

Pagal galimybes PDF įrankių rinkinys beveik nuo 1 iki 1 atitinka PDF kūrėjas Pilotas, tie. gali „suklijuoti“ PDF failus, atpažinti tekstą, įterpti nuorodas, ieškoti dokumentų ir pan. Tačiau, skirtingai nei PDF Creator Pilot, PDF įrankių rinkinys, jei gtPDFDocument1. IsLoaded, tada pradėkite gtPDFDocument1. TextOut( "Sveiki, Pasaulis!" , IntToStr (gtPDFDocument1. PageCount ) , //puslapių, į kuriuos bus įterptas tekstas, diapazonas gtPDFDocument1. GetPageSize(gtPDFDocument1. Puslapių skaičius, muPixels) . Plotis/2 //įterpti tekstą puslapio centre gtPDFDocument1. GetPagesize(gtPDFDocument1. Puslapių skaičius, muPixels) . Aukštis/2); (išsaugokite dokumentą) gtPDFDocument1. SaveToFile("modified_doc.pdf"); galas ;

pagaliau gtPDFDocument1. Laisvas galas;

Žinoma, mano užduoties atžvilgiu PDFtoolkit pasirodo praktiškai nenaudingas, nes... Man įdomu kurti PDF failus nuo nulio, bet tiems, kurie rašo savo PDF peržiūros programą, manau, kad ši biblioteka turėtų būti daugiau nei tinkama. Taigi, ką mes turime galų gale? Yra 5įvairių sprendimų skirtas kurti ir dirbti su PDF dokumentais Delphi. Kiekvienas sprendimas turi ir privalumų (nemokamų, sudėtingų) ir trūkumų (be galo didelės išlaidos, problemos su Unicode ir kt.). Kalbant apie mano problemą, visi sprendimai turės būti „dirbami su failu“. Kita vertus, yra daug mokamų ir nemokamas paslaugas


sugeneruoti PDF, bet, prisiminus, kad tokios paslaugos paprastai staiga nunyksta, kažkaip nesinori su jomis įsitraukti. Žinoma, yra dar vienas sprendimas - naminis ir ne visai Delphi tema, bet apie tai kada nors kitą kartą, bet kol kas eisiu ir pagalvosiu, ką daryti su DelphiFeeds klientu.

Iki pasimatymo internete!

  • Yra du pagrindiniai būdai, kaip organizuoti PDF dokumentų peržiūrą programoje.
  • Naudojant ActiveX technologiją;

Specialių komponentų naudojimas. Komponentai darbui su PDF yra ne visose Delphi laidose ir dažniausiai jų reikia ieškoti ir įdiegti papildomai. Tuo pačiu metu, norint naudoti „ActiveX“, tereikia turėti atitinkamą programinė įranga . Tokiu atveju Adobe Acrobat

Reader (nemokamas) arba Adobe Acrobat.

  • Darbas su ActiveX gali būti suskirstytas į du etapus.
  • Tipo bibliotekos ar komponentų importavimas;
Tiesą sakant, importuotų įrankių naudojimas programoje.Komponentų importavimas

ActiveX

Norėdami importuoti komponentus, naudokite komandą „Komponentas“ – „Importuoti komponentą“ pagrindiniame „Delphi“ meniu. Pats importavimo procesas įgyvendinamas kaip vedlys.

Po to turite nuspręsti, ką daryti su importuotais komponentais. Kadangi planuojame juos naudoti kaip „Delphi“ komponentus, pasirinkite „Įdiegti į naują paketą“.

Dabar belieka nurodyti naujai sukurto paketo pavadinimą.

Paspaudus mygtuką „Baigti“, PDF peržiūros programos „ActiveX“ komponentai bus importuoti į „Delphi“.

ŽiūrėtiPDF priede

Norėdami sukurti PDF peržiūros priemonę programoje naudodami ActiveX, jums reikia TAcroPDF komponento. Jo importavimo procesas išsamiai aprašytas aukščiau.

Kaip pavyzdį sukurkime šią programą. Įdėkite TAcroPDF, TOpenDialog ir TButton komponentus į formą, kaip parodyta toliau esančioje ekrano kopijoje.

Kai paspausite mygtuką, iškviečiame failo atidarymo dialogo langą, kad būtų galima pasirinkti PDF failasŽiūrėti.

Dalintis