Leiten Sie PDF-Seiten je nach Inhalt an ein bestimmtes Druckerfach weiter

Leiten Sie PDF-Seiten je nach Inhalt an ein bestimmtes Druckerfach weiter

Ich habe eine große PDF-Datei mit Hunderten von Seiten. JedeNSeite enthält die gleichen spezifischen Wörter und das gleiche Bild. Ich werde diese die"Sonderseiten".

Die Position dieserSpezialseitenist nicht vorhersehbar. Das heißt, mein PDF kann beispielsweise 5 normale Seiten haben, dann ist Seite 6 eineSpezialseitedann 2 normale Seiten, dann wieder eineSpezialseite, dann 12 normal, dann 2Spezialseiten, usw., usw.

Ich bräuchte eine Möglichkeit, den Ausdruck dieser PDF-Dateien zu automatisieren, so dass alle normalen Seiten auf dem Papierfach 1 meines Druckers gedruckt werden und alleSpezialseitenauf Papierfach 2 (weil ich spezielles Papier für Normalpapier und anderes fürSpezialseiten).

Weiß jemand, ob es eine Möglichkeit gibt, die gesamte PDF-Datei auf einmal auszudrucken und dieSpezialseitenzu einem bestimmten Druckerfach basierend auf

  • eine Textsuche nach den darin enthaltenen spezifischen Wörtern
  • oder die Tatsache, dass es ein Bild gibt
  • oder sogar die Anzahl der Farben auf der Seite (dieSpezialseitenwobei die Bilder viel mehr Farben enthalten als die anderen Seiten)

Ich muss dies regelmäßig tun (einmal im Monat).

Ich bin für alle Vorschläge offen. Bestimmte Software, Powershell oder andere Programmiersprachen. Irgendwelche Ideen?

Am besten wären Open-Source-Lösungen. Für mich sind Windows, Mac oder Linux allesamt praktikable Optionen.

Ich habe bisher eine Lösung gefunden, und zwarRicoh Print&Shareaber eine Einzellizenz mit 5 Jahren Wartung kostet etwa 2.500 USD. Es wäre schön, eine günstigere oder Open-Source-Lösung zu finden.

Antwort1

Schauen Sie sich doch mal anQPDFDabei handelt es sich um ein Open-Source-Tool zum Bearbeiten von PDF-Dateien. Damit können Sie die Datei in Seiten aufteilen, bestimmte Seiten isolieren und diese Seiten dann neu zusammenfügen, bevor Sie die einzelnen Dateien an einen bestimmten Drucker senden. Oder Sie können Seiten basierend auf bestimmten Eigenschaften isolieren (z. B. wenn sie Bilder enthalten) oder nach Datei- oder Seitenlänge usw. Es kann auch eine JSON-Darstellung der Dateieigenschaften generieren, sodass Sie mit einem anderen Programm einen Algorithmus zum Aufteilen der Datei basierend auf diesen Eigenschaften erstellen können.

Das Tool kann auf Windows- oder Linux-Rechnern ausgeführt werden.

Als Antwort auf den Kommentar von @MrUpsidown zu meinem Vorschlag stelle ich hier ein Beispiel-Shell-Skript zur Verfügung, das eine Eingabedatei nimmt und sie nur vorübergehend aufteilt, um die Größe jeder Seite in Bytes zu ermitteln. Die aufgeteilten Seiten werden dann verwendet, um Seitenlisten mit großen „Spezialseiten“ und kleinen „normalen Seiten“ zu erstellen und dann die CUPS-LPR-Befehle zu erstellen, um diese Seiten an einen Drucker zu senden. Das Skript könnte so geändert werden, dass jede Seite auf eine Textzeichenfolge (z. B. mit pdftotext) oder ein anderes eindeutiges Attribut untersucht wird. Auf jeden Fall wird eine Liste an das obere Fach und die andere an das untere Fach gesendet. Dann wird es nach sich selbst aufgeräumt. Das Skript muss angepasst werden, um Ihren Anforderungen zu entsprechen, und für den Produktionseinsatz gehärtet werden, aber ich denke, es sollte die grundlegende Methode umreißen, die ich vorgeschlagen habe.

Nach der Installation von qpdf auf einem Linux-Rechner (oder Mac) führen Sie das Skript aus, indem Sie eine Datei erstellen (nennen wir sie „Splitpages“), sie dann über ausführbar machen und chmod 755das Skript dann durch Aufrufen von ausführen splitpages filename.pdf. Derzeit werden nur die Befehle ausgegeben, die aktiviert werden könnten, indem im Skript „echo“ durch „eval“ ersetzt wird. Ein Beispiel für die Ausführung des Skripts wie dieses, splitpages samplefile.pdf bei dem samplefile.pdf 4 Seiten hat (3 normale und die vierte speziell), wäre, dass es diese Zeichenfolgen ausgibt

lpr -o media=Upper -o page-ranges=1,2,3, samplefile.pdf
lpr -o media=Lower -o page-ranges=4, samplefile.pdf

Natürlich müssen auch andere Dinge angepasst werden, um Ihren Bedürfnissen zu entsprechen

#!/bin/bash
# print pages based on page size 
# greater than minimumsize goes to tray1
# else goes to tray2
minimumsize=500000
infile=$1
if [ ! -f "$infile" ]; then
    echo "no input file"
    exit
fi

# location of temporary files used to identify page characteristics
outfile=/tmp/test
rm -f ${outfile}*

# split the file so we can assess lengths
qpdf $infile --split-pages $outfile

pnum=0
bigpage=
smallpage=
for page in ${outfile}*
do
    ((pnum++))
    actualsize=$(wc -c <"$page")
    if [ $actualsize -ge $minimumsize ]; then
    #echo size is over $minimumsize bytes
    bigpage="${bigpage}${pnum},"
    else
    #echo size is under $minimumsize bytes
    smallpage="${smallpage}${pnum},"
    fi
done

# replace the echo command with the eval command to actually execute the strings
lprc1="lpr -o media=Upper -o page-ranges=$bigpage $infile"
echo $lprc1
lprc2="lpr -o media=Lower -o page-ranges=$smallpage $infile"
echo $lprc2
rm -f ${outfile}*

Antwort2

Adobe Acrobat Pro zusammen mit dem AutoSplit Pro-Plugin (149 $) kann das. Weitere Informationen finden Sie im Artikel Extrahieren von Seiten aus einem PDF-Dokument mithilfe einer Textsuche.

Bildbeschreibung hier eingeben

Sie können dies auch selbst automatisieren, indem Sie JavaScript auf Dokumentebene verwenden, das in einem der JavaScript-Ordner von Acrobat installiert ist, und eine Aktion erstellen, die das JavaScript ausführt.

Ein Beispiel finden Sie im Artikel PDF-Seiten basierend auf Inhalt extrahieren.

verwandte Informationen