Diese Skript zeigt, wie man die Ergebnisdokument einer Ausgabe in anderes Verzeichnis kopieren kann.
Konfiguration
Es handelt sich um einen Exporter der ein Dokument generiert (Word, Excel, Text).
Das Skript wird als AfterLastDocument ausgeführt.
Optional: Es ist in ein Dokumentenfeld für die Ablage definiert.
Ideen
Wenn ein Dokumentenfeld konfiguriert ist werden die Ergebnis-Dokumente automatisch im DMS abgelegt und im Ergebnisverzeichnis entfernt. In manchen Fällen werden die Dokumente jedoch nochmal als Kopie benötigt. Dies kann mit diesem Skript bewerkstelligt werden.
// Version 5
namespace Ruthardt.PrintPlus.Skripting
{
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using Ruthardt.Common.Util;
using Ruthardt.CobraBase.Functions.Access.Ado;
using Ruthardt.CobraFramework.Ado;
using Ruthardt.PrintPlus.Export.Context;
using Ruthardt.PrintPlus.Model;
using Ruthardt.PrintPlus.Model.Interfaces;
using Ruthardt.PrintPlus.Model.Enumerations;
public class ExportResultCopyScript : IScriptAction
{
public void Execute(IPrintContext printContext, ICurrentContext currentContext, IChildContext childContext)
{
// Diese Variante kopiert die Ergebnisse der Ausgabe zurück in den Ausgabe Ordner.
// Es ist nur sinnvoll einsetzbar, wenn ein DMS-Feld für die Ablage definiert ist und das DMS die Dateien nicht am Ursprungsort belässt.
// Nur in diesem Fall werden die Dokumente aus dem Ausgabeverzeichnis gelöscht und können mit diesem Skript wieder zurück kopiert werden.
string exportDir = printContext.ExportDirectory.FullName;
// In dieser Variante kann auch ganz anderes Verzeichnis genutzt werden.
exportDir = "MyDirectory/Subfolder";
var resultFiles = printContext.CurrentDocumentFileNameList;
// Verzeichnis anlegen wenn nicht vorhanden.
if(!Directory.Exists(exportDir))
{
Directory.CreateDirectory(exportDir);
}
// Über alle Ergebnisse Iterieren und die Dokumente kopieren.
foreach(var resultFile in resultFiles)
{
File.Copy(resultFile.FullName, Path.Combine(exportDir, resultFile.Name));
}
// Ausgabeverzeichnis öffnen - Optional
Process.Start(exportDir);
}
}
}