Selle el número de serie/bates mientras imprime

Selle el número de serie/bates mientras imprime

Quiero imprimir 50 copias del mismo documento de 16 páginas pero tener un número de serie estampado en cada una. Estoy imprimiendo en una impresora multifunción Ricoh/Lanier. En este momento imprimo y grapo lprcon una línea como:

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

Así que esperaba que una combinación de otras opciones pudiera lograrlo.

Investigué y encontré varias opciones para marcar el agua con una marca de agua.mismotexto en cada documento, como "BORRADOR" o "CONFIDENCIAL". Pero me gustaría que cada copia tuviera un número diferente con una marca de agua o estampado en la parte superior.

Puedo escribir un programa usando PyPDF para crear varios archivos, cada uno comenzando desde un archivo fuente y estampando texto personalizado sobre él. Pero imprimir 50 archivos de 16 páginas lleva mucho más tiempo que imprimir un archivo 50 veces. Se agradece cualquier consejo.

Respuesta1

En un mundo ideal, debería poder escribir una pequeña parte de PostScript que el intérprete ejecuta en la impresora para hacer esto, ya que todos los conceptos existen en el lenguaje para permitir esto.

El operador PostScript currentsystemparamspuede recuperar información de la impresora que puede incluir PageCount, un número entero que es: "El número de páginas que se han procesado exitosamente desde su fabricación". Eso podría usarse como un número de serie único, que el código PostScript podría agregar a la salida de la página.

Alternativamente, el código puede "realizar modificaciones persistentes en los objetos en la VM" mediante el uso del startjoboperador, que necesita la contraseña del administrador de la impresora. Se puede enviar un pequeño trabajo que no sea de impresión a la impresora para inicializar un contador global con esta técnica. Luego se podrá acceder a él para trabajos posteriores para recuperarlo, usarlo y actualizarlo.

Sin embargo, es probable que ambas técnicas no funcionen al configurar un número de copias, ya que PostScript se ejecutará una sola vez para rasterizar cada página y luego se imprimirán páginas idénticas para cada copia.

Las citas son de una antigua referencia del lenguaje PostScript.pdf.

Respuesta2

Algunas impresoras tienen opciones de impresión de marcas de agua, que puede habilitar como opción del controlador sin tener que generar un nuevo documento (es decir, el rasterizador de la impresora solo agrega la marca de agua adicional en la parte superior de la página), pero eso no parece lo que desea. quiero aquí.

Entonces, no importa lo que hagamos aquí (hackear intensamente con filtros de tazas y PPD, o generación de documentos), su impresora tendrá que rasterizar 800 páginas; Realmente no se puede hacer nada. Entonces, su enfoque de PyPDF me parece bien.

(Usé LaTeX con el pdfpagespaquete \includepdf, algo así como

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

( \pgfforhace esto más fácil)

Respuesta3

Si se contenta con imprimir el número de serie sólo en la página del título,

  1. Divide tu documento en p01.pdfy p02-16.pdf.
  2. Imprime 50 copias de  p02-16.pdf.
  3. Escribe un programa para hacer 50 variantes p01.pdf con diferentes números de serie e imprímelas.
  4. Mezclar manualmente.

Si la mezcla manual requiere demasiado tiempo, una variación es escribir un script en bucle:

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

Puede que eso no sea más rápido que su solución de “imprimir 50 archivos de 16 páginas”.

Por supuesto, si imprime a doble cara, deberá dividir el documento en p01-02.pdfy p03-16.pdf.

información relacionada