PDFium Component Docs

Οδηγός γρήγορης εκκίνησης

Αυτός ο οδηγός θα σε βοηθήσει να ξεκινήσεις με τα στοιχεία PDFium VCL μέσα σε λίγα μόνο λεπτά

Βήμα 1: Δημιουργία νέου έργου

  1. Δημιούργησε ένα νέο VCL Forms Application στο IDE σου
  2. Αποθήκευσε το έργο σε μια βολική τοποθεσία

Βήμα 2: Προσθήκη στοιχείων στη φόρμα σου

  1. Άνοιξε την παλέτα στοιχείων losLab
  2. Τοποθέτησε ένα στοιχείο TPdf στη φόρμα σου
  3. Τοποθέτησε ένα στοιχείο TPdfView στη φόρμα σου
  4. Όρισε την ιδιότητα Pdf του TPdfView ώστε να δείχνει στο στοιχείο TPdf

Βήμα 3: Φόρτωση του πρώτου σου PDF

Απλή φόρτωση PDF

// Φόρτωση ενός αρχείου PDF
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));

// Ή φόρτωση από ροή μνήμης
var
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  try
    Stream.LoadFromFile('C:\Sample.pdf');
    Pdf1.LoadDocument(Stream, True);
    Pdf1.Active := True;
  finally
    Stream.Free;
  end;
end;

Βήμα 4: Βασικές λειτουργίες PDF

Πλοήγηση σελίδων

// Μετάβαση στην επόμενη σελίδα
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Μετάβαση στην προηγούμενη σελίδα
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Εξαγωγή κειμένου

// Εξαγωγή όλου του κειμένου από την τρέχουσα σελίδα
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Εξαγωγή κειμένου από ορθογώνια περιοχή
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Αναζήτηση κειμένου

// Εύρεση κειμένου στο έγγραφο
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('search term');
  if Position >= 0 then
    ShowMessage('Found at position: ' + IntToStr(Position))
  else
    ShowMessage('Not found');
end;

Δημιουργία νέου PDF

// Δημιουργία νέου PDF με κείμενο
Pdf1.CreateDocument;
Pdf1.Compressed := True; // ενεργοποίηση συμπίεσης ροής
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // μέγεθος A4
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Ζουμ και εμφάνιση

// Ορισμός επιπέδου ζουμ (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Ορισμός λειτουργίας εμφάνισης
PdfView1.DisplayMode := dmSingleContinuous;

// Περιστροφή σελίδας
PdfView1.Rotation := ro90;

Βήμα 5: Ιδιότητες εγγράφου

// Ανάγνωση μεταδεδομένων εγγράφου
ShowMessage('Title: ' + Pdf1.Title);
ShowMessage('Author: ' + Pdf1.Author);
ShowMessage('Creator: ' + Pdf1.Creator);
ShowMessage('Producer: ' + Pdf1.Producer);
ShowMessage('Pages: ' + IntToStr(Pdf1.PageCount));
ShowMessage('Version: ' + IntToStr(Ord(Pdf1.PdfVersion)));

Βήμα 6: Έγγραφα με προστασία κωδικού

// Άνοιγμα PDF με προστασία κωδικού
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Βήμα 7: Μεγάλα έγγραφα (φόρτωση με ροή)

Για PDF πολλών GB ή απομακρυσμένες πηγές / πηγές με βάση δεδομένων, χρησιμοποίησε LoadCustomDocument ώστε το PDFium να τραβά μπλοκ κατ' απαίτηση αντί να αποθηκεύει ολόκληρο το αρχείο στη μνήμη

var
  FileStream: TFileStream;
begin
  FileStream := TFileStream.Create('C:\Huge.pdf', fmOpenRead or fmShareDenyWrite);
  Pdf1.LoadCustomDocument(FileStream, True); // AOwnsStream
  Pdf1.Active := True;
end;

Βήμα 8: Διάταξη σελίδας (TPdfView Fit Mode)

FitMode κρατά τα μεγάλα έγγραφα αυτόματα πλαισιωμένα στο Resize και όταν αλλάζει η τρέχουσα σελίδα

PdfView1.FitMode := pfmFitPage; // ολόκληρη σελίδα στο παράθυρο προβολής
// pfmFitWidth — το πλάτος της σελίδας ταιριάζει με το πλάτος του παραθύρου προβολής
// pfmActualSize — 100%
// pfmNone — χειροκίνητο ζουμ

// μοτίβο προβολέα σκοτεινής λειτουργίας: σκοτεινή περιοχή κύλισης, PDF σε χρώμα χαρτιού
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Βήμα 9: Επισήμανση αναζήτησης

HighlightSearchText σαρώνει την τρέχουσα σελίδα προβολής και ζωγραφίζει μια μάσκα HighlightColor πάνω σε κάθε αντιστοίχιση σε κάθε ανανέωση

var
  MatchCount: Integer;
begin
  PdfView1.HighlightColor := clYellow;
  MatchCount := PdfView1.HighlightSearchText('invoice');
  Status.Caption := IntToStr(MatchCount) + ' matches';
end;

// Η μετάβαση σε άλλη σελίδα καθαρίζει αυτόματα την επισήμανση

Βήμα 10: Αρχειακή έξοδος PDF/A

SaveAsPdfA επεξεργάζεται εκ των υστέρων τη βασική αποθήκευση με μια σταδιακή ενημέρωση που εισάγει μια ροή μεταδεδομένων XMP, ένα sRGB ICC OutputIntent και έναν ενημερωμένο κατάλογο εγγράφου

if Pdf1.SaveAsPdfA('C:\Report.pdfa.pdf', pac1b) then
  ShowMessage('Saved PDF/A-1b');

// Έλεγχος συμμόρφωσης ενός εισερχόμενου εγγράφου
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Not PDF/A');
end;

Επόμενα βήματα