spongebob24
Goto Top

Programm für Automatischen Druck + Erstellung einer Trennseite

Hallo Zusammen

ich habe Ordner in denen täglich mehrere PDF´s erstellt werden.
Sobald diese einen bestimmten Dateinamen haben, sollten diese Automatisch ausgedruckt werden.
Am besten wäre, wenn auch eine Trennseite mit Ordner 1 dann die Eigentlichen PDF´s aus Ordner 1 dann Trennseite Ordner 2 dann die PDF´s aus Ordner 2 usw.... erstellt werden.
Auch sollte das Programm immer alles doppelt drucken können.

Kennt jemand von euch so ein Programm?

SG

Content-ID: 433232

Url: https://administrator.de/contentid/433232

Ausgedruckt am: 25.11.2024 um 12:11 Uhr

chiefteddy
chiefteddy 27.03.2019 aktualisiert um 11:06:29 Uhr
Goto Top
Hallo.

wenn auch eine Trennseite mit PDF1 dann das Eigentliche PDF dann Trennseite PDF2 usw.... erstellt werden.

Das kann man in der Regel bei (Netzwerk-) Druckern direkt konfigurieren oder gegebenenfalls beim Printserver. Nennt sich "Banner"

Auch sollte das Programm immer alles doppelt drucken können.

Auch das läßt sich direkt beim Drucker bzw Printserver konfigurieren.

Sobald diese einen bestimmten Dateinamen haben, sollten diese Automatisch ausgedruckt werden.

Hier ist wohl eigene Arbeit notwendig: Programm erstellen, das den Ordner permanent überwacht und entsprechend Druckaufträge startet.

Jürgen
erikro
erikro 27.03.2019 um 11:22:07 Uhr
Goto Top
Moin,

guck mal hier. Das kann man bestimmt anpassen:
PDF via Powershell drucken - Reader nach druck schließen

hth

Erik
spongebob24
spongebob24 27.03.2019 um 15:53:47 Uhr
Goto Top
Hi,

hab mir mal was gebastelt mit ITextsharp und Powershell.
Das würde mir schon reichen, rest mache ich mit der Schnittstelle.

Nur zwei Fragen hätte ich noch........

Kann ich nach dem zusammenführen der einzelnen PDF´s diese löschen lassen, und das ausgegebene PDF (hier A80) in einen Archivordner verschieben lassen?

SG

$workingDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path;
$pdfs = ls $workingDirectory -recurse | where {-not $_.PSIsContainer -and $_.Extension -imatch "^\.pdf$"};

[void] [System.Reflection.Assembly]::LoadFrom(
[System.IO.Path]::Combine($workingDirectory, 'itextsharp.dll')
);

$output = [System.IO.Path]::Combine($workingDirectory, 'A80.pdf');
$fileStream = New-Object System.IO.FileStream($output, [System.IO.FileMode]::OpenOrCreate);
$document = New-Object iTextSharp.text.Document;
$pdfCopy = New-Object iTextSharp.text.pdf.PdfCopy($document, $fileStream);
$document.Open();

foreach ($pdf in $pdfs) {
$reader = New-Object iTextSharp.text.pdf.PdfReader($pdf.FullName);
$pdfCopy.AddDocument($reader);
$reader.Dispose();
}

$pdfCopy.Dispose();
$document.Dispose();
$fileStream.Dispose();

Start-Process -FilePath “C:\Users\user\Desktop\NeuerOrdner\A80.pdf” –Verb Print -PassThru | %{sleep 15;$_} | kill

move-item $_.FullName -destination 'C:\Users\user\Desktop\NeuerOrdner\Archiv' -EV err -EA SilentlyContinue
138810
138810 27.03.2019 aktualisiert um 16:12:19 Uhr
Goto Top
Kann ich nach dem zusammenführen der einzelnen PDF´s diese löschen lassen,
$pdfs | ?{$_.Name -ne 'A80.pdf'} | remove-item -Force  
und das ausgegebene PDF (hier A80) in einen Archivordner verschieben lassen?
move-item [System.IO.Path]::Combine($workingDirectory, 'A80.pdf') -Destination  'C:\Users\user\Desktop\NeuerOrdner\Archiv'  

p.s.. Bitte nutze Codetags für Quellcode: <code> Quellcode </code>.
spongebob24
spongebob24 27.03.2019 um 16:42:53 Uhr
Goto Top
Danke habe nun alles hergebracht.
Muss nurnoch herausfinden wie ich das Script von einem PC aus laufen lassen kann, und dem sagen das die PDF´s auf einem UNC Pfad liegen.

$workingDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path;
$pdfs = ls $workingDirectory -recurse | where {-not $_.PSIsContainer -and $_.Extension -imatch "^\.pdf$"};  

[void] [System.Reflection.Assembly]::LoadFrom(
    [System.IO.Path]::Combine($workingDirectory, 'itextsharp.dll')  
);

$output = [System.IO.Path]::Combine($workingDirectory, 'A80.pdf');  
$fileStream = New-Object System.IO.FileStream($output, [System.IO.FileMode]::OpenOrCreate);
$document = New-Object iTextSharp.text.Document;
$pdfCopy = New-Object iTextSharp.text.pdf.PdfCopy($document, $fileStream);
$document.Open();

foreach ($pdf in $pdfs) {
    $reader = New-Object iTextSharp.text.pdf.PdfReader($pdf.FullName);
    $pdfCopy.AddDocument($reader);
    $reader.Dispose();  
}

$pdfCopy.Dispose();
$document.Dispose();
$fileStream.Dispose();

remove-item * -include *.pdf -exclude *A80.pdf*

Start-Process -FilePath “C:\Users\admin.bh\Desktop\NeuerOrdner\A80.pdf” –Verb Print -PassThru | %{sleep 15;$_} | kill

Move-Item -Path "C:\Users\admin.bh\Desktop\NeuerOrdner\A80.pdf" -Destination "C:\Users\admin.bh\Desktop\NeuerOrdner\Archiv"  

$Path = 'C:\Users\admin.bh\Desktop\NeuerOrdner\Archiv'  
$Files = Get-ChildItem -Path $Path -Recurse -Include *.pdf
$Counter = 0
foreach ($File in $Files){
    $counter++
    $OldPath = $File.FullName
    $Date = get-date -format 'M.d.yyyy HH.mm '  

    $NewName = $Date +  $counter + ' ' + ($OldPath.Substring($OldPath.Length - 7, 7))  

    Rename-Item -Path $OldPath -NewName "$Path\$NewName"}  
138810
138810 27.03.2019 aktualisiert um 16:47:50 Uhr
Goto Top
Muss nurnoch herausfinden wie ich das Script von einem PC aus laufen lassen kann
?? Auf ihn legen face-smile. Oder remote per Invoke-Command.
, und dem sagen das die PDF´s auf einem UNC Pfad liegen.
Indem du den Pfad passend angibst face-smile. Powershell supported UNC nativ.
spongebob24
spongebob24 28.03.2019 um 07:23:20 Uhr
Goto Top
Hi,

ne will das nicht auf dem Server haben bzw. wäre dort kein Adobe installiert.
Jop schau ich mir eh an mit dem UNC Pfaden mache das noch nicht lange mit dem Powershell.
Danke für deine Antwort.