=

Daschmi's Notizblog

RSS Feed

PDFs automatisch aus Ordner drucken mit C#

Erstellt in C#, Sonstiges am 26. November 2015

Aufgabenstellung war das Drucken von PDF Dokumenten die automatisiert auf einem Netzlaufwerk abgelegt werden. Letztendlich habe ich es über ein kleines C# Programm gelöst welches den Acrobat aufruft, das Dokument druckt und anschließend löscht.

Im Beispiel werden alle Dokumente gedruckt, die im Ordner „U:\PRINT\“ abgelegt werden. Dem Programm können zwei Parameter übergeben werden, einmal der Pfad zum Acrobat Reader und einmal der Ordner der überwacht werden soll.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Diagnostics;

namespace ConsoleApplication1
{

    class Program
    {

        static void Main(string[] args)
        {

            String strAcrobat = @"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe";
            String strPath = @"C:\Users\Daniel\Desktop\PRINT\";

            if (args.Length == 2 && !String.IsNullOrEmpty(args[0])) strAcrobat = args[0];
            if (args.Length == 2 && !String.IsNullOrEmpty(args[1])) strPath = args[1];

            do
            {

                while (!Console.KeyAvailable)
                {

                    string[] arFiles = Directory.GetFiles(strPath);

                    foreach (String strFile in arFiles)
                    {

                        Console.WriteLine("Drucke :" + strFile);

                        ProcessStartInfo procStartInfo = new ProcessStartInfo(strAcrobat, " /p /h " + strFile);

                        procStartInfo.RedirectStandardOutput = true;
                        procStartInfo.UseShellExecute = false;
                        procStartInfo.CreateNoWindow = true;

                        System.Diagnostics.Process proc = new System.Diagnostics.Process();
                        proc.StartInfo = procStartInfo;
                        proc.Start();
                        proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

                        if (proc.HasExited == false)
                        {
                            proc.WaitForExit(10000);
                        }

                        proc.EnableRaisingEvents = true;

                        proc.Close();
                        KillAdobe("AcroRd32");

                        Console.WriteLine("Lösche :" + strFile);
                        Console.WriteLine("");

                        File.Delete(strFile);

                    }

                }

            } while (Console.ReadKey(true).Key != ConsoleKey.Escape);

        } // static void Main(string[] args)

        private static bool KillAdobe(string name)
        {

            foreach (Process clsProcess in Process.GetProcesses().Where(clsProcess => clsProcess.ProcessName.StartsWith(name)))
            {

                clsProcess.Kill();

                return true;

            }

            return false;

        } // private static bool KillAdobe(string name)

    }

}

C# Notitzen

Erstellt in C# am 10. Mai 2012

  • Pfad zur Programmdatei in C# ermitteln
    [csharp]string pathBase = System.Threading.Thread.GetDomain().BaseDirectory;[/csharp]
  • Externes Programm mit C# aufrufen und Rückgabe verarbeiten (Die Funktion sollte mittels try/catch behandelt werden)
    [csharp]public string Externcall(string cmd, string parameter)
    {

    ProcessStartInfo procStartInfo = new ProcessStartInfo(cmd, parameter);

    procStartInfo.RedirectStandardOutput = true;
    procStartInfo.UseShellExecute = false;
    procStartInfo.CreateNoWindow = true;

    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo = procStartInfo;
    proc.Start();

    string result = proc.StandardOutput.ReadToEnd();

    return result;

    } // public string Externcall(string cmd, string parameter)[/csharp]

  • ini Datei mit C# einlesen und verarbeiten (Im Beispiel m1_app.ini im Programmverzeichnis)
    [csharp]
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string section,
    string key, string def, StringBuilder retVal, int size, string filePath);

    public string GetConf(string section, string key)
    {

    const int size = 255;
    string file = System.Threading.Thread.GetDomain().BaseDirectory + "m1_app.ini";
    string def = "";

    StringBuilder sb = new StringBuilder(size);
    GetPrivateProfileString(section, key, def, sb, size, file);

    return sb.ToString();

    } // public string GetConf(string section, string key)

    [/csharp]

  • Datei mit C# schreiben
    [csharp]public void writeFile(string file, string content)
    {

    StreamWriter mySaveFile = new StreamWriter(file);
    mySaveFile.Write(content);
    mySaveFile.Close();

    } // void public writeFile(string file, string content)[/csharp]

  • Datei mit C# einlesen und zurückgeben
    [csharp]
    public string readFile(string file)
    {

    return File.ReadAllText(file, Encoding.Default);

    } // public string readFile(string file)[/csharp]

  • String Ersetzung mit C#
    [csharp]strConf = strConf.Replace("###WINVERSION###", strWinVersion);[/csharp]


Bitte genehmigen Sie die Verwendung von Cookies dieser Website! Mehr Informationen

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close