Developer Tools
|
Office Productivity Applications
|
Platform-Agnostic APIs
|
Home | Online Demos | Downloads | Buy Now | Support | About Us | News | Working Together | Contact Us
The PDFtoolkit API has several methods for finding text in a PDF document. The TgtPDFDocument.SearchAll()
finds all instances of a specified text.
public procedure SearchAll( const Asearchtext: string; AOptions: TgtSearchTypes; var SearchList: TgtStringList; StartPage: Integer = 1 );
After the search is performed, you can use the SearchList
to add link annotations. This code example shows how to add go-to and remote go-to link annotations using the SearchAll
method.
procedure TForm1.Button1Click(Sender: TObject); var Count, LI: Integer; Result1, Result2: TgtStringList; LineAnnot: TgtPDFLineAnnotation; URI: TgtPDFURIAction; GoToRAct: TgtPDFGoToRAction; LinkAnnot1, LinkAnnot2: TgtPDFLinkAnnotation; begin PDFDoc.MeasurementUnit := muPixels; // Create the string lists Result1 := TgtStringList.Create; Result2 := TgtStringList.Create; // Load the input document into the PDFDoc component PDFDoc.LoadFromFile('Input.pdf'); // Create instance of TgtPDFLineAnnotation and assign the properties LineAnnot := TgtPDFLineAnnotation.Create; LineAnnot.LineBeginingStyle := laNone; LineAnnot.LineEndingStyle := laNone; // Search all the instances of Text1 in the document and add them to the string list PDFDoc.SearchAll(Text1, [stWholeWord], Result1); if Result1 <> nil then Count := Result1.Count; // If the Text1 is present in the document, add the link annotation with URI action if Count > 0 then begin // Add the link and line annotation to all the instances of Text1 in the document for LI := 0 to Count - 1 do begin // Create instance of TgtPDFLinkAnnotation and assign the properties LinkAnnot1 := TgtPDFLinkAnnotation.Create; URI := TgtPDFURIAction.Create; URI.URI := edLink.Text; LinkAnnot1.Action := URI; LineAnnot.LineInteriorColor := clBlue; LinkAnnot1.RectLeft := TgtSearchElement(Result1.Objects[LI]) .BoundingRect.Left; LinkAnnot1.RectTop := TgtSearchElement(Result1.Objects[LI]) .BoundingRect.Top; LinkAnnot1.RectRight := TgtSearchElement(Result1.Objects[LI]) .BoundingRect.Right; LinkAnnot1.RectBottom := TgtSearchElement(Result1.Objects[LI]) .BoundingRect.Bottom; LineAnnot.gtLine(LinkAnnot1.RectLeft, LinkAnnot1.RectBottom + 2, LinkAnnot1.RectRight, LinkAnnot1.RectBottom + 2); PDFDoc.InsertAnnotation(LinkAnnot1, TgtSearchElement(Result1.Objects[LI]).PageNum); PDFDoc.InsertAnnotation(LineAnnot, TgtSearchElement(Result1.Objects[LI]).PageNum); LinkAnnot1.Free; URI.Free; end; end; // Search all the instances of Text2 in the document and add them to the string list PDFDoc.SearchAll(Text2, [stWholeWord], Result2); if Result2 <> nil then Count := Result2.Count; // If the Text2 is present in the document, add the link annotation with GoToRAct action if Count > 0 then begin // Add the link and line annotation to all the instances of Text2 in the document for LI := 0 to Count - 1 do begin // Create instance of TgtPDFLinkAnnotation and assign the properties LinkAnnot2 := TgtPDFLinkAnnotation.Create; GoToRAct := TgtPDFGoToRAction.Create; GoToRAct.FileName := edFileName.Text; GoToRAct.OpenInNewWindow := True; GoToRAct.DestinationType := dtFitH; GoToRAct.PageNo := 2; LinkAnnot2.Action := GoToRAct; LineAnnot.LineInteriorColor := clRed; LinkAnnot2.RectLeft := TgtSearchElement(Result2.Objects[LI]) .BoundingRect.Left; LinkAnnot2.RectTop := TgtSearchElement(Result2.Objects[LI]) .BoundingRect.Top; LinkAnnot2.RectRight := TgtSearchElement(Result2.Objects[LI]) .BoundingRect.Right; LinkAnnot2.RectBottom := TgtSearchElement(Result2.Objects[LI]) .BoundingRect.Bottom; LineAnnot.gtLine(LinkAnnot2.RectLeft, LinkAnnot2.RectBottom + 2, LinkAnnot2.RectRight, LinkAnnot2.RectBottom + 2); PDFDoc.InsertAnnotation(LinkAnnot2, TgtSearchElement(Result2.Objects[LI]).PageNum); PDFDoc.InsertAnnotation(LineAnnot, TgtSearchElement(Result2.Objects[LI]).PageNum); LinkAnnot2.Free; GoToRAct.Free; end; end; // Free the string lists and line annotation LineAnnot.Free; Result1.Free; Result2.Free; // Save the changes made to the document PDFDoc.SaveToFile('Output.pdf'); end;
---o0O0o---
Our .NET Developer Tools | |
---|---|
Gnostice Document Studio .NETMulti-format document-processing component suite for .NET developers. |
PDFOne .NETA .NET PDF component suite to create, edit, view, print, reorganize, encrypt, annotate, and bookmark PDF documents in .NET applications. |
Our Delphi/C++Builder developer tools | |
---|---|
Gnostice Document Studio DelphiMulti-format document-processing component suite for Delphi/C++Builder developers, covering both VCL and FireMonkey platforms. |
eDocEngine VCLA Delphi/C++Builder component suite for creating documents in over 20 formats and also export reports from popular Delphi reporting tools. |
PDFtoolkit VCLA Delphi/C++Builder component suite to edit, enhance, view, print, merge, split, encrypt, annotate, and bookmark PDF documents. |
Our Java developer tools | |
---|---|
Gnostice Document Studio JavaMulti-format document-processing component suite for Java developers. |
PDFOne (for Java)A Java PDF component suite to create, edit, view, print, reorganize, encrypt, annotate, bookmark PDF documents in Java applications. |
Our Platform-Agnostic Cloud and On-Premises APIs | |
---|---|
StarDocsCloud-hosted and On-Premises REST-based document-processing and document-viewing APIs |
Privacy | Legal | Feedback | Newsletter | Blog | Resellers | © 2002-2024 Gnostice Information Technologies Private Limited. All rights reserved. |