Adăugați vizualizarea PDF în program folosind ActiveX. Eseu despre crearea fișierelor PDF Componentele de citire PDF Delphi

Pentru acest exemplu, vom avea nevoie de următoarele componente, care se află în fila Rave. Și așa, să începem să instalăm componentele de care avem nevoie, și anume:

  • TRvNDRWriter
  • TRvRenderPdf
  • TBbuton

Îmi propun să mă oprim puțin asupra acestor componente și să înțelegem la ce servesc. Apropo, am primit informații despre ele din câteva cărți pe care le-am achiziționat progbook.ru. Prin urmare, dacă doriți să cumpărați cărți decente pe Delphi, atunci sunteți binevenit să vizitați acest magazin.

Deci, mai întâi avem componenta TRvNDRWriter. Avem nevoie de această componentă pentru a scrie informații într-un fișier pdf, indiferent de ce, text sau grafic, printr-un flux.

Procedura TForm1.Button1Click(Expeditor: TObject); var Streams:TMemoryStream; start Streams:=TMemoryStream.create; RvNDrWriter1.Stream:=Stream; RvNDRWriter1.Execute; RvRenderPdf1.PrintRender(Streams, "test.pdf"); ShellExecute(Handle, nil, "test.pdf", "", "", SW_SHOW); FreeAndNil(Streamuri); Sfârşit;

Următoarea componentă este TRvRenderPdf. Avem nevoie de el pentru a crea, sau mai degrabă pentru a desena, informații, fie ele text sau grafice. În consecință, după ce facem clic pe butonul, vom scrie informațiile de care avem nevoie în fișierul nostru pdf.

Dar să nu dezvăluim prea mult, dar să trecem direct la subiectul care ne interesează și anume programarea :)

Mai întâi, trebuie să creăm un fișier pdf gol obișnuit și să-l plasăm în folderul rădăcină al programului nostru.

De fapt, cu acest cod creăm un flux în care vom desena informațiile de care avem nevoie, după care începem redarea, indicăm fișierul nostru pdf final în care vor fi trase datele și la final închidem fluxul.

După ce executăm acest moment, avem nevoie de un eveniment care apare la desenarea datelor; în acest caz vom afișa informațiile de care avem nevoie.

Să ne uităm la cod. Pentru început, încarc o imagine *.bmp, creez o variabilă bmp și un obiect din clasa TBitmap. Îl descarc pentru a putea desena apoi fișierul nostru pdf.

Cred că nu merită să descriem totul în mod clar și, prin urmare, procedura PrintHeader adaugă o inscripție la antetul documentului, procedura PrintFooter adaugă o inscripție la sfârșitul documentului. Procedura PrintBitmap adaugă o imagine documentului, procedura SetFont setează fontul necesar pentru document, procedura FontColor setează culoarea dorită a fontului documentului.

Toate funcțiile și procedurile grafice ulterioare sunt exact aceleași ca pentru ieșire informatii grafice pe pânză de alte componente.

Folosesc funcția NewPage pentru a crea o foaie nouă într-un document. Tot ceea ce va fi adăugat după acesta pentru a afișa informații va fi afișat pe o nouă foaie a documentului.

Important astfel încât toate modulele: RpRender, RpRenderPDF, RpDefine, RpBase, RpFiler, RpRave, RpCon să fie conectate la proiect!

În acest articol, vom vedea cum să vă creați propriul dvs pdf-documente, iar în articolul următor vom vedea cum puteți vizualiza pdf-documentele din proiectele dvs., precum și conținutul tipărit, navigați prin document și așa mai departe.

Pentru aceasta avem nevoie de componentele din tab Rave. Să instalăm componentele de care avem nevoie pentru a funcționa și acestea sunt:

  • TRvNDRWriter
  • TRvRenderPdf
  • TBbuton

Componentă TRvNDRWriter destinat înregistrării în pdf-informații despre fișier (text, grafic) prin flux.

Componentă TRvRenderPdf conceput pentru crearea și desenarea informațiilor (text, grafic, etc.). Ei bine, când apăsați un buton, vom introduce ceva în nostru pdf-fişier.

Nu vom scrie prea multe despre teorie, dar vom trece direct la programare, dar mai întâi trebuie să creăm un gol obișnuit. pdf-file și puneți-l în rădăcina programului. Alături de eveniment OnClick Pentru butonul nostru vom scrie următorul cod:

procedura TForm1. Button1Click(Expeditor: TObject); fluxuri var: TMemoryStream; începe fluxurile: = TMemoryStream. crea ; RvNDrWriter1. Flux := Fluxuri; RvNDRWriter1. A executa ; RvRenderPdf1. PrintRender(Streams, "test.pdf"); ShellExecute(Handle, nil, "test.pdf" , "" , "" , SW_SHOW) ; FreeAndNil(Streamuri); Sfârşit ;

Creăm un flux în care vom desena toate informațiile, apoi începem randarea, specificăm fișierul în care vor fi trase datele, iar la final distrugem fluxul.

Gata acum, avem nevoie de un eveniment care are loc la desenarea datelor, în care vom afișa toate informațiile noastre. Selectarea componentei TRvNDRWriterși parcurgeți lista de evenimente a acestei componente, după care găsim evenimentul OnPrintși în acest caz scriem următorul cod:

procedura TForm1. Print(Expeditor: TObject); începe bmp: = TBitmap. Crea ; bmp. LoadFromFile("test.bmp"); cu RvNDRWriter1 începeți SetFont("Arial" , 16); FontColor: = clGreen; Print("Test text"); PrintHeader(„Începe fișierul PDF” , pjCenter); PrintFooter(„Încheierea fișierului PDF” , pjCenter); LineTo(10, 10) ; PrintBitmap(1, 1, 1, 1, bmp) ; Sfârşit ; FreeAndNil(bmp); Sfârşit ;

Ei bine, mai întâi, încărcăm imaginea. *.bmp, variabilă în mod natural bmp, avem un obiect de clasă TBitmap. Îl descarcăm pentru a-l desena apoi în nostru pdf-document.

Și apoi, cred că totul este clar, procedura PrintHeader- afiseaza inscriptionarea in titlul documentului (pagina), procedura PrintFooter- afișează inscripția la sfârșitul documentului (pagina). Procedură PrintBitmap- scoate o imagine într-un document, procedură SetFont- setează fontul documentului, procedură FontColor- setează culoarea fontului documentului.


data publicării 23.09.2005 07:00 Eseu despre crearea fișierelor PDF

Recent, pe internet au fost descoperite o mulțime de convertoare, cititori și scriitori PDF. Și marea majoritate dintre ele sunt oferite pentru bani. Programul în sine variază de la 10 USD la 300 USD. Și sursă pentru mult mai mulți bani, prețul începe de la 200 de dolari și într-un singur loc (după ce m-am interesat de asta am navigat pe internet) până la 900 de euro.

Această problemă m-a interesat în ceea ce privește programarea și vă aduc în atenție rezultatele. (Aceste rezultate au fost obținute de mine în timp ce studiam interiorul unui fișier PDF când îl deschideți în comandant total prin F3)

Un fișier PDF tipic este format din patru părți :=

Ce este

? Aceasta este o referință comună la versiunea specificației PDF. Care este prezent în prima linie a fișierului PDF. De exemplu, „%PDF-1.3” În cea de-a șaptea versiune de Acrobat, care a fost lansată undeva la începutul verii acestui an, acest număr este „%PDF-1.7”, dar aceasta nu este o versiune de produs, aceasta este o specificație versiune. A doua linie a PDF-ului este o abreviere mică (aparent destinată utilizării viitoare) „%vgPU”

Toată lumea și-a dat seama de prima parte a PDF-ului.

Cum se numește a doua parte ?

Răspunsul este foarte simplu: aceasta este o secvență de obiecte, a căror descriere, precum și antetul, sunt prezentate sub formă de text.

Fiecare obiect este fragment de text cu un număr de serie în nume, de exemplu "4 0 obj"

  • 4 acesta este numărul de serie al obiectului
  • 0 acesta este numărul (re)generării fișierului, adică atunci când fișierul este actualizat (editat), atunci acest număr crește
  • obj acesta este un cuvânt cod care înseamnă că am întâlnit un obiect în corpul documentului

Toate obiectele sunt împărțite în indirecte și directe. Toate sunt indirecte, iar majoritatea sunt după cuvânt obj au un delimetru în corp"<<", означающее начало данных объекта. И в конце данных закрывающий делиметер ">>" și cuvânt cod endobj

Obiectele directe nu ar trebui să aibă delimitatori de deschidere și de închidere în corpul lor”<<", ">>>"Toate obiectele indirecte sunt accesibile prin tabel de referințe încrucișate. Reprezintă referințe sub forma unui offset de la începutul fișierului până la începutul obiectului (Datele (liniile) din obiect sunt separate #13#10 sau #13 )

Tipul de „cel mai important” obiect din corpul unui fișier PDF are un nume mândru "/Catalog"

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

De fapt, ar trebui să existe 3 obiecte „principale” în corpul unui fișier PDF minim „Hello world”. Permiteți-mi să le enumar după tip:

  • "/Catalog" conține un link: către arborele paginii ( /Pagini)
  • „/Pagini” conține un link către un grup de pagini de document (De exemplu 2 0 obj > endobj)
  • "/Pagină" conține un link către obiecte legate de o anumită pagină. (De exemplu 3 0 obj > /Rotate 0 >>)
Și câteva minore

Să analizăm obiectul pagină:

  • /Roti un câmp care indică câte grade trebuie rotită imaginea paginii când este afișată în program
  • /MediaBoxȘi /CropBox câmpuri care descriu dimensiunea paginii
  • /Mamă referire la obiectul părinte „/Pagini”
  • /Resurse acest câmp descrie ce font trebuie utilizat la afișarea paginii (un font este un obiect separat), iar setarea ProcSet indică ce conținut este în fluxul de date al acestei pagini (poate fi definit și ca obiect, nu ca câmp )
  • /Conținut Cel mai interesant câmp din obiectul „pagină” oferă un link către obiectul de conținut al acestei pagini și: dacă acest câmp este absent în obiectul „pagină”, atunci pagina este goală
Conținutul paginii:
Un obiect "curent" 4 0 obj > stream BT /F12 9 Tf 10 782 TD 0 -12.5 TD (Max Fokin) Tj 0 -12.5 TD (mnb) Tj 0 -12.5 TD () Tj 0 -12.5 TD (Max TD 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 endstream endobj /Lungimea 305 acest câmp arată câți octeți sunt în un cuvant curent la cuvânt fluxul final

Cea mai simplă opțiune este un flux de date necodificat și necomprimat în obiect curent. Este limitat la operatori BTȘi ET

BT Begins a Text Object - caracterizează începutul textului ET Ends a Text Object. - caracterizează sfârşitul textului /F12 9 Tf

  • /F12 acesta este numele de cod al obiectului care caracterizează fontul folosit în această pagină
  • 9 aceasta este dimensiunea fontului
  • Tf acesta este un operator care caracterizează că linie datăîn obiectul steam există o setare de font și dimensiune
10.782 TD sunt numerele la care începe această linie (numărând din colțul din stânga sus) Tj este noul operator de linie Ei bine, în paranteze este textul nostru

Nu explic aici fluxul codificat. Se bazează pe algoritmii RC4, RC5, MD5.

Ce este un obiect Font 12 0 obj >

  • /Type /Font Desigur, numele tipului
  • /Subtip /Type1 numele subtipului
  • /Nume /F7 F7 acesta este numele de cod

PDF acceptă mai multe tipuri de fonturi. Ele sunt enumerate mai jos

  • Tip 1, inclusiv subseturi și „instantanee” multiple Master
  • Tip 3
  • TrueType, inclusiv subseturile
  • Tip 0
Sincer să fiu, nu am înțeles Tipul 3, TrueType, inclusiv subseturile, Tipul 0, nu pot spune nimic despre ele
Și Tipul 1 este următoarele fonturi Courier Courier-Bold Courier-BoldOblique Courier-Oblique Helvetica Helvetica-Bold Helvetica-BoldOblique Helvetica-Oblique Times-Roman Times-Bold Times-Italic Times-Bold Italic Simbol ZapfDingbats

20 0 obj > endobj Acesta este un obiect cu nume de cod pentru fonturile de primul tip. Folosind acest nume de cod, puteți obține cu ușurință obiectul în sine font. 6 0 obj >

TOȚI: adică minimul Constă din următoarele obiecte: „catalog”, „pagini”, „pagină”, „Resurse”(opțional poate fi prezent ca un câmp în obiectul pagină), obiect netipizat "curent", grup de obiecte "font"

Ce s-a întâmplat ? De fapt, este comun tabel text, începe cu cuvântul xref iar corpul său are legături către toate obiectele indirecte din document. Iată un exemplu xref 0 27 0000000021 65535 f 0000000016 00000 n 0000000105 00000 n 0000000169 00000 n 0000000356 0000000000000000000000000000000 - 0000 01725 00000 n 0000001850 00000 n 0000001967 00000 n 0000002084 00000 n 0000002203 00000 n 0000002326 00000 n 000000 500 500 500 00000000000 00 n 0000000024 0000 1 f 0000002751 00000 n 0000002831 00000 n 0000000000 00001 f 0000002915 00000 n 000005 000005 0 27 Aceste numere înseamnă următoarele:

  • 0 - primul număr de obiect din tabel
  • 27 - numărul de elemente ale tabelului

Primul element al tabelului are întotdeauna forma " XXXXXXXXXX 65535 f" unde X este o cifră și 65535 este valoarea implicită pentru primul element din tabel. Simbolul "f" înseamnă " gratuit„, adică obiectul nu este folosit

Să analizăm elementul acestui tabel.

  • Primele 10 cifre sunt decalajul de la începutul fișierului până la începutul obiectului.
  • 0000000016 înseamnă că la 16 octeți de la începutul fișierului veți întâlni prima mențiune a obiectului, adică, de exemplu, 4 0 obj

Cele doua cinci cifre sunt numărul de generare a fișierului. Dacă fișierul tocmai a fost creat, atunci acestea sunt întotdeauna zero. Dacă fișierul este modificat, atunci acest număr crește cu unu. Acesta este, 0000000024 00001 f

Fișierul PDF canonic pe care tocmai l-am creat are un singur tabel. Dar, dacă fișierul este editat, atunci pot exista o mulțime de astfel de tabele.

Relația dintre tabele se realizează folosind ultimul element și cuvânt cod startxref

Fișierul PDF canonic, nou creat are un singur tabel, după tabel există un element remorcăȘi după trailer vine cuvântul cod startxref, indicând decalajul de la începutul fișierului până la începutul tabelului, iată un exemplu. trailer > startxref 173 %%EOF Aceasta înseamnă că după 173 de octeți de la începutul documentului, cuvântul de cod va fi prezent xref. Dar, dacă fișierul a fost editat, atunci ultimul trailer din fișier va arăta ca: xref 0 3 0000000000 65535 f 0000003609 00000 n 0000003832 00000 n trailer ] >> startxref 173 Dar unde % ne întoarcem la EOF punctele de legătură startxref 173, apoi vom găsi următorul tabel, iar în spatele lui o remorcă care va avea un câmp /Anterior 3896 3 16 0000000016 00000 n 0000000664 00000 n 0000000936 00000 n 0000001106 00000 n 0000001133 00000 n 00000500000005000000500 00000 n 0000001811 00000 n 0000001992 00000 n 0000002180 00000 n 0000002360 00000 n 0000002760 00000002760 0000000000000000003 6 00000 n 0000000776 00000 n 0000000916 00000 n trailer ] >> startxref 567 %%EOF

Acest câmp /Anterior 3896 ne indică tabelul anterior și linkul startxref 567 indică următorul tabel și așa mai departe aproape la infinit, până în câmpul următor startxref nu vom vedea 0 . Aceasta înseamnă că am citit toate tabelele.

Acest eseu, desigur, nu are codul sursă. Iată: sunt prezentate două module principale" PDFDocument„și auxiliar” PDFBaseFonts"

Următoarele fișiere sunt atașate materialului:

  • Codul sursă al modulelor PDFDocument.pas și PDFBaseFonts.pas (16 K) actualizare din 23.09.2005 07:02:00

Discuția materialului [ 31.07.2006 06:33 ] 7 mesaje

Capacitățile componente declarate de dezvoltatori:

  • Vector și grafică rasterîn documente PDF
  • Protejați documentele PDF cu o parolă
  • Suport pentru formulare AcroForms/PDF
  • Urme de apă
  • Generaţie Documente PDF cu interne şi linkuri externe, linkuri web și marcaje
  • Suport complet Unicode
  • Suport pentru diverse fonturi, formatare text, aspect text cu mai multe coloane
  • Suport TCanvas
  • Arhivator încorporat pentru comprimarea textului și a informațiilor grafice dintr-un document
  • Convertiți TIFF în PDF

Ca exemplu, am decis să construiesc o aplicație demo care vine la pachet cu componenta THotPDF. Aplicația este destul de simplă - generează un PDF cu două link-uri și text simplu. Codul este, de asemenea, simplu și clar:

procedura TForm1. HelloWorldButtonClick(Expeditor: TObject); începeHPDF. BeginDoc ; HPDF. Pagina curenta. PrintHyperlink(20, 35, "Site web: " + MainEdit. Text, MainEdit. Text); HPDF. Pagina curenta. SetFont("Times New Roman", , 16); HPDF. Pagina curenta. SetRGBHyperlinkColor(clRed); HPDF. Pagina curenta. PrintHyperlink (20, 50, „Pagina de comandă: „ + BuyEdit. Text, BuyEdit. Text); HPDF. Pagina curenta. SetFont("Times New Roman", , 14); HPDF. Pagina curenta. TextOut(20, 75, 0, „Faceți clic pe link pentru a naviga”); HPDF. EndDoc ; Sfârşit ;

Chiar și fără a intra în complexitatea funcționării componentei, puteți înțelege ce și cum se întâmplă în acest exemplu demonstrativ. Hai să lansăm, uită-te la aspect document generat:

Aceste două dreptunghiuri albastre din document sunt legături către două pagini... iar textul simplu „Click the link to navigate” nu este vizibil nicăieri. Deși, trebuie să aducem un omagiu, atunci când dați clic pe dreptunghi, linkul se deschide efectiv. În general, fie dezvoltatorii s-au grăbit să anunțe suport pentru Delphi până la XE3, fie versiunea de încercare funcționează atât de interesant, dar după ce am rulat acest demo mi-am pierdut cumva dorința de a folosi THotPDF chiar și gratuit. Sa trecem peste.

4. PDF Creator Pilot

Preț: de la 450 USD fără coduri sursă la 9950 USD (!!!) cu coduri sursă
5-XE4
http://www.colorpilot.com/pdflibrary.html#download

Biblioteca costă aproape la fel ca Delphi XE3 Professional... Ei bine, să vedem care este această bibliotecă.

Caracteristici declarate de dezvoltatori:

  • Un set extins de metode și proprietăți pentru creație ușoară PDF;
  • Citiți și îmbinați documentele PDF existente;
  • Adăugarea și eliminarea paginilor unui document PDF;
  • suport Unicode;
  • Crearea de filigrane pentru fiecare pagină;
  • Adăugați miniaturi la un document PDF;
  • Utilizarea și încorporarea fonturilor (TrueType, OpenType, Type1 etc.);
  • Creați documente PDF interactive folosind JavaScript și hyperlink-uri;
  • Suport pentru elemente interactive AcroForm: câmpuri de introducere a textului, butoane, butoane radio, liste derulante, casete de selectare;
  • criptarea și protecția cu parolă a documentelor PDF create;
  • Crearea și gestionarea conținutului documentelor;
  • Accesați HDC pentru a desena pe pagini PDF utilizând funcțiile WinAPI.
  • Utilizarea imaginilor în diverse formate (JPEG, TIFF, PNG, BMP, GIF);
  • Crearea și utilizarea adnotărilor;
  • Creați documente PDF pe disc sau în memorie;
  • Extrageți text din documente PDF;

Una peste alta, o listă destul de impresionantă de caracteristici. Să vedem cum funcționează unele dintre aceste caracteristici în practică. Descărcați versiunea demo și instalați-o.

După instalare, lansați Delphi (în cazul meu este Delphi XE3) și accesați meniul:

Component - Import Component - Import Type Library

Căutăm o bibliotecă în listă

Importăm, creăm proiect nouși conectați modulul la utilizări PDFCreatorPilotLib_TLB.

Acum putem testa biblioteca folosind un exemplu live. Mai întâi, să încercăm să generăm un document cu text simplu:

procedura TForm1. Button1Click(Expeditor: TObject); var fnt: întreg; începe ( inițializare ) PDF := TPDFDocument4. Creați (nul); PDF. SetLicenseData ("demo", "demo"); fnt:=pdf. AddFont ("Verdana" , false , false , false , false , fcANSI) ; PDF. UseFont(fnt, 14); PDF. ShowTextAt(20, 40, „HELLO, PDF!”); (salvare) PDF. SaveToFile("HelloPDF.pdf", adevărat); PDF. Distruge; Sfârşit ;

Lansați aplicația și priviți documentul PDF creat:

Acum să încercăm să scriem text rusesc într-un fișier:

procedura TForm1. Button1Click(Expeditor: TObject); începe ( inițializare ) (...) PDF. ShowTextAt(20, 40, „Bună, PDF!”); ( salvează ) (...) sfârşit ;


Poate că undeva în proprietățile clasei trebuie să configurați ceva, să apelați o metodă care va permite suportul Unicode, DAR pentru astfel de bani aș dori să obțin o bibliotecă care să funcționeze imediat, fără probleme cu setările și modificările. .. Apropo, nici metoda de inserare a unui link (AddHyperLink) nu a funcționat - documentul a rămas impecabil, în ciuda faptului că se presupune că linkul a fost inserat. Dar, trebuie să aducem un omagiu, o încercare de a introduce în document nou un PDF creat anterior - a funcționat cu un bang - documentul a fost inserat în noua pagină așa cum ar trebui, fără colțuri.

5. PDFtoolkit VCL v4.0.1.293

Preț: de la 349 USD fără surse la 499 USD cu surse
Versiuni Delphi acceptate: 6-XE4
Pagina de descărcare a versiunii de încercare: http://www.gnostice.com/PDFtoolkit_VCL.asp?show=downloads

Există destul de multe recenzii pozitive pe Internet despre această bibliotecă de componente de la Gnostice.

Dupa posibilitati Kit de instrumente PDF aproape 1 la 1 corespunde PDF Creator Pilot, acestea. poate „lipi” PDF-uri, recunoaște text, insera link-uri, căuta documente etc. Dar, spre deosebire de PDF Creator Pilot, PDFtoolkit dacă gtPDFDocument1. IsLoaded apoi începe gtPDFDocument1. Text Out( "Buna ziua, Lume!" , IntToStr (gtPDFDocument1. PageCount ), //gamă de pagini în care va fi inserat textul gtPDFDocument1. GetPageSize(gtPDFDocument1. PageCount, muPixels) . Latime/2 //introduceți text în centrul paginii gtPDFDocument1. GetPagesize(gtPDFDocument1. PageCount, muPixels) . Înălțime/2); (salvați documentul) gtPDFDocument1. SaveToFile("doc_modificat.pdf"); Sfârşit ; în sfârșit gtPDFDocument1. Sfârșit liber;

Desigur, în raport cu sarcina mea, PDFtoolkit se dovedește a fi practic inutil, pentru că... Sunt interesat să creez PDF-uri de la zero, dar pentru cei care își scriu propriul vizualizator PDF, cred că această bibliotecă ar trebui să fie mai mult decât potrivită.

Deci, ce avem până la urmă? Sunt 5 diverse solutii pentru crearea și lucrul cu documente PDF în Delphi. Fiecare soluție are atât avantajele ei (gratuit, sofisticat), cât și dezavantajele (cost exorbitant, probleme cu Unicode etc.). În legătură cu problema mea, toate soluțiile vor trebui să fie „lucrate cu un fișier”. Pe de altă parte, există o mulțime de plătite și servicii gratuite pentru a genera PDF, dar, amintindu-mi că astfel de servicii tind să moară brusc, nu am cumva chef să mă implic în ele. Există, desigur, încă o soluție - una de casă și nu în întregime în tema Delphi, dar mai multe despre asta altădată, dar deocamdată mă voi gândi la ce să fac cu clientul pentru DelphiFeeds


Ne vedem online!

Există două moduri principale de a organiza vizualizarea documentelor PDF în program.

  • Utilizarea tehnologiei ActiveX;
  • Utilizarea componentelor speciale.

Componentele pentru lucrul cu PDF nu sunt disponibile în toate versiunile Delphi și cel mai adesea trebuie să fie căutate și instalate suplimentar. În același timp, pentru a utiliza ActiveX, trebuie doar să ai cea corespunzătoare software. În acest caz Adobe Acrobat Reader (gratuit) sau Adobe Acrobat.

Lucrul cu ActiveX poate fi împărțit în două etape.

  • Importul unei biblioteci de tipuri sau componente;
  • De fapt, utilizarea instrumentelor importate în aplicație.
Import de componenteActiveX

Pentru a importa componente, utilizați comanda „Component” – „Import Component” din meniul principal Delphi. Procesul de import în sine este implementat ca un expert.

Pe prima pagină a expertului, selectați „Import ActiveX Control”.

După aceasta, trebuie să decideți ce să faceți cu componentele importate. Deoarece intenționăm să le folosim ca componente Delphi, selectați „Instalare în pachetul nou”.

Acum nu mai rămâne decât să specificați numele pachetului nou creat.

După ce faceți clic pe butonul „Finalizare”, componentele ActiveX ale vizualizatorului PDF vor fi importate în Delphi.

VederePDF in atasament

Pentru a crea un vizualizator PDF într-o aplicație care utilizează ActiveX, aveți nevoie de componenta TAcroPDF. Procesul de import este descris în detaliu mai sus.

De exemplu, să creăm următoarea aplicație. Să plasăm componentele TAcroPDF, TOpenDialog și TButton pe formular, așa cum se arată în captura de ecran de mai jos.

Când faceți clic pe buton, apelăm un dialog de deschidere a fișierului pentru a selecta Fișier PDF A vedea.

Acțiune