Entwickler-Ecke

Sonstiges (Delphi) - PDF erstellen


Silvio - So 22.04.12 16:23
Titel: PDF erstellen
Hallo Zusammen,

kann mir jemand sagen, wie ich den Inhalt eines Memofeldes und ein Image (bmp) in ein PDF umwandeln kann.

Danke für eure Antworten


bummi - So 22.04.12 16:33

kam mir irgendwie bekannt vor ....
http://www.delphi-forum.de/viewtopic.php?t=108814&highlight=drucken


Silvio - So 22.04.12 16:39

stimmt....
.... aber mit dem dort geschriebenen steht ja nur was zum drucken und nicht zum umwandeln in ein PDF!

Also bin für alles offen


jaenicke - So 22.04.12 17:04

user profile iconSilvio hat folgendes geschrieben Zum zitierten Posting springen:
.... aber mit dem dort geschriebenen steht ja nur was zum drucken und nicht zum umwandeln in ein PDF!
Öhm, ich helfe deinem Gedächtnis mal auf die Sprünge... ;-)
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
PDFs lassen sich in Delphi leicht mit der Synopse PDF Engine erstellen. ;-)
[url]synopse.info/fossil/wiki?name=Downloads[/url]


Silvio - So 22.04.12 17:12

welche datei muss ich jetzt integrieren?? und was muss ich im Programm berücksichtigen??


jaenicke - So 22.04.12 17:18

Schau doch einfach mal in den Download rein... :roll:
Der Quelltext ist sehr gut dokumentiert. Es steht überall eine Beschreibung dran was welche Klasse und welche Methode macht...
Unter anderem:

SynPdf.pas
 
924:
925:
{ ... }
  /// the main class of the PDF engine, processing the whole PDF document
  TPdfDocument = class(TObject)


Silvio - So 22.04.12 17:22

das stimmt, es ist viel beschrieben, aber auf englisch!!!
aber trotzdem danke

Moderiert von user profile iconNarses: Beiträge zusammengefasst

beim ausdrucken, bin ich bislang bis hierher gekommen

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm2.Drucken1Click(Sender: TObject);
var i: Integer;
begin
printer.BeginDoc;
Printer.Canvas.Font.Size := 12;
Printer.Canvas.Font.Name := 'Verdana';
for i := 0 to memo1.lines.count -1 do Begin
  printer.canvas.textout( 0, i * printer.Canvas.TextHeight( Memo1.Lines[i] ) , Memo1.Lines[i]);
End;
Printer.Canvas.Draw(4000,3000,Image1.Picture.Bitmap);
printer.EndDoc;
end;


//automatischer seitenumbruch fehlt!!
//abstand oben, rechts und links einhalten, und bild vergrößern
// bild soll immer an der selben stelle stehen

es fehlen aber noch so einige sachen und ich habe keine ahnung wie ich die ändern kann.
wenn ich das bild größer hinbekomme, dann stimmt was anderes nicht mehr.
ich kann einfach nicht so gut programmieren wie ihr. ich mache das auch nur aus spaß an der freude.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


bummi - So 22.04.12 17:34

gerade weil das ganze eine derartig aufwändige Rechnerei ist und bleibt, werden üblicherweise Reportgeneratoren verwendet (Fatsreport/Rave/Quickreport etc ...) die einem die Arbeit weitestgehend abnehmen.
Wenn Du es zu Übungszwecken weiter versuchen willst solltest Du Dir Printers und Canvas erarbeiten (in jedem Fall sinnvoll).