Developer Tools
|
Office Productivity Applications
|
Platform-Agnostic APIs
|
||||||||||||||||||||||||||







Home | Online Demos | Downloads | Buy Now | Support | About Us | News | Working Together | Contact Us
PDFtoolkit VCL works on existing PDF documents. You don't create new PDF documents with it. But, it does have a method that allows you to insert a blank page to an existing PDF document.
public procedure InsertBlankPageAt(
APageNumber: Integer;
PageWidth: Double;
PageHeight: Double
);
So, you could create a new PDF document from scratch by:
InsertBlankPageAt() method; andYes, it is quite a useful method. In this article, we will not go in that direction. Instead, we will use the InsertBlankPageAt() method to create pages that will hold images exported from a multi-page TIFF image.
Following is the source code of a Delphi console application. It uses Erik Van Bilsen's Delphi GDI+ library to extract frames from a multipage TIFF image. The extracted images are then rendered on to a blank PDF page inserted using InsertBlankPageAt().
program TIFF_To_PDF_With_eDocEngine;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes, Windows, Graphics, jpeg,
GdiPlus, GdiPlusHelpers, // Using Erik van Bilsen's Delphi GDI+ library
gtPDFClasses, gtCstPDFDoc, gtExPDFDoc, gtExProPDFDoc, gtPDFDoc;
var
TIFFImage: IGPImage;
PageGuid: TGUID;
Bitmap1: TBitmap;
FrameCount, PageCount, I, J: Integer;
PageRange: string;
PageDimensions: TGPSizeF;
gtPDFDocument1: TgtPDFDocument;
gtImageWatermarkTemplate1: TgtImageWatermarkTemplate;
begin
try
// Load the mult-frame TIFF image
TIFFImage := TGPBitmap.FromFile('multi_page.tiff');
// Obtain the number of frames in the TIFF image
PageGuid := FrameDimensionPage;
FrameCount := TIFFImage.GetFrameCount(PageGuid);
if PageCount > 0 then begin
// Load an existing PDF document
gtPDFDocument1 := TgtPDFDocument.Create(nil);
gtPDFDocument1.LoadFromFile('input_doc.pdf');
// Find last page number
J := gtPDFDocument1.PageCount;
// Iterate through all frames in the TIFF image
for I := 0 to FrameCount - 1 do begin
// Select a frame
TIFFImage.SelectActiveFrame(PageGuid,I);
// Obtain dimensins of current frame
TIFFImage.GetPhysicalDimension(PageDimensions);
// Insert new page after last page - new page has same
// dimension as current frame of TIFF image
J := J + 1;
gtPDFDocument1.InsertBlankPageAt(J,
PageDimensions.Width,
PageDimensions.Height);
// Save current frame to an temporary JPEG image
TIFFImage.Save('temp_frame.bmp', TGPImageFormat.Bmp);
// Load temporary image
Bitmap1 := TBitmap.Create;
Bitmap1.LoadFromFile('temp_frame.bmp');
// Render image on the new PDF page as an image watermark
gtImageWatermarkTemplate1 := TgtImageWatermarkTemplate.Create;
with gtImageWatermarkTemplate1 do begin
X := 0;
Y := 0;
Image := Bitmap1;
HorizPos := hpCenter;
VertPos := vpMiddle;
end;
gtPDFDocument1.InsertWatermark(gtImageWatermarkTemplate1, IntToStr(J));
Bitmap1.FreeImage;
end;
// Save modified PDF document to a new file
gtPDFDocument1.SaveToFile('output_doc.pdf');
// Free resources
gtPDFDocument1.Reset;
end;
except
on E: Exception do begin
Writeln(E.ClassName, ': ', E.Message);
Readln;
end;
end;
end.
The above code used the following PDF document as the input file.

Bilsen's Delphi GDI+ library was used for extract frames from a multipage TIFF image.

After running the code, frames from the TIFF image were rendered new pages inserted into the PDF document.

---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-2026 Gnostice Inc. All rights reserved. |