AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TPrintpreview / sdPDF Frage wegen Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

TPrintpreview / sdPDF Frage wegen Fehler

Ein Thema von thomas2009 · begonnen am 23. Apr 2011 · letzter Beitrag vom 24. Apr 2011
Antwort Antwort
thomas2009
(Gast)

n/a Beiträge
 
#1

TPrintpreview / sdPDF Frage wegen Fehler

  Alt 23. Apr 2011, 13:20
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;
Miniaturansicht angehängter Grafiken
dspdf_fehler.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: TPrintpreview / sdPDF Frage wegen Fehler

  Alt 23. Apr 2011, 13:50
Er kann wohl die Datei nicht erzeugen. Woran das liegt, musst Du selbst herausfinden, möglicherweise ein Layer 8-Error
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#3

AW: TPrintpreview / sdPDF Frage wegen Fehler

  Alt 23. Apr 2011, 14:14
Das Liegt nicht an dsPDF selbe sondern an meinen Code, wie ich das Bild in Printpreview lade

Ich teste das Demo von dem Autor ohne Änderung. Ich wollte nur mein eignes Bild als PDF speichern und nicht das Bild von dem Demo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TPrintpreview / sdPDF Frage wegen Fehler

  Alt 23. Apr 2011, 14:18
Ich sehe dort aber keinen Anhaltspunkt für dein Bild
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

AW: TPrintpreview / sdPDF Frage wegen Fehler

  Alt 23. Apr 2011, 14:37
Nun wäre interessant zu wissen, was in FileName steht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#6

AW: TPrintpreview / sdPDF Frage wegen Fehler

  Alt 23. Apr 2011, 21:05
Hast Du Dir diese zusätzlichen pdf-Komponenten heruntergeladen und zugänglich gemacht.
Ggf den Schalter für SYNOPSE ein- oder ausgeschaltet?

[EDIT]
Nee, das wird es nicht sein. Er kann die Datei wohl nicht schreiben.

Geändert von Jens01 (23. Apr 2011 um 21:10 Uhr)
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#7

AW: TPrintpreview / sdPDF Frage wegen Fehler

  Alt 23. Apr 2011, 22:31
Das Problem lag wie ich gedacht habe, an die Methode, wie ich das Bild in Printpreview Form lade

Nun verwende ich die Printpreview Funktion :
Delphi-Quellcode:
procedure TForm2.DrawImageOnlyPage;
var
  PR: TRect;
begin
  with PrintPreview do
  begin
PR := PageBoundsAfterMargin;
...
 PaintGraphicEx(PR, Form1.Image1.Picture.Graphic, True, False, True);
  end;
end;
Dann erscheint keine Fehlermeldung
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#8

AW: TPrintpreview / sdPDF Frage wegen Fehler

  Alt 23. Apr 2011, 23:08
Richtig, für Bitmaps usw brauchst Du dies PaintGraphicEx, sonst kannst Du aber das Canvas von Printpreview einfach benutzen. Ich schreibe da z.B. direkt mit Textout drauf, Linien gehen auch.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: TPrintpreview / sdPDF Frage wegen Fehler

  Alt 24. Apr 2011, 01:14
Zitat:
Das Problem lag wie ich gedacht habe, an die Methode, wie ich das Bild in Printpreview Form lade
Und wozu hat man da jetzt uns gebraucht?
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz