PDF-Dokumente zusammenfügen
Dieses Skript zeigt, wie alle generierten PDF-Einzeldokumente am Ende in ein PDF-Dokument zusammengefügt werden kann.
Konfiguration
Das Skript wird als AfterLastDocument ausgeführt.
Es werden Referenzen auf folgende DevExpress-Dlls aus dem cobra-Verzeichnis benötigt:
C:\Program Files (x86)\cobra\CRMPRO\Programm\Module\DevExpress.Docs.v21.2.dll
C:\Program Files (x86)\cobra\CRMPRO\Programm\Module\DevExpress.Pdf.v21.2.Core.dll
C:\Program Files (x86)\cobra\CRMPRO\Programm\Module\DevExpress.Pdf.v21.2.Drawing.dll
Ideen
Es werden aus dem PrintContext alle Dokumente ausgelesen, die erzeugt wurden.
Es wird zunächst ein neues leeres PDF-Dokument mit DevExpress erzeugt.
Es werden alle generierten Dokumente in das Ergebnis-PDF eingefügt.
Skript
// Version 5
namespace Ruthardt.PrintPlus.Skripting
{
using System;
using System.IO;
using System.Linq;
using DevExpress.Pdf;
using System.Diagnostics;
using Ruthardt.PrintPlus.Model.Enumerations;
using Ruthardt.PrintPlus.Model.Interfaces;
public class PdfsZusammenfuehren : IScriptAction
{
public void Execute(IPrintContext printContext, ICurrentContext currentContext, IChildContext childContext)
{
if (printContext.ExportFormat != ExportFormats.Pdf)
{
return;
}
if (!printContext.CurrentDocumentFileNameList.Any())
{
return;
}
// PDFs zusammenführen via DevExpress
var outputPath = Path.Combine(printContext.ExportDirectory.FullName, printContext.Config.ConfigurationName + "_" + DateTime.Now.ToString("dd-MM-yy_hhmm") + ".pdf");
using (PdfDocumentProcessor pdfDocumentProcessor = new PdfDocumentProcessor())
{
pdfDocumentProcessor.CreateEmptyDocument(outputPath);
foreach(FileInfo fileInfo in printContext.CurrentDocumentFileNameList)
{
pdfDocumentProcessor.AppendDocument(fileInfo.FullName);
}
}
// PDF direkt öffnen
System.Diagnostics.Process.Start(outputPath);
}
}
}
Last updated