Serien-/Batenummer beim Drucken stempeln

Serien-/Batenummer beim Drucken stempeln

Ich möchte 50 Kopien desselben 16-seitigen Dokuments drucken, aber auf jede Kopie eine Seriennummer aufdrucken. Ich drucke auf einem Multifunktionsdrucker von Ricoh/Lanier. Im Moment drucke und hefte ich lprmit einer Zeile wie dieser durch:

lpr -P <printer> -# 50 -o StapleLocation=UpperLeft file.pdf

Daher hoffte ich, dass dies durch eine Kombination anderer Optionen erreicht werden könnte.

Ich habe recherchiert und verschiedene Möglichkeiten gefunden, dasDasselbeText auf jedem Dokument, wie „ENTWURF“ oder „VERTRAULICH“. Aber ich möchte, dass jede Kopie oben eine andere Nummer als Wasserzeichen oder Stempel hat.

Ich kann mit PyPDF ein Programm schreiben, um mehrere Dateien zu erstellen, die jeweils von einer Quelldatei ausgehen und benutzerdefinierten Text darüber stempeln. Aber das Drucken von 50 16-seitigen Dateien dauert viel länger als das 50-malige Drucken einer Datei. Jeder Rat ist willkommen.

Antwort1

Im Idealfall sollten Sie in der Lage sein, zu diesem Zweck ein kleines Stück PostScript zu schreiben, das vom Interpreter im Drucker ausgeführt wird, da in der Sprache alle Konzepte vorhanden sind, die dies ermöglichen.

Der PostScript-Operator currentsystemparamskann Informationen vom Drucker abrufen, darunter PageCount, eine Ganzzahl, die „die Anzahl der Seiten angibt, die seit der Herstellung erfolgreich verarbeitet wurden“. Dies könnte als eindeutige Seriennummer verwendet werden, die der PostScript-Code der Seitenausgabe hinzufügen könnte.

Alternativ kann der Code „dauerhafte Änderungen an Objekten in der VM vornehmen“, indem er den startjobOperator verwendet, der das Administratorkennwort des Druckers benötigt. Mit dieser Technik kann ein kleiner, nicht druckbarer Auftrag an den Drucker gesendet werden, um einen globalen Zähler zu initialisieren. Dieser ist dann für spätere Aufträge zugänglich, um ihn abzurufen, zu verwenden und zu aktualisieren.

Allerdings funktionieren diese beiden Techniken wahrscheinlich nicht, wenn eine bestimmte Anzahl von Kopien festgelegt wird, da das PostScript nur einmal ausgeführt wird, um jede Seite zu rastern, und dann für jede Kopie identische Seiten gedruckt werden.

Zitate stammen aus einer alten PostScript-Sprachreferenzpdf.

Antwort2

Einige Drucker verfügen über Optionen zum Drucken von Wasserzeichen, die Sie als Treiberoption aktivieren können, ohne ein neues Dokument erstellen zu müssen (d. h., der Rasterizer im Drucker fügt das zusätzliche Wasserzeichen lediglich oben auf der Seite hinzu), aber das scheint hier nicht das zu sein, was Sie möchten.

Egal, was wir hier tun (intensives Herumspielen mit CUPS-Filtern und PPDs oder Dokumentgenerierung), Ihr Drucker muss 800 Seiten rastern; das lässt sich nicht wirklich ändern. Daher klingt Ihr PyPDF-Ansatz für mich gut.

(Ich habe LaTeX mit dem pdfpagesdes Pakets verwendet \includepdf, so etwas wie

\newcounter{serialnr}{10000}%
\includepdf[pagecommand={\thispagestyle{empty}\arabic{serialnr}]{pdffile.pdf}%
\stepcounter{serialnr}%
\includepdf[pagecommand={\thispagestyle{empty}\arabic{serialnr}]{pdffile.pdf}%

( \pgfformacht dies einfacher)

Antwort3

Wenn Sie damit zufrieden sind, die Seriennummer nur auf der Titelseite abzudrucken,

  1. Teilen Sie Ihr Dokument in p01.pdfund auf p02-16.pdf.
  2. Drucken Sie 50 Kopien von  p02-16.pdf.
  3. Schreiben Sie ein Programm, um 50 Varianten p01.pdf mit unterschiedlichen Seriennummern zu erstellen und auszudrucken.
  4. Manuell mischen.

Wenn das manuelle Mischen zu zeitaufwändig ist, besteht eine Variante darin, ein Schleifenskript zu schreiben:

do 50 times:
begin
        make a copy of p01.pdf with a unique serial number, and print it
        print p02-16.pdf
end

Das ist möglicherweise nicht schneller als Ihre Lösung zum „Drucken von 50 16-seitigen Dateien“.

Wenn Sie beidseitig drucken, müssen Sie Ihr Dokument natürlich in p01-02.pdfund aufteilen p03-16.pdf.

verwandte Informationen