PDF drucken
lima-city → Forum → Programmiersprachen → Delphi & Pascal
aussehen
befehl
code
dank
datei
datenbank
druck
frage
http
item
komponente
pfad
problem
programm
roten button
sagen
shell
umwandeln
wissen
ziel
-
Hey Leute,
für ein Programm, welches ich zur Zeit schreibe, möchte ich gerne PDF Dateien drucken. Nur finde ich leider keinen Befehl :(
Ich habe Delphi 7.
Noch besser wäre es, wenn mir einer gleichzeitig noch einen Befehl sagen kann, womit ich dem Programm sage, dass er, wenn Nr. 1 ausgesucht ist, er PDF 1 ausdrucken soll und wenn Nr. 2 ausgewählt wurde (in einer Datenbank), dass er durch klicken auf den selbten Button die PFD 2 ausdruckt?
Vielen Dank schon mal.
mfg
m16 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Such' dir am besten eine PFD-Komponente im Internet und arbeite mit der:
http://www.torry.net/pages.php?id=1261
Cool PDF Reader v.1.0
http://www.torry.net/apps/graphics/view/CoolPDFReader.exe
Na das mit der 2. PDF-Datei sollte ja nicht das Problem sein. Verwende irgendein Event (aus der Liste, wo du die Datei auswählst), z.B. das OnDoubleClick, und in der Ereignisroutine lädtst du die Datei in die Komponente und druckst die Datei ...
Wenn du's mit dem installierten PDF-Programm durcken willst (FoxIt Reader, Abode PDF Reade oder was auch immer) sollte es so gehen:
http://www.festra.com/wwwboard/messages/4808.html -
Na das mit der 2. PDF-Datei sollte ja nicht das Problem sein. Verwende irgendein Event (aus der Liste, wo du die Datei auswählst), z.B. das OnDoubleClick, und in der Ereignisroutine lädtst du die Datei in die Komponente und druckst die Datei ...
Schon einmal danke für die Links. Werd mir das Programm mal angucken, was dort angeboten wird.
Leider verstehe ich nicht ganz, was du mit der Ereignisroutine meinst. Eigenltich sollte es ja auch kein OnDoubleClick sein, sondern ein einfacher Button...
mfg
m16 -
sondern ein einfacher Button...
mfg
m16
Dann ist's ja noch einfacher: platzier' einen Button auf deinem Formular, und doppelklick den im Designer. Dann wird automatisch der Prozedurrumpf eingefügt, und du kannst dort reinschreiben, was passieren soll, wenn du den Button klickst ... -
Dann müsste das ja eigentlich eine Rechnung bzw. Befehl sein oder sehe ich das falsch?
Ich weiß nur so grob wie ich das schreiben muss. Kannst mir da auch noch etwas unter die Arme greifen?
Ich meine das müsste ein IF Befehl sein.
If Crouser da und da then
druck das und das
Sehe ich das richtig? Oder wie würdest du das machen?
mfg
m16 -
Oder wie würdest du das machen?
Ich würde das gar nicht machen ;)
Wenn ich dir da weiter helfen soll, wäre es sehr sinnvoll, wenn du etwas genauer dein Problem von Grund auf nochmal beschreibst, vielleicht mit Screenshot des "geplanten" Formulars, ...
Ansonsten ist es schwer und mühsam, dir wirklich zu helfen. Deinem Post allerdings glaube ich zu entnehmen (Befehl, Berechnung, ...), dass du mit Delphi nicht wirklich was am Hut hast, oder zumindest noch nicht lange damit arbeitest. -
Also ich bin seit ca. einem halben Jahr bei Delphi. Grundkenntnisse habe ich.
Folgendes habe ich vor:
Es gibt im Internet gewisse PDF Dateien, die ich in einer Datenbank bei mir eintragen möchte und zum drucken bereitstellen möchte.
Da ich zur Zeit bei der Arbeit bin, werde ich später ein ScreenShot online stellen, um dir zu zeigen wie ich das meine.
mfg
m16
Edit:
So, die Datei ist jetzt online.
http://m16.lima-city.de/Bilder/ScreenShot.JPG
Mein Ziel ist es, wenn ich auf das Rote klicke, dass das Programm dann automatisch auf das Grüne achtet und dann die PDF Druckt, die ich dann vorher dem ausgewählten Grünen zugeteilt habe. Ist das möglich? Und vor allem wie?
mfg
m16
Beitrag geändert: 24.11.2008 17:45:25 von m16 -
Du könntest über
ShellExecute(self.handle,'print', 'deinepdf.pdf', '', '', 0);
den Druckerdialog aufrufen. Das Problem ist, dass du dies für jedes Dokument einzeln machen müsstest. Das könnte man umgehen, indem man eine PDF erstellt in der alle (ausgewählten) PDFs aneinander gereiht werden und temponär als eine Datei wird, welche du dann an den Print-Dialog weiterleitest. Wäre in meinen Augen die einfachste Möglichkeit. -
Du mußt schon entschuldigen, aber ich muß nochmals blöd fragen: Wie liegt die Datei vor? Dein grün markiertes Ziel ist der Pfad zur Datei auf der Festplatte, oder ist das ein BLOB in der Datenbank??
Nein, also beim Grünen darfst du dir als User ein beliebiges Ziel aus der Datenbank suchen. Wenn du jetzt z.B. das Ziel "Hamburg" dort ausgesucht hast, dann soll sich das Programm, wenn du dann auf das Rote klickst, aus einem Unterordner die PDF "Hamburg" nehmen und diese dann drucken.
Also muss er ja eigentlich etwas vergleichen..... so habe ich mir das vorgestellt.
trueweb schrieb:
Du könntest über
ShellExecute(self.handle,'print', 'deinepdf.pdf', '', '', 0);
den Druckerdialog aufrufen. Das Problem ist, dass du dies für jedes Dokument einzeln machen müsstest. Das könnte man umgehen, indem man eine PDF erstellt in der alle (ausgewählten) PDFs aneinander gereiht werden und temponär als eine Datei wird, welche du dann an den Print-Dialog weiterleitest. Wäre in meinen Augen die einfachste Möglichkeit.
Ähm... das erste bei dem
ShellExecute(self.handle,'print', 'deinepdf.pdf', '', '', 0);
Wo soll ich denn die PDF verschieben, dass er sie sieht bzw. wo soll ich den gesamten Pfad angeben?
Würde dann ja ggf. so aussehen
ShellExecute(self.handle,'print', 'C:MeinePDF.pdf', usw.
Das was du probiert hast du zu erklären von wegen PDF erstellen verstehe ich irgendwie gerade überhaupt nicht sry.....
mfg
m16
Edit:
Rechtschreibung :P
[Und wo zum Teufel ist der Fehler beim Zitieren????]
Beitrag geändert: 25.11.2008 21:32:50 von m16 -
So, danke, jetzt kommen wir der Sache näher ;)
Wenn du jetzt im grünen DropDown-Feld, um dabei zu bleiben, Hamburg auswählst, dann würde ich das so machen, wenn du auf den roten Button klickst:
//Den Pfad der ausführbaren Datei, damit du sozusagen dein "Home"-Verzeichnis weißt Home := ExtractFilePath(ParamStr(0)); //überprüfen, ob letztes Zeichen ein Backshlash ist if Home[Length(Home)] <> '' then Home := Home + ''; SubDir := 'WosWasI'; //oder wie auch immer dein Verzeichnis mit den Dateien heißt CompletePath := Home + SubDir; //nur ausführen, wenn überhaupt etwas ausgewählt ist!! if ComboBox.ItemIndex <> -1 then begin FileName := ComboBox.Items[ComboBox.ItemIndex]; CompleteFile := CompletePath + FileName; //Das Drucken sollte ja dann so funktionieren. ShellExecute(self.handle,'print', CompleteFile, '', '', 0); end;
Du brauchst natürlich für die Bildung des Pfads nicht so viele Zwischenschritte, aber ich wollte dir das einfach anschaulich darstellen!
Reicht das so?
-
Also müsste das bei mir und dem Beispiel "Hamburg" ja so aussehen:
Home:= ExtractFilePath(ParamStr(0); if Home[Lenght(Home)] <> '' then Home := Home + ''; SubDir := 'D:Hamburg.pdf'; CompletePath := Home + SubDir; if ComboBox.ItemIndex <> -1 then begin FileName := ComboBox.Items[ComboBox.ItemIndex]; CompleteFile := CompletePath + FileName; Shell Execute(self.handle,'print', CompleteFile, '', '', 0); end;
Wenn nicht so, dann habe ich das leider noch nicht verstanden
Etwas, was ich jetzt aber auch schon nicht weiß ist, wo soll ich diesen Befehl einbauen? Beim roten Button würde ich jetzt sagen, bin mir halt aber nicht sicher.....
Dennoch schon mal danke für deine Gedult mit mir und für deine ersten Ratschläge
mfg
m16
-
du könntest die pdf datei auch umwandeln auf http://www.media-convert.com
-
Also müsste das bei mir und dem Beispiel "Hamburg" ja so aussehen:
Home:= ExtractFilePath(ParamStr(0); if Home[Lenght(Home)] <> '' then Home := Home + ''; SubDir := 'D:Hamburg.pdf'; CompletePath := Home + SubDir; if ComboBox.ItemIndex <> -1 then begin FileName := ComboBox.Items[ComboBox.ItemIndex]; CompleteFile := CompletePath + FileName; Shell Execute(self.handle,'print', CompleteFile, '', '', 0); end;
Wenn nicht so, dann habe ich das leider noch nicht verstanden
Nö, so nicht! Du hast doch gesagt in einem Unterordner ...
Du hast jetzt deine Dateien auf Laufwerk D, oder wie? Das macht es ja noch viel einfacher! Dann muss es richtig heißen:
CompletePath := 'D:'; if ComboBox.ItemIndex <> -1 then begin FileName := ComboBox.Items[ComboBox.ItemIndex]; CompleteFile := CompletePath + FileName; Shell Execute(self.handle,'print', CompleteFile, '', '', 0); end;
Etwas, was ich jetzt aber auch schon nicht weiß ist, wo soll ich diesen Befehl einbauen? Beim roten Button würde ich jetzt sagen, bin mir halt aber nicht sicher.....
Also wenn du in Delphi in der Fomularansicht bist, und auf du auf deinen Menüeintrag zeigst (den du rot markiert hast), dann kannst du (normalerweise) links im Objektinspektor die Eigenschaften (wie z.B. die Caption etc.) einstellen. Dort ist ein Karteireiter "Ereignisse" (oder so), auf den klickst du, und dann müsstest du die möglichen Ereignisbehandlungsroutinen erstellen können, indem du z.B. bei OnClick ein das weiße Feld doppelklickst. Die Ansicht wechselt dann in den Code-Teil, und dort gibst du den Code ein.
Ist aber furchtbar! Für mich horcht sich das an, als hättest du tatsächlich noch nie was programmiert (und nicht nur einfach irgendwas zusammengeklickselt) in Delphi!?
du könntest die pdf datei auch umwandeln auf http://www.media-convert.com
Joa, genau das wollte er wissen ...
Beitrag geändert: 26.11.2008 12:38:48 von burgi -
Ist aber furchtbar! Für mich horcht sich das an, als hättest du tatsächlich noch nie was programmiert (und nicht nur einfach irgendwas zusammengeklickselt) in Delphi!?
Nein, stimmt nicht ganz
Ich bin seit fast einem Jahr mit Delphi beschäftigt und habe diverse Datenbanksysteme geschrieben. Ich habe das Fach auch in der Schule und dort haben wir jetzt die Aufgaben ein Programm zu programmieren. Bei meinem Programm habe ich halt viele Ideen, nur nocht zu wenig Erfahung wie ich das schaffen kann. Mein Lehrer meinte zu mir, wegen der PDF Datei drucken nur, dass das nicht machbar sei. Das hat mich irritiert, daher habe ich hier im Forum gefragt. Und damit ich nicht was falsch verstehe frage ich lieber einmal zu viel nach , als einmal zu wenig ;)
du könntest die pdf datei auch umwandeln auf http://www.media-convert.com
Joa, genau das wollte er wissen ...
Wieso wollte ich das wissen?? Ich kann dort PDF Dateien umwandeln in .txt , .rft usw. aber was hast das mit meinem drucken zu tun? Die PDF Datei stammt ja gar nicht richtig von mir, sprich ich kann daran nicht wirklich viel ändern.
Hab jetzt mal den Code eingebaut, aber Delphi sagt:
Undefinierter Bezeichner: 'CompletePath*
mfg
m16
-
Hab jetzt mal den Code eingebaut, aber Delphi sagt:
Undefinierter Bezeichner: 'CompletePath*
Davon bin ich ausgegangen, dass du die Variablen entsprechend deklarierst (in diesem Fall als String)... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage