Lägg till en PDF till programmet med ActiveX. Uppsats för att skapa PDF-filer Delphi PDF-läsningskomponenter

För det här exemplet behöver vi följande komponenter som finns i fliken RAVE. Och så fortsätt till installationen av de komponenter vi behöver, nämligen:

  • TRVNDRWRITER
  • Trvrenderpdf.
  • Tbutton.

Jag föreslår lite att stanna på dessa komponenter och förstå varför de tjänar. Förresten vägrade jag information från ett par böcker som jag köpte progbook.ru.. Därför, om du vill köpa anständiga böcker på Delphi, frågar Mercy denna butik.

Så, den första vi har en TRVNDRYRITER-komponent. Den här komponenten kräver att vi skriver till PDF-filinformationen, det spelar ingen roll vilken, text eller grafisk, genom strömmen.

Procedur tform1.button1click (avsändare: togject); Var strömmar: tmemorystream; Börja strömmar: \u003d tmemorystream.create; Rvndrwriter1.stream :\u003dStreams; Rvndrwriter1.execute; Rvrenderpdf1.printender (strömmar, "test.pdf"); Shellexecute (handtag, noll, "test.pdf", "", "", sw_show); Freeandnil (strömmar); slutet;

Nästa komponent är trvrenderpdf. Det är nödvändigt för oss att skapa, eller snarare att rita information, vare sig det är text eller grafik. Följaktligen skriver vi efter att ha tryckt på knappen den information du behöver i vår PDF-fil.

Men vi kommer inte starkt att rasa, men vi kommer att gå direkt till ämnet av intresse för oss, nämligen att programmera :)

Till att börja med måste vi skapa en vanlig tom PDF-fil och placera den i rotmappen i vårt program.

I den här koden skapar vi en ström där vi kommer att rita den information vi behöver, varefter vi startar ritningen, anger vår sista PDF-fil till vilken dataldragningen kommer att göras och i slutet stänger vi flödet.

Efter att ha utfört detta när vi behöver en händelse som uppstår när datalitan inträffar, kommer vi att dra tillbaka den information vi behöver.

Vi kommer att analysera koden. För en början laddar jag ner bilden * .bmp, skapa en variabel BMP och ett TBITMAP-klassobjekt. Jag laddar ner den för att rita den i vår PDF-fil.

Jag tror vidare att beskriva det är inte värt det helt klart och så, skriver uthyrningsproceduren - lägger in en inskription i dokumentrubriken, Printfooter-proceduren - lägger till en inskription i slutet av dokumentet. PrintBitMap Procedure - Lägger till en bild i ett dokument, SetFont-proceduren - ställer in önskat teckensnittsdokument, FontColor-proceduren - ställer in önskad färg på dokumentfonten.

Alla efterföljande grafiska funktioner och procedurer är exakt samma som i utmatningen av grafisk information om kanfas andra komponenter.

Newpage Funktion Jag använder för att skapa ett nytt ark i dokumentet. Allt som kommer att läggas till efter att det är utmatning, kommer att visas på ett nytt dokumentblad.

ViktigAtt alla moduler: rprann, rprenderpdf, rpdefin, rpbase, rpfiler, rprave, RPCon var anslutna till projektet!

I den här artikeln, överväga hur du skapar din egen pdf.-Documents, och i nästa artikel anser hur du kan visa pdf.-Documents i sina projekt, såväl som utskriftsinnehåll, flytta enligt dokumentet och så vidare.

För detta behöver vi komponenter från flikar Rave. Låt oss installera de komponenter du behöver jobba, och det här är:

  • TRVNDRWRITER
  • Trvrenderpdf.
  • Tbutton.

Komponent TRVNDRWRITER Utformad för att spela in i pdf.Filinformation (text, grafik), genom strömmen.

Komponent Trvrenderpdf.designad för att skapa, rita information (text, grafik och så vidare). Tja, genom att trycka på knappen, kommer vi att komma in i någonting i vår pdf.-fil.

Från teorin kommer vi inte skriva någonting för att skriva någonting, men vi kommer omedelbart att gå vidare till programmering, men du måste också först skapa en vanlig tom pdf.-File och lägg den i roten med programmet. Vid sidan av evenemanget Onclick.vår knapp Vi skriver följande kod:

procedur tform1. Knapplick (avsändare: tgict); Var strömmar: tmemorystream; Börja strömmar: \u003d tmemorystream. Skapa; Rvndrwriter1. Ström: \u003d strömmar; Rvndrwriter1. Kör; Rvrenderpdf1. Printreender (strömmar, "test.pdf"); Shellexecute (handtag, noll, "test.pdf", "", "", sw_show); Freeandnil (strömmar); slutet;

Skapa en ström där vi kommer att rita all information, kör sedan ritningen, ange den fil som datadragningen kommer att göras och i slutändan förstör vi flödet.

Hela nu behöver vi en händelse som uppstår vid ritning av data, vi kommer att dra tillbaka all vår information i den. Välj komponent TRVNDRWRITERoch gå igenom listan med händelser av den här komponenten, varefter vi hittar en händelse Onprint.och i det här fallet skriver vi följande kod:

procedur tform1. Skriv ut (avsändare: togject); Börja BMP: \u003d TBITMAP. Skapa; BMP. LOADFROMFILE ("TEST.BMP"); Med RVNDRWRITER1 Börja SetFont ("Arial", 16); FontColor: \u003d clgreen; Skriv ut ("Testtext"); PrintHeader ("Börja PDF-fil", pjcenter); Printfooter ("End PDF-fil", pjcenter); Lineto (10, 10); PrintBitMap (1, 1, 1, 1, BMP); slutet; Freeandnil (BMP); slutet;

Tja, först laddar vi bilden * .bmpnaturligt variabel bMP., vi har ett klassobjekt TBITMAP.. Vi laddar för att dra det ut i vår pdf.- Dokument.

Och då tror jag att allt är klart, proceduren Skrivhejdare.- Visar en inskription i titeln på dokumentet (sidor), förfarandet Printfooter.- Visar en inskription i slutet av dokumentet (sidor). Procedur Printbit- Visar bilden till dokumentet, proceduren SetFont.- Ställer in teckensnittet, proceduren Fontfärg- Ställer in färgen på dokumentet.


publiceringsdatum 23-09-2005 07:00 Skissa om Skapa PDF-filer

Nyligen har en hel del PDF-omvandlare "OV, läsare" ov och skriv "upptäckts på Internet. Och den överväldigande majoriteten av dem erbjuds för pengar. Programmet i sig är $ 10 till $ 300. och källkoden för mycket Stora pengar Priset börjar från $ 200 och på ett ställe (intresserad av detta klättrade på Internet) redan för 900 euro.

Detta problem intresserade mig när det gäller programmering och då tar jag resultatet till din information. (Dessa resultat mottogs av mig när du studerade internalerna i PDF-filen när du öppnar den i Total Commander via F3)

Den vanliga PDF-filen består av fyra delar. :=

Vad är det där

? Detta är det vanliga nämnandet av PDF-specifikationsversionen. Som finns i den första raden i PDF-filen. Till exempel, "% pdf-1.3" i den sjunde versionen av Acrobat som kom ut någonstans i början av sommaren i år, detta nummer "% pdf-1,7", men det här är inte en produktversion, det är den version av specifikationen. Den andra linjen PDF går ett litet onormalt fat (tydligen utformad för vidare användning) "% VGPU"

Allt med den första delen PDF räknade ut.

Som representerar den andra delen som kallas ?

Svaret är väldigt enkelt: det här är en sekvens av objekt, en beskrivning av vilken som Heder presenteras i textform.

Varje objekt är ett textfragment med ett sekvensnummer i ett namn till exempel "4 0 obj"

  • 4 Detta är sekvensnummeret för objektet
  • 0 Detta är numret (re) i filgenereringen, det vill säga när filen är uppdaterad (redigerad), ökar detta nummer
  • obj. Detta är ett kodord betyder att vi mötte ett objekt i dokumentet av dokumentet

Alla objekt är uppdelade i indirekt och rak. Alla indirekta, och de flesta av dem, efter ordet obj. ha en delimer i sin kropp "<<", означающее начало данных объекта. И в конце данных закрывающий делиметер ">\u003e "och kodord endobj.

Direkta objekt bör inte ha i sin kroppsöppning och stängning av delimetrar "<<", ">\u003e "Alla indirekta objekt är tillgängliga via korreferensbord. Den presenterar länkar i form av förskjutning från början av filen innan objektet startar (data (linjer) i objektet är uppdelat #13#10 eller #13 )

Typ av "Det viktigaste" objektet i Body PDF-filen har ett stolt namn "/ Katalog"

4 0 OBJ.<< /Type /Catalog /Pages 2 0 R /OpenAction [ 5 0 R /XYZ null 364 1 ] /PageMode /UseNone >\u003e Endobj.

I själva verket bör i kroppen av den minsta PDF-filen "Hello World" vara 3 "huvudsakliga" objekt. Låt oss lista dem efter typ:

  • "/ Katalog" Innehåller länk: På sidan av sidor ( / Sidor.)
  • "/ Sidor"innehåller en länk till en dokumentsidorgrupp (till exempel 2 0 OBJ\u003e EndoBJ)
  • "/ Sida" Innehåller en länk till objekt som relaterar till en viss sida. (Till exempel 3 0 OBJ\u003e / Rotera 0 \u003e\u003e)
Och flera "mindre"

Vi kommer att analysera objektsidan:

  • / Rotera. Fältet visar hur mycket grader sidbilden måste vridas när du visar i programmet
  • / Mediabox.och / Cropbox. Fält som beskriver sidstorlek
  • / Föräldra. Länk till moderobjektet "/ Sidor"
  • / Resurser. Det här fältet beskriver vilken fontän som ska användas när sidan visas (Stiftelsen är ett separat objekt) och Procset-installationen Denna inställning visar vilket innehåll i dataströmmen på den här sidan (även kan definieras som ett objekt och inte som ett fält)
  • / Innehåll. Det mest intressanta fältet i objektet "sida", ger en referens till innehållsobjektet på den här sidan, och: Om det här fältet saknas i objektet "sida" betyder sidan tomt
Sidinnehåll:
Ett objekt "Ström" 4 0 OBJ\u003e 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 Privet) TJ 0 -12.5 TD (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 Slutstream EndObj / Längd 305 Detta fält visar hur många byte från ordet ström före ordet ände

Det enklaste alternativet är ett icke-korrigerat och okomprimerat dataflöde i objektet. ström. Det är begränsat till operatörer Bt. och Et.

BT börjar ett textobjekt - kännetecknar början på texten ET slutar ett textobjekt. - Karaktäriserar slutet av texten / F12 9 TF

  • / F12. Detta kodnamn på ett objekt som kännetecknar den fond som används på den här sidan.
  • 9 Detta är storleken på teckensnittet
  • Tf. Detta är en operatör som kännetecknar att den här linjen i ångobjektet är installationen av fontänen och storleken
10 782 TD Dessa är siffror från var den här strängen börjar (räknas från vänster övre vinkel) TJ är en översättningsoperatör till en ny linje, men i parentes vår text

Jag förklarar inte den kodade strömmen. Den är baserad på RC4, RC5, MD5-algoritmerna.

Vad är objektet Font 12 0 OBJ\u003e

  • / Typ / Font Naturligt typnamn
  • / Subtyp / typ1 Namn subtyp
  • / Namn / F7 F7 Detta kodnamn

PDF stöder flera typer av teckensnitt. De är listade nedan

  • Typ 1, inklusive Subsets och Multiple Master "Snapshots"
  • Typ 3.
  • TrueType, inklusive delmängder
  • Typ 0.
Ärligt talat, jag förstod inte typ 3, trueType, inklusive delmängder, typ 0 Jag kan inte säga något
Och typ 1 - det här är följande teckensnitt Courier Courier-Bold Courier-Boldoblique Courier-Oblique Helvetica Helvetica-Bold Helvetica-boldoblique Helvetica-Oblique Times-Roman Times-Bold Times-Italic Times-Bolditalic Symbol ZapFdingbats

20 0 OBJ\u003e EndObj Detta är ett objekt med kodnamnnamn för FIRST-typen. Med det här kodnamnet kan du enkelt få ett objekt font. 6 0 OBJ\u003e

Allt: det är minimalt Består av följande objekt: "Katalog", "Sidor", "sida", "Resurser" (Det kan beskrivas som fält som ett fält i objektet), ett inepiest objekt "Ström", Grupp av objekt "font"

Vad ? Faktum är att det här är ett vanligt textbord, det börjar med ordet xref. Och dess kropp har referenser till alla indirekta objekt i dokumentet. Här är ett exempel på korsref 0 27 0000000021 65535 f 000000000016 00000 N 0000000105 00 tusen N 0000000169 00 tusen N 0000000356 00 tusen N 0000000713 00 tusen N 0000000892 00 tusen N 000.000.000 600 tusen N 00000000001006 00 tusen N 0000001125 00 tusen N 000000001247 00000 N 0000001373 00 tusen N 0000001486 00 tusen N 0000001604 00 tusen N 0000001725 00 tusen N 0000001725 00 tusen N 0000001850 00 tusen N 0000001725 0000002084 00000 N 000000202084 00000 N 000000002203 00000 N 0000002326 00 tusen N 00000000239 00 tusen N 00000000258 00 tusen N 000000002558 00000 N 00000000002558 00 tusen N 000000000021 00000 N 000000002751 00000 N 0000 miljoner 00001 F 000 miljarder 00 tusen F 0000002915 00 tusen N 0000002955 00000 n 0 27 Dessa siffror indikerar följande:

  • 0 - Första objektnummer i tabell
  • 27 - Antal tabellelement

Det första elementet i bordet försvinner alltid " Xxxxxxxxxx 65535 F."Var X är en figur, och 65535 är standardvärdet för det första elementet i tabellen. Symbolen" F "betyder" fri.", det vill säga objektet används inte

Vi kommer att analysera elementet i denna tabell.

  • De första 10 siffrorna är förskjutna från början av filen innan objektet startar.
  • 0000000016 betyder att efter 16 byte från början av filen kommer du att uppfyllas av det första omnämnandet av objektet som till exempel är 4 0 OBJ.

Den andra fem siffrorna är filgenereringsnumret. Om filen just har skapats, är de alltid nollor. Om filen är modifierad ökar det här numret med en. Dvs, 0000000024 00001 F.

Kanonisk, precis skapad PDF-fil, har bara ett bord. Men om filen är redigerad kan det finnas många sådana tabeller.

Förhållandet mellan tabellerna utförs med det sista elementet och kodord startxref.

Canonical, precis skapad PDF-fil, har bara ett bord, efter bordet är det ett element trailer Och efter traler finns ett kodord startxref.Indikerar offset från början av filen innan tabellen startar, här är ett exempel. Trailer\u003e StartXRef 173 %% EOF Det betyder att efter 173 byte från början av dokumentet kommer kodordet att vara närvarande xref.. Men om filen redigerades, ses den sista i släpvagnen: XREF 0 3 0000000000 65535 F 0000003609 00000 n 0000003832 00000 n släpvagn<7a15ab3ed3999575ff2f3034104a82c1>] \u003e\u003e StartXRef 173 %% EF men om vi vänder oss till bordet där länken indikerar startxref 173.Då hittar vi följande bord, och bakom det en traler som kommer att ha ett fält / Föregående 3896. 3 16 0000000016 00 tusen n 0000000664 00 tusen n 0000000936 00 tusen n 0000001106 00 tusen n 0000001133 00 tusen n 0000001250 00 tusen n 0000001395 00 tusen n 0000001811 00 tusen n 0000001992 00 tusen n 0000002180 00 tusen n 0000002360 00 tusen n 0000002760 00 tusen n 0000003438 00 tusen n 0000003516 00 tusen n 0000000776 00 tusen n 0000000916 00 tusen n Trailer<7a15ab3ed3999575ff2f3034104a82c1>] \u003e\u003e StartXRef 567 %% EOF

Detta fält / Föregående 3896. Anger oss till föregående tabell och länken startXRef 567. Indikerar följande tabell och så nästan till oändligheten i nästa fält startxref. Vi kommer inte se 0 . Det betyder att vi läser alla tabellerna.

I denna uppsats saknar naturligtvis källkoden. Så han: presenterade två moduler i huvudet " Pdfdocument"och hjälp" Pdfbasefonts."

Filer kopplade till materialet:

  • Källkod för moduler pdfdocument.pas och pdfbasefonts.pas (16 k) uppdatering från 9/23/2005 7:02:00

Diskussion av materialet [07-07-2006 06:33] 7 Meddelanden

Komponentens förmåga förklaras av utvecklarna:

  • Stöd för Vector and Raster Graphics i PDF-dokument
  • PDF-dokumentskyddslösenord
  • Stödjer Acroforms / PDF-formulär
  • Vattenmärken
  • Generering av PDF-dokument med interna och externa referenser, webblänkar och bokmärken
  • Full support unicode.
  • Stöd för olika teckensnitt, textformatering, textplats i flera kolumner
  • Tcanvas support
  • Inbyggd arkiv för kompression av text- och grafikinformation i dokumentet
  • TIFF-omvandling i PDF

Som ett exempel bestämde jag mig för att samla en demonstrationsapplikation som kommer i satsen tillsammans med komponenten. Thhotpdf.. Applikationen är ganska enkel - genererar PDF-KU med två länkar och enkel text. Koden är också enkel och förståelig:

procedur tform1. HelloworldButtonClick (Sender: Togject); Börja hpdf. Begindoc; HPDF. Nuvarande sida. Printyperlink (20, 35, "Webbplats:" + stabilit. Text, underhållning. Text); HPDF. Nuvarande sida. SetFont ("Times New Roman" ,,, 16); HPDF. Nuvarande sida. Setrgbhyperlinkcolor (clred); HPDF. Nuvarande sida. Printhyperlink (20, 50, "Beställningssida:" + Buyedit. Text, Buyedit. Text); HPDF. Nuvarande sida. SetFont ("Times New Roman" ,, 14); HPDF. Nuvarande sida. Textout (20, 75, 0, "Klicka på länken för att navigera"); HPDF. Enddoc; slutet;

Även utan att gå in i komponentens subtiliteter kan det förstås att och hur det händer i detta demonstrationsexempel. Kör, vi tittar på utseendet av det genererade dokumentet:

Det här är dessa två blåa rektanglar i dokumentet - länkar till två sidor ... och den enkla texten "Klicka på länken för att navigera" observeras inte någonstans. Även om det är nödvändigt att hylla, när du klickar på en rektangel, öppnar länken verkligen. I allmänhet har utvecklarna skyndat sig för att deklarera Delphi-support upp till Xe3, oavsett om det fungerar så intressant, försöksversionen, men efter lanseringen av detta demonstration, släppte jag på något sätt önskan att använda Thhotpdf även gratis. Flytta vidare.

4. PDF Creator Pilot

Kosta: från $ 450 utan källkod upp till $ 9950 (!!!) med källa
5-XE4.
http://www.colorpilot.com/pdflibrary.html#download

Biblioteket värt nästan som Delphi Xe3 Professional ... Tja, åh, låt oss se vad det här biblioteket är.

De funktioner som utvecklats av utvecklarna:

  • Avancerad uppsättning metoder och egenskaper för enkel PDF-skapelse;
  • Läser och sammanfogar befintliga PDF-dokument
  • Lägga till och ta bort PDF-dokumentsidor;
  • Stöd till Unicode;
  • Skapa vattenstämplar för varje sida;
  • Lägga till miniatyrer för ett PDF-dokument;
  • Använd och inbäddning av teckensnitt (TrueType, OpenType, Type1, etc.);
  • Skapa interaktiva PDF-dokument med JavaScript och hyperlänkar;
  • Stöd för interaktiva element Acroform: Textfält Inmatning, knappar, radioknappar, rullgardinsmenyn, kryssrutor;
  • kryptering och lösenordsskydd skapade PDF-dokument;
  • Skapa och hantera innehållet i dokumentet
  • Få tillgång till HDC för att dra på PDF-sidor med WINAPI-funktioner.
  • Använda bilder i olika format (JPEG, TIFF, PNG, BMP, GIF);
  • Skapande och användning av anteckningar;
  • Skapa PDF-dokument på disk eller i minnet;
  • Extrahera text från PDF-dokument;

I allmänhet är en ganska imponerande lista över möjligheter. Låt oss se hur några av dessa möjligheter arbetar i praktiken. Ladda ner demonstrationsversionen, installera.

Efter installationen, kör Delphi (i mitt fall, Delphi Xe3) och gå till menyn:

Komponent - Importera komponent - Importtypsbibliotek

I listan letar efter ett bibliotek

Vi importerar, skapar ett nytt projekt och ansluter modulen i användningsområden Pdfcreatorpilotlib_tlb.

Nu kan vi testa bibliotekets arbete på något vardagsrum. Ursprungligen, låt oss försöka generera ett dokument med enkel text:

procedur tform1. Knapplick (avsändare: tgict); Var fnt: heltal; Börja (initialisering) pdf: \u003d tpdfdocument4. Skapa (noll); Pdf. Seticensedata ("demo", "demo"); FNT: \u003d PDF. Addfont ("Verdana", False, False, False, False, Fcansi); Pdf. USFONT (FNT, 14); Pdf. Showtextat (20, 40, "Hej, PDF!"); (Spara) pdf. SaveTofile ("hellopdf.pdf", sant); Pdf. Förstöra; slutet;

Kör ansökan och titta på det skapade PDF-dokumentet:

Låt oss nu skriva för att skriva den ryska texten till filen:

procedur tform1. Knapplick (avsändare: tgict); Börja (initialisering) (...) PDF. Showtextat (20, 40, "Hej, PDF!"); (Spara) (...) slutet;


Kanske någonstans i klassens egenskaper måste du konfigurera något, ring någon metod som kommer att innehålla stöd för Unicode, men för sådana mormor skulle jag vilja få ett bibliotek som tjänar omedelbart "ur lådan" utan problem med inställningar och twisters. .. Förresten, var metoden för att sätta in länken (Addhyperlink) inte fungera - dokumentet var nio trots att länken påstås. Men vi måste hylla, ett försök att infoga till ett nytt dokument som tidigare skapats PDF-KU - arbetat med ett slag - dokumentet infördes till en ny sida som det borde utan jambs.

5. PDFTOULKIT VCL V4.0.1.293

Kosta: från $ 349 utan källa till $ 499 med källa
Stödda versioner av Delphi: 6 xe4.
Försöksversion Hämta sida: http://www.gnostice.com/pdftoolkit_vcl.asp?show\u003ddownloads

Om detta bibliotek med komponenter från Gnostice har en hel del positiv feedback på nätverket.

Av möjligheter Pdftoolkit.nästan 1 i 1 motsvarar Pdf Creator Pilot, de där. vet hur man ska "lima" pdf-ki, känna igen text, infoga länkar, utför en sökning i dokument etc. Men, till skillnad från PDF Creator Pilot, Pdftoolkit om gtpdfdocument1. Isladed börjar sedan GTPDFDOCument1. Textout ( "Hej, Fred!" , Intostost (GTPDFDocument1. PageCount), // utbud av sidor till vilken text kommer att sättas in gtpdfdocument1. Getpageize (gtpdfdocument1. Pagecount, mupaxlar). Bredd / 2, // Sätt i texten till mitten av sidan gtpdfdocument1. Getpageize (gtpdfdocument1. Pagecount, mupaxlar). Höjd / 2); (Spara dokumentet) gtpdfdocument1. SaveTofile ("modifierad_doc.pdf"); slutet; Äntligen gtpdfdocument1. Fri ände;

Naturligtvis, i förhållande till min uppgift, visar sig pdftoolkit att vara praktiskt taget värdelös, för Jag är intresserad av att skapa från början PDF-KI, men för dem som skriver vår egen PDF-OK-visning, tror jag att det här biblioteket ska komma upp mer än.

Så vad har vi i slutändan. Det finns 5 olika lösningar för att skapa och arbeta med PDF-dokument i Delphi. Varje beslut har sina egna fördelar (gratis, "felsökning") och nackdelar (hästvärde, problem med unicode, etc.). När det gäller min uppgift måste alla lösningar "arbeta med en fil". Å andra sidan finns det en massa betalda och fria tjänster för att generera pdf, men, efter att ha kommit ihåg att sådana tjänster har egenskapen plötsligt ta och dö, det är på något sätt inte drar med dem. Det finns givetvis ett annat beslut är ett självskrivet och inte helt i delfisk ämnet, men om det på något sätt nästa gång, men för nu tänker jag på det att göra vad du ska göra med klienten för Delphifeeds


Vi ses online!

Det finns två huvudsakliga sätt att organisera i programmet Visa dokument i PDF-format.

  • Med ActiveX-teknik;
  • Använd speciella komponenter.

Komponenter för att arbeta med PDF är inte i alla Delphi-utgåvor och måste oftast sökas och installeras dessutom. Samtidigt, för att använda ActiveX behöver du bara tillgången på lämplig programvara på datorn. I det här fallet, Adobe Acrobat Reader (gratis) eller Adobe Acrobat.

Arbeta med ActiveX kan delas upp i två steg.

  • Importera bibliotekstyper eller komponenter;
  • Faktum är att användningen av importerade medel i ansökan.
Importera komponenterActiveX.

För att importera komponenter, använd kommandot "Komponent" - "Importera komponent" i huvudmenyn Delphi. Importprocessen själv är implementerad som en trollkarl.

På den första sidan i guiden väljer du "Importera ActiveX Control".

Därefter är det nödvändigt att bestämma hur man skriver in med importerade komponenter. Eftersom de är planerade att använda i form av Delphi-komponenter, välj "Installera till nytt paket".

Nu är det bara att ange namnet på det nyskapade paketet.

Efter att ha klickat på "Slutför" -knappen importeras ActiveX-komponenterna för visning av PDF till Delphi.

SePDF i bilaga

För att skapa en visning av PDF-filer i ActiveX-programmet krävs TACROPDF-komponenten. Processen med importen beskrivs i detalj ovan.

Som ett exempel skapar du följande applikation. Placera TACROPDF, Topendialog och TBUTTON-komponentformuläret som visas i skärmdumpen nedan.

När du klickar på knappen, ring den öppna fildialogrutan för att välja PDF-filen för att visa.

Dela med sig