Hallo,
ich teste gerade diese Komponente Ohne Erfahrung mit der Sache
Ich lege mein Bild in Printpreview einfach so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Rect1: TRect;
begin
with Form2.PrintPreview do
begin
BeginDoc;
try
Rect1 := Rect(40,40, Image1.width*40, Image1.Height*40);
Canvas.StretchDraw(Rect1, Image1.Picture.Graphic);
finally
EndDoc;
end;
end;
Form2.Show; // preview Form
end;
Das Bild erscheint nun in Printpreview Form
Nun möchte ich das Bild als PDF speichern, indem Ich auf PDF Symbole in Preview Form Klicke
Preview
unit wo Fehler erscheint :
Delphi-Quellcode:
...
procedure TPrintPreview.SaveAsPDF(const FileName: String);
var
PageNo: Integer;
{$IFDEF SYNOPSE}
pdf: TPdfDocument;
{$ELSE}
AnyPageRendered: Boolean;
{$ENDIF}
begin
{$IFDEF SYNOPSE}
pdf := TPdfDocument.Create;
try
ChangeState(psSavingPDF);
try
pdf.Info.CreationDate := Now;
pdf.Info.Creator := PDFDocumentInfo.Creator;
pdf.Info.Author := PDFDocumentInfo.Author;
pdf.Info.Subject := PDFDocumentInfo.Subject;
pdf.Info.Title := PDFDocumentInfo.Title;
pdf.DefaultPageWidth := ConvertX(PaperWidth, Units, mmPoints);
pdf.DefaultPageHeight := ConvertY(PaperHeight, Units, mmPoints);
pdf.NewDoc;
DoProgress(0, TotalPages);
for PageNo := 1 to TotalPages do
begin
case DoPageProcessing(PageNo) of
pcAccept:
begin
pdf.AddPage;
pdf.Canvas.RenderMetaFile(Pages[PageNo]);
end;
pcCancellAll:
Exit;
end;
DoProgress(PageNo, TotalPages);
end;
pdf.SaveToFile(FileName);
finally
ChangeState(psReady);
end;
finally
pdf.Free;
end;
{$ELSE}
if dsPDF.Exists then
begin
ChangeState(psSavingPDF);
try
dsPDF.BeginDoc(AnsiString(FileName));
try
dsPDF.SetDocumentInfoEx(PDFDocumentInfo);
AnyPageRendered := False;
DoProgress(0, TotalPages);
for PageNo := 1 to TotalPages do
begin
case DoPageProcessing(PageNo) of
pcAccept:
begin
if AnyPageRendered then
dsPDF.NewPage;
dsPDF.SetPage(PaperType, Orientation,
ConvertX(PaperWidth, Units, mmHiMetric),
ConvertY(PaperHeight, Units, mmHiMetric));
dsPDF.RenderMetaFile(Pages[PageNo]);
AnyPageRendered := True;
end;
pcCancellAll:
Exit;
end;
DoProgress(PageNo, TotalPages);
end;
finally
dsPDF.EndDoc; // Fehler wird hier markiert
end;
finally
ChangeState(psReady);
end;
end
else
raise EPDFLibraryError.Create(SdsPDFError);
{$ENDIF}
end;