PDFium Component Docs

Hurtig start-guide

Denne vejledning hjælper dig med at komme i gang med PDFium VCL-komponenter på få minutter

Trin 1: Opret et nyt projekt

  1. Opret en ny VCL Forms Application i din IDE
  2. Gem projektet på et praktisk sted

Trin 2: Tilføj komponenter til din formular

  1. Åbn losLab-komponentpaletten
  2. Træk en TPdf-komponent ind på din formular
  3. Træk en TPdfView-komponent ind på din formular
  4. Angiv Pdf-egenskaben på TPdfView, så den peger på din TPdf-komponent

Trin 3: Indlæs din første PDF

Enkel PDF-indlæsning:

// Indlæs en PDF-fil
Pdf1.FileName := 'C:\Sample.pdf';
Pdf1.Active := True;
ShowMessage('Sider: ' + IntToStr(Pdf1.PageCount));

// Eller indlæs fra en hukommelsesstrøm
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;

Trin 4: Grundlæggende PDF-handlinger

Sidevisning

// Gå til næste side
if PdfView1.PageNumber < Pdf1.PageCount then
  PdfView1.PageNumber := PdfView1.PageNumber + 1;

// Gå til forrige side
if PdfView1.PageNumber > 1 then
  PdfView1.PageNumber := PdfView1.PageNumber - 1;

Tekstudtræk

// Udtræk al tekst fra den aktuelle side
Pdf1.PageNumber := 1;
Memo1.Text := Pdf1.Text;

// Udtræk tekst fra et rektangulært område
var
  RectText: WString;
begin
  RectText := Pdf1.TextInRectangle(100, 100, 500, 200);
  ShowMessage(RectText);
end;

Textsøgning

// Find tekst i dokumentet
var
  Position: Integer;
begin
  Position := Pdf1.FindFirst('search term');
  if Position >= 0 then
    ShowMessage('Fundet på position: ' + IntToStr(Position))
  else
    ShowMessage('Ikke fundet');
end;

Opret en ny PDF

// Opret en ny PDF med tekst
Pdf1.CreateDocument;
Pdf1.Compressed := True; // aktivér strømkomprimering
Pdf1.Active := True;
Pdf1.AddPage(0, 595, 842); // A4-størrelse
Pdf1.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf1.SaveAs('C:\NewDocument.pdf');
Pdf1.Active := False;

Zoom og visning

// Indstil zoomniveau (1.0 = 100%)
PdfView1.Zoom := 1.5; // 150%

// Indstil visningstilstand
PdfView1.DisplayMode := dmSingleContinuous;

// Roter side
PdfView1.Rotation := ro90;

Trin 5: Dokumentegenskaber

// Læs dokumentmetadata
ShowMessage('Titel: ' + Pdf1.Title);
ShowMessage('Forfatter: ' + Pdf1.Author);
ShowMessage('Skaber: ' + Pdf1.Creator);
ShowMessage('Producent: ' + Pdf1.Producer);
ShowMessage('Sider: ' + IntToStr(Pdf1.PageCount));
ShowMessage('Version: ' + IntToStr(Ord(Pdf1.PdfVersion)));

Trin 6: Adgangskodebeskyttede dokumenter

// Åbn en adgangskodebeskyttet PDF
Pdf1.FileName := 'C:\Protected.pdf';
Pdf1.Password := 'mypassword';
Pdf1.Active := True;

Trin 7: Store dokumenter (strømningsindlæsning)

For PDF-filer i fler-GB-klassen eller kilder med fjern- eller databaseunderstøttelse skal du bruge LoadCustomDocument, så PDFium henter blokke efter behov i stedet for at bufferere hele filen i hukommelsen:

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

Trin 8: Sidelayout (TPdfView FitMode)

FitMode holder lange dokumenter indrammet automatisk ved Resize og når den aktuelle side ændres:

PdfView1.FitMode := pfmFitPage; // hele siden i visningsområdet
// pfmFitWidth — sidebredden matcher visningsområdets bredde
// pfmActualSize — 100%
// pfmNone — manuel zoom

// Mørk tilstand for fremviser-mønster: mørkt rulleområde, papirhvid PDF-side
PdfView1.Color := clBlack;
PdfView1.PageColor := clWhite;

Trin 9: Søgefremhævning

HighlightSearchText scanner den aktuelle visningsside og tegner en HighlightColor-maske over hvert match ved hver genoptegning:

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

// Skift til en anden side rydder automatisk fremhævningen

Trin 10: PDF/A-arkivoutput

SaveAsPdfA efterbehandler den oprindelige gemning med en inkrementel opdatering, der indsætter en XMP-metadata-strøm, en sRGB ICC OutputIntent og et opdateret dokumentkatalog:

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

// Tjek overensstemmelse for et indgående dokument
case Pdf1.PdfAConformance of
  pac1b: Log.Add('PDF/A-1b');
  pacNone: Log.Add('Ikke PDF/A');
end;

Næste trin