In deze zelfstudie onderzoeken we hoe u een professionele PDF-viewertoepassing kunt maken met behulp van PDFium VCL, een krachtige Delphi-component die de PDFium-renderingengine van Google omhult. Deze demo toont de belangrijkste weergavemogelijkheden die de basis vormen van elke PDF-toepassing.
Overzicht
De PDF Viewer-demo demonstreert de essentiële functionaliteit die nodig is voor het bekijken van PDF-documenten in een Delphi-toepassing. Het biedt een complete, gebruiksklare PDF-weergaveoplossing met functies die vergelijkbaar zijn met commerciële PDF-lezers.
Belangrijkste kenmerken
- Documenten laden – Open PDF-bestanden met ondersteuning voor wachtwoordbeveiliging
- Paginanavigatie – Eerste, vorige, volgende, laatste paginaknoppen met sneltoetsen
- Zoombediening – Meerdere zoomniveaus, waaronder passend op pagina en passend op breedte
- Paginarotatie – Pagina's 90° naar links of rechts draaien
- Tekstselectie – Selecteer en kopieer tekst uit PDF-documenten
- Bladwijzers – Navigeer met behulp van de inhoudsopgave van het document
- Tekst zoeken – Zoek tekst in het document
- Afdrukken – Documenten afdrukken met paginabereikselectie
- Opslaan als – Exporteer het document naar een nieuw PDF-bestand
PDFium DLL-vereisten
Voordat u een PDFium VCL-toepassing uitvoert, moet u de PDFium DLL-bestanden installeren. De DLL's bevinden zich in de DLLs map van het PDFium VCL-pakket:
pdfium32.dll– 32-bits versie (~5 MB)pdfium64.dll– 64-bits versie (~6 MB)pdfium32v8.dll– 32-bit met V8 JavaScript-engine (~23 MB)pdfium64v8.dll– 64-bit met V8 JavaScript-engine (~27 MB)
Installatie: Loop PDFiumVCL\DLLs\CopyDlls.bat als Beheerder. Dit script kopieert automatisch de juiste DLL's naar de Windows-systeemmappen:
|
1 2 3 4 5 6 |
@echo off REM On 64-bit Windows: REM - 32-bit DLLs → %SystemRoot%\SysWOW64\ REM - 64-bit DLLs → %SystemRoot%\System32\ REM On 32-bit Windows: REM - 32-bit DLLs → %SystemRoot%\System32\ |
Opmerking: Gebruik de standaard DLL's (pdfium32.dll/pdfium64.dll) voor de meeste toepassingen. De V8-versies zijn alleen nodig als uw PDF's JavaScript bevatten dat moet worden uitgevoerd.
Kerncomponenten
De demo gebruikt twee belangrijke PDFium VCL-componenten:
Urvanov Syntaxis Markeerstift v2.9.1|
1 2 |
Pdf: TPdf; // Non-visual component for PDF operations PdfView: TPdfView; // Visual component for rendering PDF pages |
TPdf-component
De TPdf component verwerkt alle PDF-documentbewerkingen, inclusief het laden, opslaan en openen van documenteigenschappen zoals metagegevens, bladwijzers en pagina-informatie.
TPdfView-component
De TPdfView component is een scrollbare visuele besturing die PDF-pagina's soepel scrollt, zoomondersteuning en gebruikersinteractie mogelijk maakt.
Een PDF-document laden
Het openen van een PDF-bestand is eenvoudig:
Urvanov Syntaxis Markeerstift v2.9.1|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
procedure TFormMain.SpeedButtonOpenPdfClick(Sender: TObject); var Password: string; begin if OpenDialog.Execute then begin Pdf.FileName := OpenDialog.FileName; Pdf.Password := ''; Pdf.PageNumber := 0; try PdfView.Active := True; except on Error: EPdfError do if Error.Message = 'Password required or incorrect password' then begin if InputQuery('Enter Password', 'Password: ', Password) then begin Pdf.Password := Password; PdfView.Active := True; end else raise; end else raise; end; if PdfView.PageCount > 0 then PdfView.PageNumber := 1; end; end; |
Paginanavigatie
Het implementeren van paginanavigatie is eenvoudig met de PageNumber eigendom:
|
1 2 3 4 5 6 7 8 9 10 11 |
// Navigate to first page PdfView.PageNumber := 1; // Navigate to last page PdfView.PageNumber := PdfView.PageCount; // Previous page PdfView.PageNumber := PdfView.PageNumber - 1; // Next page PdfView.PageNumber := PdfView.PageNumber + 1; |
Zoomregeling
De TPdfView component biedt flexibele zoomopties:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Set specific zoom levels PdfView.Zoom := 1.0; // 100% PdfView.Zoom := 0.5; // 50% PdfView.Zoom := 2.0; // 200% // Fit to page width PdfView.Zoom := PdfView.PageWidthZoom[PdfView.PageNumber]; // Fit entire page in view PdfView.Zoom := PdfView.PageZoom[PdfView.PageNumber]; // Actual size (based on DPI) PdfView.Zoom := PdfView.ActualSizeZoom[PdfView.PageNumber]; |
Paginarotatie
Pagina's roteren met behulp van de Rotation eigendom:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Rotate right (clockwise) case PdfView.Rotation of ro0: PdfView.Rotation := ro90; ro90: PdfView.Rotation := ro180; ro180: PdfView.Rotation := ro270; ro270: PdfView.Rotation := ro0; end; // Rotate left (counter-clockwise) case PdfView.Rotation of ro0: PdfView.Rotation := ro270; ro90: PdfView.Rotation := ro0; ro180: PdfView.Rotation := ro90; ro270: PdfView.Rotation := ro180; end; |
Documentinformatie weergeven
Krijg toegang tot documentmetagegevens via de TPdf onderdeel:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
procedure TFormMain.SpeedButtonShowInfoClick(Sender: TObject); begin ShowMessage( 'Author: ' + Pdf.Author + #13#10 + 'Creator: ' + Pdf.Creator + #13#10 + 'Keywords: ' + Pdf.Keywords + #13#10 + 'Producer: ' + Pdf.Producer + #13#10 + 'Subject: ' + Pdf.Subject + #13#10 + 'Title: ' + Pdf.Title + #13#10 + 'Creation date: ' + Pdf.CreationDate + #13#10 + 'Modified date: ' + Pdf.ModifiedDate ); end; |
Werken met bladwijzers
De demo vult een TreeView met de bladwijzers van het document voor eenvoudige navigatie:
Urvanov Syntaxis Markeerstift v2.9.1|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
procedure TFormMain.AddBookmarks(Node: TTreeNode; Bookmarks: TBookmarks); var ChildNode: TTreeNode; I: Integer; begin for I := 0 to Length(Bookmarks) - 1 do begin ChildNode := TreeViewBookmarks.Items.AddChildObject( Node, Bookmarks[I].Title, Bookmarks[I].Handle ); ChildNode.HasChildren := Pdf.HasBookmarkChildren[Bookmarks[I]]; if ChildNode.HasChildren then AddBookmarks(ChildNode, Pdf.BookmarkChildren[Bookmarks[I]]); end; end; |
Renderopties
Pas de weergave aan met verschillende opties:
Urvanov Syntaxis Markeerstift v2.9.1|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Available render options type TRenderOption = ( reAnnotations, // Render annotations reLcd, // LCD optimized rendering reNoNativeText, // Don't use native text output reGrayscale, // Render in grayscale reLimitCache, // Limit image cache size reHalftone, // Use halftone for image stretching rePrinting, // Optimize for printing reNoSmoothText, // Disable text anti-aliasing reNoSmoothImage, // Disable image anti-aliasing reNoSmoothPath // Disable path anti-aliasing ); // Apply options to the view PdfView.Options := [reAnnotations, reLcd]; |
Conclusie
De PDF Viewer-demo biedt een solide basis voor het inbouwen van PDF-weergavefunctionaliteit in uw Delphi-applicaties. Met PDFium VCL krijgt u toegang tot dezelfde PDF-rendering-engine die wordt gebruikt door Google Chrome, waardoor u verzekerd bent van een hoogwaardige, nauwkeurige PDF-weergave.
De component verwerkt automatisch complexe PDF-functies zoals annotaties, formuliervelden en ingesloten lettertypen, zodat u zich kunt concentreren op het bouwen van de unieke functies van uw applicatie in plaats van op laag niveau PDF-parseren.
PDFium VCL downloaden van loslab.com om aan de slag te gaan met PDF-ontwikkeling in Delphi.