I den här handledningen kommer vi att utforska hur du skapar en professionell PDF-visningsprogram med hjälp av PDFium VCL, en kraftfull Delphi-komponent som omsluter Googles PDFium-renderingsmotor. Denna demo visar upp de centrala visningsmöjligheterna som utgör grunden för alla PDF-applikationer.
Översikt
PDF Viewer-demon visar den väsentliga funktionalitet som behövs för att visa PDF-dokument i en Delphi-applikation. Den tillhandahåller en komplett, färdig att använda PDF-visningslösning med funktioner som är jämförbara med kommersiella PDF-läsare.
Nyckelfunktioner
- Dokument laddas – Öppna PDF-filer med lösenordsskydd
- Sidnavigering – Knappar för första, föregående, nästa, sista sida med kortkommandon
- Zoomkontroller – Flera zoomnivåer inklusive anpassa till sida och anpassa till bredd
- Sidrotation – Rotera sidorna 90° åt vänster eller höger
- Textval – Välj och kopiera text från PDF-dokument
- Bokmärken – Navigera med hjälp av dokumentets innehållsförteckning
- Textsökning – Hitta text i dokumentet
- Utskrift – Skriv ut dokument med val av sidintervall
- Spara som – Exportera dokumentet till en ny PDF-fil
PDFium DLL-krav
Innan du kör ett PDFium VCL-program måste du installera PDFium DLL-filerna. DLL-filerna finns i DLLs mapp för PDFium VCL-paketet:
pdfium32.dll– 32-bitarsversion (~5 MB)pdfium64.dll– 64-bitarsversion (~6 MB)pdfium32v8.dll– 32-bitars med V8 JavaScript-motor (~23 MB)pdfium64v8.dll– 64-bitars med V8 JavaScript-motor (~27 MB)
Installation: Kör PDFiumVCL\DLLs\CopyDlls.bat som administratör. Det här skriptet kopierar automatiskt lämpliga DLL-filer till Windows-systemkatalogerna:
|
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\ |
Obs: Använd standard-DLL-filerna (pdfium32.dll/pdfium64.dll) för de flesta applikationer. V8-versionerna behövs bara om dina PDF-filer innehåller JavaScript som kräver körning.
Kärnkomponenter
Demon använder två huvudsakliga PDFium VCL-komponenter:
|
1 2 |
Pdf: TPdf; // Non-visual component for PDF operations PdfView: TPdfView; // Visual component for rendering PDF pages |
TPdf-komponent
Den TPdf komponenten hanterar alla PDF-dokumentoperationer inklusive att ladda, spara och komma åt dokumentegenskaper som metadata, bokmärken och sidinformation.
TPdfView-komponent
Den TPdfView komponent är en rullningsbar visuell kontroll som renderar PDF-sidor med smidig rullning, zoomstöd och hantering av användarinteraktion.
Laddar ett PDF-dokument
Att öppna en PDF-fil är enkelt:
|
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; |
Sidnavigering
Att implementera sidnavigering är enkelt med PageNumber egendom:
|
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; |
Zoomkontroll
Den TPdfView komponent erbjuder flexibla zoomalternativ:
|
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]; |
Sidrotation
Rotera sidor med hjälp av Rotation egendom:
|
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; |
Visar dokumentinformation
Få åtkomst till dokumentmetadata via TPdf komponent:
|
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; |
Arbeta med bokmärken
Demon fyller en TreeView med dokumentets bokmärken för enkel navigering:
|
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; |
Renderalternativ
Anpassa renderingen med olika alternativ:
|
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]; |
Slutsats
PDF Viewer-demon ger en solid grund för att bygga in PDF-visningsfunktioner i dina Delphi-applikationer. Med PDFium VCL får du tillgång till samma PDF-renderingsmotor som används av Google Chrome, vilket säkerställer högkvalitativ, exakt PDF-visning.
Komponenten hanterar komplexa PDF-funktioner som anteckningar, formulärfält och inbäddade typsnitt automatiskt, så att du kan fokusera på att bygga programmets unika funktioner snarare än att analysera PDF-filer på låg nivå.
Ladda ner PDFium VCL från loslab.com för att komma igång med PDF-utveckling i Delphi.