
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 lpr
con 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 currentsystemparams
puede 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 startjob
operador, 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 pdfpages
paquete \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}%
( \pgffor
hace 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,
- Divide tu documento en
p01.pdf
yp02-16.pdf
. - Imprime 50 copias de
p02-16.pdf
. - Escribe un programa para hacer 50 variantes
p01.pdf
con diferentes números de serie e imprímelas. - 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.pdf
y p03-16.pdf
.