PDF Writer als Druckertreiber



  • Du kannst auch den PDFCreator benutzen.

    Dieser erzeugt einen Registry Eintrag:
    PDFCreator
    -Program
    --AutosaveDirectory
    --AutosaveFilename

    Mit einer Klasse zum lesen und schreiben der Registry (Google) kannst Du dann das Verzeichnis und den Filenamen in die Registry schreiben und danach einfach auf den PDFCreator drucken. Dann passiert genau das was Du willst.

    Ich würde Dir noch empfehlen PDFCreator Help gut anzuschauen.

    Edit:
    Wenn Du nicht in die Registry schreiben willst:

    1.) Dann kannst Du den PDF Creator auch so konfigurieren dass er die Datei immer als zB. MyDoc.pdf ins Temp verzeichnis druckt. Danach kopierst Du die Datei mit dem gewünschten Namen in das gewünschte Verzeichnis.

    2.) Du steuerst den PDFCreator übder die COM Schnittstelle an.



  • SeppJ schrieb:

    Gnozo schrieb:

    Jedoch lerne ich dabei nicht, wie ich den selber programmiere und das ist mein Ziel.... 😉

    Oder du machst es wie der Nutzer "Fuchs aus dem Wald" hier im Forum, der seit über 6 Monaten versucht, einen JPEG-Decoder zu schreiben - bisher ohne Erfolg. Ihm haben auch alle gesagt, dass es viel zu schwierig ist, daran zu lernen und hatten wohl Recht (JPEG schätze ich übrigens als wesentlich einfacher ein).

    Naja, also ich bin mal gespannt.
    Letztstand war ja dass er meinte er habe die Daten jetzt als RGB-Array vorliegen. Wobei er sie noch nicht visuell kontrolliert hatte - kann natürlich sein dass da nur Quark drinsteht 🙂



  • Gnozo schrieb:

    ... automatisch erkennen, worum es in dem Dokument geht und es entsprechend benennen.

    Oje...

    Das klingt wirklich nach VBA-Makro. Für jede Anwendung extra, wo dann "exportieren als..." oder so aufgerufen wird.

    In Visio hab ich das mal gemacht, automatisch alle Tabs als Bilder exportiert und die Dateinamen entsprechend generiert. Ist aber nicht das, was Du willst.

    Oder LibreOffice (zumindest die Linux-Version): Da gibt es einen Button "Direktes Exportieren als PDF". OK, man muss nochmal den Dateinamen abnicken.

    Man könnte auch ein Script schreiben, was das PDF-Ablage-Verzeichnis nach neuen Dateien durchsucht, diese scannt, ggf. umbenennt und automatisch weiterkopiert...



  • Ich kann leider keine dritt Software benutzen. Das Unternehmen möchte gerne diesen Treiber dann anbieten können. Somit entfällt die Möglichkeit zum Beispiel PDFCreator zu nehmen.

    Ich versuche es jetzt mit dem XPS Format und habe einen Beispiel Treiber aus dem WinDDK. Den XPSDriverSample.

    Alles ist soweit vorbereitet und der Beispieltreiber funktioniert auch. Ich muss jetzt nur noch die richtige Stelle im Code finden, wo ich den Dateipfad übergeben kann. Am besten wäre es, wenn man den Dateipfad in einer Config Datei speichern könnte und der Treiber auf diese Zugreift. Ebenso für den Dateinamen.

    Das wird wohl noch eine harte Nuss. Ist nicht wenig Code, der da zu überblicken ist.

    Wenn jemand Anhaltspunkte hat, in welcher Source oder Header Datei ich die entsprechende Stelle finde. Immer her damit! 🙂

    Gruß
    Lukas



  • Wenn deine Firma den Treiber anbieten(=verkaufen?) will, solltest Du dich erstmal schlaumachen, ob Du dafür einfach so den kopierten Beispielcode von Microsoft verbraten darfst.



  • Windows macht das Ganze gleich noch mal ekelhafter.
    Um die ersten Schritte im Treiberfeld zu machen bietet sich Linux deutlich mehr an. Allein schon aufgrund der Tonnen an Opensource-Code.



  • So,

    Ich bin meinem Ziel wirklich näher gekommen.

    Dank diesen Threads:
    http://social.msdn.microsoft.com/Forums/en-US/wdk/thread/14f551f7-0f8a-4d0d-876b-09fa42077888

    Wie im vorletztem Post beschrieben muss ich an der Stelle

    "hr = pWriter->WriteBytes(pData, cbData, &cbWritten);"

    In einer "nuppage.cpp" meinen Code einfügen muss. Schauen wir mal, was denn genau WriteBytes ist und wie man es anwendet.

    Dann gebe ich nochmal Laut von mir! 🙂



  • Ich baue ein Auto!
    In meinem Buch steht ("Fixieren sie die Kurbelwelle mit einer 21mm Federstahlschraube")

    Jetzt schaue ich mal nach was eine 21mm Federstahlschraube ist und wie man sie benutzt!

    Sorry, das konnte ich mir nicht verkneifen ...



  • Es geht hier um ein Praktikum, welches mir einen Arbeitsplatz sichern soll, damit ich aus meiner Arbeitslosigkeit rauskomme, da ich dieses Jahr meinen Abschluss zum Anwendungsentwickler gemacht habe und meine Firma mich nicht übernimmt.

    Da helfen mir solche Kommentare herzlich wenig.

    Ich durchforste das Internet nach jeder nützlichen Situation, damit ich diese Aufgabe schaffe. Da kann sich so ein Troll wie du doch zurückhalten, wenn er nichts produktives zu sagen hat oder?

    Ich hatte leider noch nichts mit Treiberprogrammierung am Hut außer in der Berufsschule mit so einem Robotino und einem klickibunti Programm.


  • Mod

    Dann bist du für die Stelle einfach vollkommen unterqualifiziert. Wenn es gehässige Internetkommentare braucht, um dich darauf aufmerksam zu machen, dann ändert das trotzdem nichts an der Tatsache. Die Art von Fragen und wo du fragst zeigt eindeutig, dass Treiberentwicklung viel zu hoch für dich ist. Das musst du doch selber erkennen, auch wenn's weh tut. Vermutlich könnte niemand hier im Forum den Auftrag, so wie du sie beschreibst, aus dem Stand erfüllen, da hier einiges an Expertenwissen aus mehreren verschiedenen Bereichen notwendig ist. Bei dir hakt es schon bei den Grundlagen.

    Daher kann und wird dir das auch niemand vormachen und deine Fragen werden eher zurückhaltend beantwortet. Das fertige Programm wird sicherlich hunderte Expertenstunden in der Entwicklung nötig haben und entsprechend zehntausende Euro wert sein. Keinen Praktikantennachmittag. Es gibt auch sicherlich keine Videotutorials "Wie programmiere ich einen PDF-Druckertreiber für Dummies". Das wäre wirklich wie ein "Autobau für Anfänger".

    Oder du drückst dich höchst unglücklich aus. Wie schon mehrmals festgestellt wurde klingt deine Beschreibung stellenweise nach etwas, was man mit einem VB-Makro lösen könnte. Es gehört eben auch zur Programmierung, dass man korrekt ausdrücken kann, was man möchte und einen Plan hat, welche Mittel man so ungefähr einsetzen müsste.



  • Normalerweise werden hier auch keine Treiber entwickelt. Das Unternehmen beschränkt sich auf ein ERP-System (SAP) und entwickelt auch Addons für dieses Programm.

    Ziel ist es ein Programm, Script oder halt Treiber zu schaffen, welcher aus SAP über die ganz normale Funktion "Drucken" angesteuert werden kann.
    Der Endkunde soll nur den jeweiligen Drucker auswählen und bestätigen. Der Rest soll im Hintergrund ablaufen. Der Datei soll ein eindeutiger Name gegeben werden, wie zum Beispiel "Dokument_001.xps" und in einem festen Pfad abgespeichert werden. Zum Beispiel in "C:\XPSDrucke".

    Der Gedanke war halt ein XPSDrucker Beispiel, wie das aus dem WinDDK, zu nehmen und in dem richtigen Moment den Namen und Pfad automatisch zu setzen. Ebenso muss aber der Dialog "Speichern als" ausgeblendet werden.

    Wie gesagt, soll der Endanwender nur "Drucken" klicken, "XPSDrucker", auswählen und bestätigen. Daraufhin soll in einem Ordner eine entsprechende Datei zu finden sein.

    Mir ist das ganze auch nicht ganz schlüssig. Das vergeben eines Dateinamen und des entsprechendem Pfades dauert...... 30 Sekunden?..... warum dafür extra so viel Aufwand machen, für etwas, was sagen wir mal..... unwichtig ist?

    Naja, wenn Chefe das haben will.....


  • Mod

    Gnozo schrieb:

    Mir ist das ganze auch nicht ganz schlüssig. Das vergeben eines Dateinamen und des entsprechendem Pfades dauert...... 30 Sekunden?..... warum dafür extra so viel Aufwand machen, für etwas, was sagen wir mal..... unwichtig ist?

    http://xkcd.com/1205/
    Passt doch.



  • SeppJ schrieb:

    Gnozo schrieb:

    Mir ist das ganze auch nicht ganz schlüssig. Das vergeben eines Dateinamen und des entsprechendem Pfades dauert...... 30 Sekunden?..... warum dafür extra so viel Aufwand machen, für etwas, was sagen wir mal..... unwichtig ist?

    http://xkcd.com/1205/
    Passt doch.

    Ich glaube ich schick Ihm das jetzt mal. Kommentarlos.....


Anmelden zum Antworten