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;
}
}
}
}