You are not logged in.
Pages: 1
I modifi the code, but the problem is same.
for i:= 0 to imgList.Count-1 do
begin
w := TBitmap(ImageList[i]).Width;
h := TBitmap(ImageList[i]).Height;
w:=((w/felbontas)*2.54)*(PDF_W/A4_W)*10;
h:=((h/felbontas)*2.54)*(PDF_H/A4_H)*10;
lblW.caption := FloatToStr(w);
lblh.caption := FloatToStr(h);
JpgImage.Assign(TBitmap(ImageList[i]));
JpgImage.CompressionQuality := 70;
JpgImage.Compress;
JpgImage.SaveToStream(mstream);
page := PDF.AddPage;
Pdf.Canvas.SetPage(page);
PdfImage := TPdfImage.CreateJpegDirect(pdf,mstream);
Pdf.AddXObject('Image'+IntToStr(i), PdfImage);
Pdf.Canvas.DrawXObject(10, PDF_H-h-30, w, h, 'Image'+IntToStr(i));
end;
So you think that?
I want to create a PDF document from images. One image per pages.
My code is not work correct.
The first page is correct, but i see the second page, the Acrobat Reader throw "Out of memmory" error dialog.
If i create unique TPdfPage variable all pages the PSD document is corret, but i use array of TPdfPage the pdf document not correct.
What is the problem in this code?
This code create incorrect PDF document:
const
PDF_W = 595;
PDF_H = 842;
A4_W = 210;
A4_H = 297;
var pdf : TPdfDocument;
PdfImage: TPdfImage;
JpgImage : TJPEGImage;
mstream : TMemoryStream;
PageList: array of TPdfPage;
w, h : extended;
i : integer;
begin
pdf := TPdfDocument.Create;
SetLength(PageList,imgList.Count);
for i:= 0 to imgList.Count-1 do
begin
w := TBitmap(ImageList[i]).Width;
h := TBitmap(ImageList[i]).Height;
w:=((w/felbontas)*2.54)*(PDF_W/A4_W)*10;
h:=((h/felbontas)*2.54)*(PDF_H/A4_H)*10;
lblW.caption := FloatToStr(w);
lblh.caption := FloatToStr(h);
JpgImage.Assign(TBitmap(ImageList[i]));
JpgImage.CompressionQuality := 70;
JpgImage.Compress;
JpgImage.SaveToStream(mstream);
PageList[i] := PDF.AddPage;
Pdf.Canvas.SetPage(PageList[i]);
PdfImage := TPdfImage.CreateJpegDirect(pdf,mstream);
Pdf.AddXObject('Image'+IntToStr(i), PdfImage);
Pdf.Canvas.DrawXObject(10, PageList[i].PageHeight-h-30, w, h, 'Image'+IntToStr(i));
end;
This code create correct PDF document:
Page := PDF.AddPage;
Pdf.Canvas.SetPage(Page);
PdfImage := TPdfImage.CreateJpegDirect(pdf,mstream);
Pdf.AddXObject('Image0', PdfImage);
Pdf.Canvas.DrawXObject(10, page.PageHeight-h-30, w, h, 'Image0');
Page1 := PDF.AddPage;
Pdf.Canvas.SetPage(Page1);
PdfImage := TPdfImage.CreateJpegDirect(pdf,mstream);
Pdf.AddXObject('Image1', PdfImage);
Pdf.Canvas.DrawXObject(100, page.PageHeight-h-30, w, h, 'Image1');
Page2 := PDF.AddPage;
Pdf.Canvas.SetPage(Page2);
PdfImage := TPdfImage.CreateJpegDirect(pdf,mstream);
Pdf.AddXObject('Image2', PdfImage);
Pdf.Canvas.DrawXObject(10, page.PageHeight-h-230, w, h, 'Image2');
Thanks.
Best Regards.
Joe
Pages: 1