Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
12. Nov 2010
Teaser

C#: PDF Datei ohne Adobe Acrobat Fenster drucken (Batchbetrieb)

Sie können direkt aus C# heraus eine PDF drucken, ohne die Anzeige (das Adobe Fenster) vom Acrobat Reader anzuzeigen. Vorallem beim Drucken von PDF ohne Benutzereingabe oder beim Einsatz als Service wird diese Möglichkeit benötigt.

Nutzen Sie meinen folgenden SourceCode als Beispiel:

string pdf = @"C:\Dokumente und Einstellungen\Benutzername\Eigene Dateien\test.pdf";
string acrobat = @"C:\Programme\Adobe\Acrobat 7.0\Reader\AcroRd32.exe";

Process process = new Process();
process.StartInfo.FileName = acrobat;
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "/p /s /h \"" + pdf + "\"";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;

process.Start();
process.CloseMainWindow();

Sollte die erste Version auf Ihrem System nicht funktionieren, nutzen Sie die zweite Methode. Bei dieser wird im 50 ms Takt geprüft, ob der Handle des neuen Adobe Acrobat Fensters verfügbar ist. Danach wird das Adobe Fenser mit einem .Kill() Befehl beendet:

Process process = new Process();

process.StartInfo.FileName = acrobat;
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "/p /s /h \"" + pdf + "\"";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;

process.Start();

DateTime start = DateTime.Now;
IntPtr handle = IntPtr.Zero;

while (handle == IntPtr.Zero && DateTime.Now - start <= TimeSpan.FromSeconds(2))
{
   try
   {
      System.Threading.Thread.Sleep(50);
      handle = process.MainWindowHandle;
   }

   catch (Exception) { }
}

process.Kill();

Auf dem Computer muss jedoch eine Version (hier ist es V7.0) des Adobe Acrobat Readers installiert sein.

Passen Sie die Pfade auf Ihre Version und Ihre PDF Dateien an.

Weitere Informationen zu den wichtigsten Befehlen der Scripte erhalten Sie hier:
process.CloseMainWindow()
process.Kill()

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

10 + 13 =