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