ImageEn, unit imageenio

TImageEnIO.LoadFromFilePDF

TImageEnIO.LoadFromFilePDF


Declaration

function LoadFromFilePDF(const FileName: string; Width: Integer = -1; Height: Integer = -1; const Password: string = ''): Boolean;


Description

Loads a PDF image PDF into the attached TImageEnView or TIEBitmap using a plug-in.
You can optionally specify a size to load the PDF file to improve quality (the size will be automatically adjusted to maintain the aspect ratio).
If the file is encrypted you can specify the password (otherwise a password prompt will be displayed if AutoPromptForPassword is enabled).
Result will be false if the file is not PDF format or no PDF plug-ins are available (Aborting will be true). Loading errors due to a file not being available will raise an exception.

PDF loading requires one of the following plug-ins:
ImageEn PDFium Plug-in from: www.imageen.com/download/
WPViewPDF commercial plug-in
ImageMagick + GhostScript


Note:
PDF loading creates a rasterized image of each page (unless PdfViewer = True)
To manipulate PDF files, enable PdfViewer
Use ImageIndex to specify which page of the PDF file to load
Read more about ImageEn PDF Support


Examples

// Load the 3rd page of a PDF file with max dimensions of 1000x1000
ImageEnView1.ImageIndex := 2;
ImageEnView1.IO.LoadFromFilePDF( 'C:\Test.pdf', 1000, 1000 );


// Display a PDF document
ImageEnView1.PdfViewer.Enabled := True;
ImageEnView1.IO.LoadFromFilePDF( 'C:\document.pdf' );


// Merge two PDF documents
ImageEnView1.PdfViewer.Enabled := True;
ImageEnView1.IO.LoadFromFilePDF( 'C:\document.pdf' );
ImageEnView1.PdfViewer.ImportPages( 'C:\morepages.pdf' );
ImageEnView1.IO.SaveToFilePDF( 'C:\merged.pdf' );


// When rendering PDF files scale to double size
IEGlobalSettings().PdfViewerDefaults.DPI := 144;    // PDF files are 72 DPI, so 144 is 200% size
ImageEnView1.IO.LoadFromFilePDF( 'C:\Test.pdf' );


// Save all pages of a PDF file to PNG
filename := 'C:\doc.pdf';
outputFolder := 'D:\';
IEGlobalSettings().PdfViewerDefaults.DPI := 144; // PDF files are 72 DPI, so 144 is 200% size
io := TImageEnIO.Create(nil);
idx := 0;
Repeat
  io.Params.ImageIndex := idx;
  io.LoadFromFilePDF( filename );
  io.SaveToFile( IncludeTrailingBackSlash( outputFolder ) + format( '%s_%d.png', [ ExtractFilename( filename ), idx+1 ] ));
  inc( idx );
Until idx > io.Params.ImageCount - 1;
io.Free;

// Or alternatively...
var
  iev : TImageEnView;
  idx : Integer;
begin
  // Check PDF library available (shows error if not found)
  IEGlobalSettings().PlugInAvailable([ iepiPDFium ], True );

  iev := TImageEnView.Create(nil);
  try
    iev.PdfViewer.Enabled := True;
    iev.IO.LoadFromFilePDF( 'C:\doc.pdf );
    idx := 0;

    Repeat
      iev.IO.SaveToFileJpeg('D:\PageOut_' + idx.ToString + '.jpg');
      inc( idx );
    Until iev.IO.Seek( ieioSeekNext ) <> idx;

  finally
    iev.Free;
  end;
end;


// Determine if a file is password protected
function PdfFileIsPasswordProtected(const Filename: string): Boolean;
var
  iev: TImageEnView;
begin
  Result := False;
  try
    iev := TImageEnView.Create(nil);
    try
      iev.PdfViewer.Enabled := True;
      iev.IO.LoadFromFilePDF( Filename, -1, -1, '' );
    finally
      iev.Free;
    end;
  except
    on e: Exception do
      if e.Message = RsPdfErrorPassword then  // Defined in iexPdfiumCore = 'Invalid password'
        Result := True;
  end;
end;


See Also

PdfViewer
PdfViewerDefaults