PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Device Context zum Postscript oder PDF erzeugen


PatkIllA
2011-09-18, 12:39:37
Ich suche eine Möglichkeit mit vorhandenen GDI Methoden eine PDF-Datei zu erzeugen.
Es kann auch über den Umweg Postscript -> Ghostscript gehen, wie es die ganzen PDF Drucker machen.

xxxgamerxxx
2011-09-22, 12:04:13
Ich suche eine Möglichkeit mit vorhandenen GDI Methoden eine PDF-Datei zu erzeugen.
Es kann auch über den Umweg Postscript -> Ghostscript gehen, wie es die ganzen PDF Drucker machen.

So mit Boardmitteln geht das meines Wissens nicht. Entweder hast du einen PDF Drucker Treiber, dann kannst du ein DeviceContext vom Drucker abrufen. Oder du speicherst das als EMF und convertierst das dann über ein Fremdprogramm nach PDF (oder du machst es selbst, wenn du's kannst/Zeit dafür hast).

PS. Die PDF Drucker sind ja deswegen als Druckertreiber implementiert, damit sich die Anwendung eben nicht drum kümmern muss, sondern nur drucken muss.

PatkIllA
2011-09-22, 13:20:16
Der Code, der aus den Zeichenoperationen das Postscript erzeugt müsste doch auch ohne nutzbar sein, wenn er die entsprechende Schnittstelle hat.
Das Problem ist, dass man mit dem PDF Druckern nicht die volle Kontrolle hat, der Drucker vom Anwender gelöscht bzw manipuliert werden kann. Druckaufträge abgebrochen werden können usw.
Außerdem sollte das ganze in einem Szenario ohne GUI auf einem Server laufen.

Wir nutzen derzeit eine gar nicht so günstige DLL, die das kann. Allerdings ist die mit den Geometriedaten teilweise überfordert, der Support ausgelaufen, Das Produkt an eine andere Firma verkauft worden und es gibt sie nur in 32 Bit.

xxxgamerxxx
2011-09-22, 14:15:57
Der Code, der aus den Zeichenoperationen das Postscript erzeugt müsste doch auch ohne nutzbar sein, wenn er die entsprechende Schnittstelle hat.
Das Problem ist, dass man mit dem PDF Druckern nicht die volle Kontrolle hat, der Drucker vom Anwender gelöscht bzw manipuliert werden kann. Druckaufträge abgebrochen werden können usw.
Außerdem sollte das ganze in einem Szenario ohne GUI auf einem Server laufen.

Wir nutzen derzeit eine gar nicht so günstige DLL, die das kann. Allerdings ist die mit den Geometriedaten teilweise überfordert, der Support ausgelaufen, Das Produkt an eine andere Firma verkauft worden und es gibt sie nur in 32 Bit.

Auf dem Server hast du normalerweise Kontrolle darüber, dass nicht irgend ein Nutzer das Drucken abbricht usw. Wie auch immer, mit GDI kannst du kein PDF/PostScript erzeugen. Ich hatte es so verstanden, dass du das über GDI machen willst, damit genau das als PDF generiert wird, was am Programm angezeigt wird.

Ansonsten kann ja dein Server Programm irgend eine PDF Lib verwenden. Einen PDF Drucker Treiber kannste natürlich auch explizit aus deinem Programm ansprechen. Wird halt nur sehr umständlich sein.

PatkIllA
2011-09-22, 14:21:48
Server ist nur die eine Variante. Die andere ist ein Desktopprogramm, wo man auch auf normale Windowsdrucker drucken kann.
Dass GDI das nicht direkt kann ist mir klar, aber Postscript erzeugen ist ja genau das, was die Druckertreiber machen.
Man kann auch nicht irgendeine PDF Lib nehmen. Wir haben schon einige propiert und die verschlucken sich regelmäßig an den Datenmengen. Mal abgesehen davon dass die meisten Libs ihre eigenen Zeichenobjekte haben und nicht GDI kompatibel sind.

xxxgamerxxx
2011-09-22, 14:52:33
Server ist nur die eine Variante. Die andere ist ein Desktopprogramm, wo man auch auf normale Windowsdrucker drucken kann.
Dass GDI das nicht direkt kann ist mir klar, aber Postscript erzeugen ist ja genau das, was die Druckertreiber machen.
Man kann auch nicht irgendeine PDF Lib nehmen. Wir haben schon einige propiert und die verschlucken sich regelmäßig an den Datenmengen. Mal abgesehen davon dass die meisten Libs ihre eigenen Zeichenobjekte haben und nicht GDI kompatibel sind.

Dann würde ich mir im WDK mal ein Drucker Beispiel suchen, damit du den genauen Aufbau der Schnittstelle kennst.

PatkIllA
2011-09-22, 14:55:38
Im Windows Driver Kit ist ja sogar ein Beispiel Postscript Drucker drin. Das hatte ich früher schon mal gesehen, weswegen es mich wundert, dass man sowas nicht fertig bekommt.