Zum Inhalt springen

Datei drucken


matthiasr

Empfohlene Beiträge

19.07.2006 15:55:00 Datei drucken

Hallo zusammen,

ich möchte eine Datei drucken, speziel ein PDF. Nun habe ich einige gefunden wie ich Pixelgenau drucken kann, aber ich möchte ein vorhandenes File, so wie es ist, einfach nur drucken. Wie mache ich das. Unter VB6 habe ich es mit ShellExecute gemacht, aber in VB.Net bekomme ich eine mir unbekannte Fehlermeldung

(Ein Aufruf an die PInvoke-Funktion "DVNrSuche!DVNrSuche.frmMain::ShellExecute" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur ...)

Währe schön wenn Ihr mir weiter helfen könntet.

Danke

Matthias

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Matthias,

Ein PDF zu drucken setzt voraus, dass auf dem Rechner ein entsprechendes Programm installiert ist (logisch).

Willst Du das per Code tun, musst Du eine Schnittstelle zu diesem Programm haben, mit deren Hilfe Du damit kommunizieren kannst! Die primitivste wäre die Shell, in der Du einfach die EXE dieses Programms (ich nehme an es ist der AcroReader von Adobe) mit einem Parameter aufrufst, der diesem dann sagt, dass nur das File gedruckt (nicht geöffnet, nicht die GUI gestartet) werden soll.

Das ist natürlich nicht unbedingt die eleganteste Lösung und das Programm muss sie wie gesagt auch unterstützen; womöglich sieht Dein PDF-Reader ja gar keinen solchen Parameter vor!

Es gibt aber zum Glück noch andere Schnittstellen als gerade mal die Shell. OLE ist z.B. immer noch weit verbreitet. Hier kannst Du, wenn Du das OLE-Objekt kennst, in Deinem Programm eine Instanz davon erstellen und seine Methoden benutzen, um z.B. das PDF zu drucken.

Hierbei musst Du schauen, ob Dein PDF-Reader OLE unterstützt. (Ich weiß nicht, ob der von Adobe das tut, aber ist gut möglich)

Nicht zuletzt, bei einem verbreiteten Format wie PDF, ist es nicht unwahrscheinlich, dass sich mal jemand die Mühe gemacht hat, das ganze selbst zu programmieren und der Öffentlichkeit zugänglich zu machen.

Dann könntest Du den Code dazu in Dein Programm einbinden und das PDF-File selbst parsen und drucken! Vorteil dieser Lösung wäre: Dein Programm würde auch funktionieren, wenn auf dem Zielrechner kein PDF-Reader installiert ist!

Eine schöne Suchmaschine für Codeschnipsel aller möglichen Lizenzen findest Du hier! Viel Glück!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Code Poet,

vielen Dank für Deine Antwort. Das Programm soll nur auf Prog Rechnern laufen, auf denen Acrobat installiert ist.

Unter VB6 haben wir es so gemacht

ret = ShellExecute(0, "PRINTTo", Dateipfad, Drucker, "", 0)

somit kann ich bestätigen, dass es mit Adobe funktioniert.

Wenn ich allderings diese Funktion in .Net verwende bekomme ich den oben beschriebenen Fehler. Meine bisherige suche hat immer nur dazu geführt, dass ich was darüber erfahren habe wie man wo einen Pixel setzt, aber nicht wie ich ein einfaches Doku drucke.

Matthias

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Matthias,

die Funktion ShellExecute steht in der Library shell32.dll und wird extern implementiert. Ohne das Projekt und den Rechner zu kennen würde ich vermuten, dass mit der selben Library und dem selben Call unter jeder anderen Programmiersprache auch derselbe Fehler ausgelöst würde.

Es wäre hilfreich, die komplette Fehlermeldung zu sehen, aber offensichtlich gab es hier eine ungültige Stackoperation ("...Ungleichgewicht im Stapel...").

Es ist generell nicht so empfehlenswert, derartige Aufrufe in der Windows-API zu starten, wenn man damit nicht so heimisch ist.

Ein Kollege meinte gerade, es gibt für .NET eine Komponente, die Dir Arbeiten mit PDF erleichtert:

Hier findest Du Näheres.

Direktes Drucken aus einer Applikation ist damit in jedem Fall möglich!

Wenn sichergestellt ist, dass auf allen Rechnern der AcroReader installiert ist, dann würde ich alternativ mal dort nachforschen, ob es dazu eine API gibt, mit der Du den Reader direkt anweisen kannst, ein bestimmtes Dokument zu drucken. Gibt es die, wird das auch relativ einfach sein!

Gruß,

Das Füchslein

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...