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-Key: 433232

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

Printed on: April 26, 2024 at 23:04 o'clock

Member: chiefteddy
chiefteddy Mar 27, 2019 updated at 10:06:29 (UTC)
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
Member: erikro
erikro Mar 27, 2019 at 10:22:07 (UTC)
Goto Top
Moin,

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

hth

Erik
Member: spongebob24
spongebob24 Mar 27, 2019 at 14:53:47 (UTC)
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
Mitglied: 138810
138810 Mar 27, 2019 updated at 15:12:19 (UTC)
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>.
Member: spongebob24
spongebob24 Mar 27, 2019 at 15:42:53 (UTC)
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"}  
Mitglied: 138810
138810 Mar 27, 2019 updated at 15:47:50 (UTC)
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.
Member: spongebob24
spongebob24 Mar 28, 2019 at 06:23:20 (UTC)
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.