Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  EPLAN Electric P8
  C# pdf druck anstoßen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für EPLAN
Autor Thema:  C# pdf druck anstoßen (2250 mal gelesen)
A.Robert
Mitglied
staatl. gepr. Techniker


Sehen Sie sich das Profil von A.Robert an!   Senden Sie eine Private Message an A.Robert  Schreiben Sie einen Gästebucheintrag für A.Robert

Beiträge: 441
Registriert: 09.03.2015

EPLAN Electric P8 - Select
Version:
2.6 HF4
2.8 HF4 / SQL
2.9 SP1 Update 14 / ProPanel

erstellt am: 08. Sep. 2016 14:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Leute,


ich weiß das ist nicht unbedingt EPLAN P8 Thema.
Kurze Vorgeschichte:
Ich erzeuge zwei pdf´s aus einem script heraus (farbe und sw). Diese werden an einem bestimmten Ordner / Pfad abgelegt.
Nun möchte ich für die "sw-Version" einen Druck anstoßen.   
Habe jetzt diverse Wege ausprobiert, bin aber zu keinem Ergebnis gekommen. 

PS: drucken aus dem Eplan kann ich nicht, da die pdf mit einem bestimmten Schema erstellt wird.

Hoffe ihr könnt mir weiterhelfen 

------------------
Gruß Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fency
Mitglied
Eplan Konstrukteur


Sehen Sie sich das Profil von fency an!   Senden Sie eine Private Message an fency  Schreiben Sie einen Gästebucheintrag für fency

Beiträge: 185
Registriert: 15.07.2011

erstellt am: 08. Sep. 2016 15:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für A.Robert 10 Unities + Antwort hilfreich

Hi Robert,

Schau dir mal die 2 Links an.
Hab sie nicht getestet, aber scheint vernünftig.

https://dotnet-snippets.de/snippet/beliebige-dateien-drucken
http://www.mycsharp.de/wbb2/thread.php?threadid=75516

Ansonsten liefert Google jede Menge Beispiele.

------------------
Eplan 5.70 Prof.
Eplan P8 2.0 Prof. (mit Optionstool)
Eplan P8 2.1 SP1 Prof. (mit Optionstool)

[Diese Nachricht wurde von fency am 08. Sep. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

A.Robert
Mitglied
staatl. gepr. Techniker


Sehen Sie sich das Profil von A.Robert an!   Senden Sie eine Private Message an A.Robert  Schreiben Sie einen Gästebucheintrag für A.Robert

Beiträge: 441
Registriert: 09.03.2015

EPLAN Electric P8 - Select
Version:
2.6 HF4
2.8 HF4 / SQL
2.9 SP1 Update 14 / ProPanel

erstellt am: 08. Sep. 2016 16:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ja google liefert jede Menge Müll ... wenn du wüstest, wieviele Seiten ich heute schon durchgelesen habe 
trotzdem DANKE 

Code:

            string pdffolder = @"HIER-VERZEICHNIS-EINTRAGEN"; //dieser Ordner wird gedruck
            PrintDialog pDialog = new PrintDialog();
            if (pDialog.ShowDialog() == DialogResult.OK)
            {
                DirectoryInfo unzippedFolder = new DirectoryInfo(pdffolder);
                foreach (FileInfo file in unzippedFolder.GetFiles())//print each PDF-file within the unzipped folder
                {
                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    startInfo.FileName = @"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe";
                    Process process = new Process();
                    startInfo.Arguments = string.Format("/h /t \"{0}\" \"{1}\"", file.FullName, pDialog.PrinterSettings.PrinterName);//file.FullName: full path of PDF file                         
                    //startInfo.CreateNoWindow = true;
                    startInfo.ErrorDialog = false;
                    startInfo.UseShellExecute = false;
                    process = Process.Start(startInfo);
                    if (!process.WaitForExit(7000))
                    {
                        // kill Adobe Reader
                        process.Kill();
                    }
                }
            }

Hab das von hier: http://www.mycsharp.de/wbb2/thread.php?threadid=116503&hilight=pdf+drucken
Einziger Minus, das Fenster drucken geht mit auf und man muss es mit OK bestätigen. Kann man aber später noch anpassen.

------------------
Gruß Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

F.S.
Moderator



Sehen Sie sich das Profil von F.S. an!   Senden Sie eine Private Message an F.S.  Schreiben Sie einen Gästebucheintrag für F.S.

Beiträge: 1815
Registriert: 23.04.2003

EPLAN Electric P8
2023 Prof.

erstellt am: 08. Sep. 2016 16:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für A.Robert 10 Unities + Antwort hilfreich

Ich habe mal das Bastelprojekt für deinen PDF Export um einen PDF ausdruck erweitert.
Ein kurzer Test zeigte das es funktioniert. Es ist der von fency genannte 1. Link.

Code:

using System.Diagnostics;
using System.IO;

public class Script
{
[Start]
public void Test()
{
string strZielDatei;
strZielDatei = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\Test1.pdf";

PDFexportSeite(strZielDatei);

PrintPDFFile(strZielDatei);

return;
}

public void PDFexport(string strZielDatei)
{
//Export durchführen
ActionCallingContext pdfContext = new ActionCallingContext();
pdfContext.AddParameter("type", "PDFPROJECTSCHEME"); //PDFPROJECTSCHEME = Projekt im PDF-Format exportieren
pdfContext.AddParameter("exportscheme", "Test 1"); //verwendetes Schema
pdfContext.AddParameter("exportfile", strZielDatei); //Name export.Projekt, Vorgabewert: Projektname
pdfContext.AddParameter("exportmodel", "0"); //0 = keine Modelle ausgeben

CommandLineInterpreter cmdLineItp = new CommandLineInterpreter();
cmdLineItp.Execute("export", pdfContext);

return;
}

public void PDFexportSeite(string strZielDatei)
{

CommandLineInterpreter oCLI1 = new CommandLineInterpreter();
ActionCallingContext pdfContext = new ActionCallingContext();

pdfContext.AddParameter("EXPORTSCHEME", "Test 1");
pdfContext.AddParameter("PAGEFILTER", "FILTER_Name");
pdfContext.AddParameter("USEPAGEFILTER", "1");
pdfContext.AddParameter("TYPE", "PDFPAGESSCHEME");
pdfContext.AddParameter("EXPORTFILE", strZielDatei);

oCLI1.Execute("export", pdfContext);

return;
}

/// <summary>
/// Druckt ein PDF Dokument
/// </summary>
/// <param name="strZielDatei">Pfad zum Dokument</param>
public static void PrintPDFFile(string strZielDatei)
{
FileInfo fileInfo = new FileInfo(strZielDatei);
if (!fileInfo.Exists)
{
throw new FileNotFoundException();
}

int id = 0;

try
{
using (Process proc = new Process())
{
proc.StartInfo.Verb = "print";
proc.StartInfo.FileName = strZielDatei;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.ErrorDialog = true;
proc.Start();

id = proc.Id;
proc.WaitForExit(10000);
}
}
catch
{
//IGNORE
}
finally
{
killProcessById(id);
}

return;
}

/// <summary>
/// Beendet einen Prozess an Hand seiner Id
/// </summary>
/// <param name="id">ProcessId</param>
private static void killProcessById(int id)
{
foreach (Process p in Process.GetProcesses())
{
if (p.Id == id)
{
p.Kill();
break;
}
}
}
}


------------------
grüße
FrankS

[Diese Nachricht wurde von F.S. am 08. Sep. 2016 editiert.]

[Diese Nachricht wurde von F.S. am 08. Sep. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

A.Robert
Mitglied
staatl. gepr. Techniker


Sehen Sie sich das Profil von A.Robert an!   Senden Sie eine Private Message an A.Robert  Schreiben Sie einen Gästebucheintrag für A.Robert

Beiträge: 441
Registriert: 09.03.2015

EPLAN Electric P8 - Select
Version:
2.6 HF4
2.8 HF4 / SQL
2.9 SP1 Update 14 / ProPanel

erstellt am: 08. Sep. 2016 16:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

     bin etwas eingeschüchtert. So schnell geht das also, wenn man Ahnung hat      werde das mal testen. DANKE

Habe gerade auch noch den obigen ersten Code von mir angepasst, um Datei nach dem Druckauftrag zu löschen.

Code:

            //dieser Ordner wird gedruckt (Achtung alle Dateien, drin sind!!!)
            string pdffolder = @"HIER-VERZEICHNIS-EINTRAGEN";

            //Pfad + Dateiname + Endung (.pdf) erstellen, für Delete Anweisung
            string pdffile = pdffolder + PressureBK + tbDateiname.Text;
            string pdfEND = ".pdf";
            string pdffileprint = pdffile + pdfEND;

            PrintDialog pDialog = new PrintDialog();

            if (pDialog.ShowDialog() == DialogResult.OK)
            {
                DirectoryInfo unzippedFolder = new DirectoryInfo(pdffolder);


                foreach (FileInfo file in unzippedFolder.GetFiles())
                {
                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    startInfo.FileName = @"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe";
                    Process process = new Process();
                    startInfo.Arguments = string.Format("/h /t \"{0}\" \"{1}\"", file.FullName, pDialog.PrinterSettings.PrinterName);
                    startInfo.ErrorDialog = false;
                    startInfo.UseShellExecute = false;
                    process = Process.Start(startInfo);

                    // kill Adobe Reader + kill File
                    if (!process.WaitForExit(7000))
                    {
                        process.Kill();
                        File.Delete(pdffileprint);
                    }
                }
            }


------------------
Gruß Robert

[Diese Nachricht wurde von A.Robert am 09. Sep. 2016 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

A.Robert
Mitglied
staatl. gepr. Techniker


Sehen Sie sich das Profil von A.Robert an!   Senden Sie eine Private Message an A.Robert  Schreiben Sie einen Gästebucheintrag für A.Robert

Beiträge: 441
Registriert: 09.03.2015

EPLAN Electric P8 - Select
Version:
2.6 HF4
2.8 HF4 / SQL
2.9 SP1 Update 14 / ProPanel

erstellt am: 09. Sep. 2016 09:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo FrankS,

es fehlt noch die using System;
Hast wahrscheinlich beim markieren übersehen bzw. ausgelasssen.
Nur zur Vollständigkeit 

------------------
Gruß Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

F.S.
Moderator



Sehen Sie sich das Profil von F.S. an!   Senden Sie eine Private Message an F.S.  Schreiben Sie einen Gästebucheintrag für F.S.

Beiträge: 1815
Registriert: 23.04.2003

EPLAN Electric P8
2023 Prof.

erstellt am: 09. Sep. 2016 09:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für A.Robert 10 Unities + Antwort hilfreich

nö, geht hier mit den 2 usings direkt am Anfang.

------------------
grüße
FrankS

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

A.Robert
Mitglied
staatl. gepr. Techniker


Sehen Sie sich das Profil von A.Robert an!   Senden Sie eine Private Message an A.Robert  Schreiben Sie einen Gästebucheintrag für A.Robert

Beiträge: 441
Registriert: 09.03.2015

EPLAN Electric P8 - Select
Version:
2.6 HF4
2.8 HF4 / SQL
2.9 SP1 Update 14 / ProPanel

erstellt am: 09. Sep. 2016 12:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von F.S.:
nö, geht hier mit den 2 usings direkt am Anfang.

Bei mir hat er ohne using System; das Environment angemeckert .. Naja ist ja egal 

Ein schönes WE an alle 

------------------
Gruß Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

A.Robert
Mitglied
staatl. gepr. Techniker


Sehen Sie sich das Profil von A.Robert an!   Senden Sie eine Private Message an A.Robert  Schreiben Sie einen Gästebucheintrag für A.Robert

Beiträge: 441
Registriert: 09.03.2015

EPLAN Electric P8 - Select
Version:
2.6 HF4
2.8 HF4 / SQL
2.9 SP1 Update 14 / ProPanel

erstellt am: 12. Sep. 2016 10:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Moin,

habe deine Variante jetzt bei mir eingebaut. Habe nur ein kleines Problem ... Bei großen pdf-Dokumenten reicht die Zeit nicht aus (habe diese hoch gesetzt), hat aber jetzt bei kleinen Dokumenten einen unschönen Nebeneffekt (Adobe viel zu lange auf). Kann man das vielleicht anders abfangen? Mach mich auch gleichg auf die Suche google 
Gemeint ist die Zeile hier:
proc.WaitForExit(10000);

------------------
Gruß Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

A.Robert
Mitglied
staatl. gepr. Techniker


Sehen Sie sich das Profil von A.Robert an!   Senden Sie eine Private Message an A.Robert  Schreiben Sie einen Gästebucheintrag für A.Robert

Beiträge: 441
Registriert: 09.03.2015

EPLAN Electric P8 - Select
Version:
2.6 HF4
2.8 HF4 / SQL
2.9 SP1 Update 14 / ProPanel

erstellt am: 06. Mrz. 2017 09:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


PDF_druck_Anzahl.txt

 
Hallo zusammen,

wollte das Script um Anzahl der Ausdrucke erweitern. Dazu stoße ich den pro.Start() durch eine For-Schleife mehrmals an.
Der Ausdruck läuft sauber ab, nur das beenden des Prozesses und das löschen der Datei funktioniert sporadisch.

Kann mir hier jemand mit mehr Ahnung vom scripting helfen 
Danke schon mal 

hier der Code von der Testdatei, die ich erstellt habe (ist auch im Anhang):

Code:

using Eplan.EplApi.Scripting;
using System.Diagnostics;
using System.IO;
using System;

public class PDF_druck_Anzahl
{
    public string strZielDatei = "";

    [Start]
    public void Function()
    {
        int anzahl = 3;
        int durchlauf = 1;
        int zeit;
        zeit = 7000 * durchlauf;

        strZielDatei = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\Test1.pdf";

        int id = 0;
        FileInfo fileInfo = new FileInfo(strZielDatei);
        if (!fileInfo.Exists)
        {
            throw new FileNotFoundException();
        }
        else
        {
            using (Process proc = new Process())
            {
                proc.StartInfo.Verb = "print";
                proc.StartInfo.FileName = strZielDatei;
                proc.StartInfo.CreateNoWindow = true;
                proc.StartInfo.UseShellExecute = true;
                proc.StartInfo.ErrorDialog = true;

                for (durchlauf = 1; durchlauf <= anzahl; durchlauf++)
                {
                    proc.Start();
                }
                proc.WaitForExit(zeit);
                id = proc.Id;
                if (!proc.WaitForExit(zeit))
                {
                    killProcessById(id);
                }
            }
        }
    }

    private void killProcessById(int id)
    {
        foreach (Process p in Process.GetProcesses())
        {
            if (p.Id == id)
            {
                p.Kill();
                File.Delete(strZielDatei);
               
            }
        }
    }
}



------------------
Gruß Robert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz