I am using version 9.16 of the QuickPDF library. I use the Imagelib TMultiImage component for the conversion. The images saved to file are correct.
procedure TMainform.ConvertImage1Click(Sender: TObject);
var
i,j,n: Integer;
ImgID, nImgID: Integer;
ImgCount: Integer;
ImgName1, ImgName2: string;
ImgType: Integer;
ImgConverted: Integer;
FPrivdir: string;
FileExt: string;
FFileName: string;
retval: Integer;
begin
Screen.Cursor := crHourGlass;
FPrivdir:= sm.slashAdd(LmdSysInfo1.TempPath);
FileExt:= sm.locase(ElcomboBox1.Text);
ImgConverted:= 0;
try
ImgCount := Qp.FindImages;
j:= ImgCount;
imgId := QP.GetImageID(j);
while j > 0 do
begin
qp.SelectImage(ImgID);
ImgType := Qp.ImageType;
if ImgType = 2 then
begin
ImgName1 := FPrivdir + 'PdfImage.bmp';
ImgName2 := FPrivdir + Format('PdfImage.%s',[FileExt]);
MultiImage1.ImageName:= '';
QP.SaveImageToFile(Imgname1);
MultiImage1.ImageName:= Imgname1; {This will load the image file}
If sm.EqualIC(FileExt,'jpg') then
MultiImage1.SaveAsJpg(ImgName2)
else if sm.EqualIC(FileExt,'gif') then
MultiImage1.SaveAsGIF(Imgname2)
else if sm.EqualIC(FileExt,'png') then
MultiImage1.SaveAsPNG(Imgname2);
nImgID:= qp.AddImageFromFile(ImgName2,0);
retval:= qp.ReplaceImage(ImgID, nImgID);
If retval = 0 then
ShowMessage('Image not replaced');
retval:= qp.ClearImage(ImgID);
If retval = 0 then
ShowMessage('Image not cleared');
Inc(ImgConverted);
end;
Dec(j);
imgId := QP.GetImageID(j);
end;
Screen.Cursor := crDefault;
If ImgConverted > 0 then
begin
ShowMessage(Format('%d Embedded images successfully converted',[ImgConverted]));
FFileName:= FSelectedFile;
n:= sm.posIC('.pdf', FFileName);
System.Insert('[IC]',FFileName, n);
Qp.SaveToFile(FFileName);
end
else
ShowMessage('No image to convert');
finally
Screen.Cursor := crDefault;
end;
end;