Hi ...
I'm not an image conversion expert, but I noticed that we could export PNGs from FNCWXPDFViewer.
If it helps, this is how I could convert a page to JPEG, using VCL, by changing the OnGeneraqteImagePage
event on TMSFNCWXPDFViewer demo, that is used when you press the PRINT button:
procedure TForm1.TMSFNCWXPDFViewer1GenerateImagePage(Sender: TObject; ImgWidth,
ImgHeight: Integer; Base64ImgPage: string);
var
ms: TMemoryStream;
b: TBytes;
Base64DataImg: string;
ImgPage: TTMSFNCBitmap;
// Added
jpg : TJPEGImage;
bmp : TBitmap;
begin
Base64DataImg := Copy(Base64ImgPage, Pos(',', Base64ImgPage) + 1, Length(Base64ImgPage));
b := TTMSFNCUtils.Decode64ToBytes(Base64DataImg);
ms := TMemoryStream.Create;
ms.Write(b, Length(b));
ms.Position := 0;
ImgPage := TTMSFNCBitmap.Create;
ImgPage.LoadFromStream(ms);
// Added:
//imgpage.SaveToFile('c:\temp\testepdf.png');
bmp := tbitmap.Create;
bmp.Assign(imgpage.Graphic);
jpg := TJPEGImage.Create;
Jpg.ProgressiveEncoding := True;
Jpg.ProgressiveDisplay := True;
Jpg.Performance := jpBestSpeed;
Jpg.Assign(bmp);
Jpg.CompressionQuality := 90;
Jpg.Compress;
jpg.SaveToFile('c:\temp\testepdf.jpg');
jpg.DisposeOf;
bmp.DisposeOf;
// Excluded the printing block
{
TMSFNCPrinter.OnDrawContent :=
procedure
begin
TMSFNCPrinter.Graphics.DrawBitmap(0, 0, TMSFNCPrinter.PageWidth, TMSFNCPrinter.PageHeight, ImgPage, True, True);
TMSFNCPrinter.EndDoc;
end;
TMSFNCPrinter.BeginDoc;
}
end;
In fact the generated file has a JFIF format reference. Would have to check if it's compliant to your jpeg needs.