Carimbe o número de série/bates durante a impressão

Carimbe o número de série/bates durante a impressão

Quero imprimir 50 cópias do mesmo documento de 16 páginas, mas tenho um número de série carimbado em cada uma. Estou imprimindo em uma impressora multifuncional Ricoh/Lanier. No momento, imprimo e grampeio lprcom uma linha como:

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

Então, eu esperava que uma combinação de outras opções pudesse conseguir isso.

Pesquisei e encontrei várias opções para colocar marca d'água nomesmotexto em cada documento, como "RASCUNHO" ou "CONFIDENCIAL". Mas gostaria que cada cópia tivesse um número diferente com marca d'água ou carimbado na parte superior.

Posso escrever um programa usando PyPDF para criar vários arquivos, cada um começando a partir de um arquivo de origem e carimbando um texto personalizado sobre ele. Mas imprimir 50 arquivos de 16 páginas leva muito mais tempo do que imprimir um arquivo 50 vezes. Qualquer conselho é apreciado.

Responder1

Em um mundo ideal, você deveria ser capaz de escrever um pouquinho de PostScript que é executado pelo intérprete na impressora para fazer isso, já que todos os conceitos existem na linguagem para permitir isso.

O operador PostScript currentsystemparamspode recuperar informações da impressora que podem incluir PageCount, um número inteiro que é: "O número de páginas que foram processadas com êxito desde a fabricação". Isso poderia ser usado como um número de série exclusivo, que o código PostScript poderia adicionar à saída da página.

Alternativamente, o código pode “fazer alterações persistentes em objetos na VM” usando o startjoboperador, que precisa da senha do administrador da impressora. Um pequeno trabalho não imprimível pode ser enviado à impressora para inicializar um contador global com esta técnica. Isso fica então acessível para trabalhos posteriores recuperarem, usarem e atualizarem.

Ambas as técnicas provavelmente não funcionarão ao definir um número de cópias, pois o PostScript será executado apenas uma vez para rasterizar cada página e, em seguida, páginas idênticas serão impressas para cada cópia.

As citações são de uma referência antiga da linguagem PostScriptpdf.

Responder2

Algumas impressoras possuem opções de impressão de marca d'água, que você pode ativar como uma opção de driver sem ter que gerar um novo documento (ou seja, o rasterizador na impressora apenas adiciona a marca d'água adicional no topo da página), mas isso não parece o que você quero aqui.

Portanto, não importa o que façamos aqui (hackeamento intenso com filtros cups e PPDs ou geração de documentos), sua impressora terá que rasterizar 800 páginas; realmente não pode ser ajudado. Portanto, sua abordagem PyPDF parece boa para mim.

(Eu usei LaTeX com o pdfpagespacote \includepdf, algo como

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

( \pgffortorna isso mais fácil)

Responder3

Se você quiser imprimir o número de série apenas na página de título,

  1. Divida seu documento em p01.pdfe p02-16.pdf.
  2. Imprima 50 cópias de  p02-16.pdf.
  3. Escreva um programa para fazer 50 variantes p01.pdf com diferentes números de série e imprima-as.
  4. Embaralhar manualmente.

Se o embaralhamento manual consumir muito tempo, uma variação é escrever um script em loop:

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

Isso pode não ser mais rápido do que a sua solução de “imprimir 50 arquivos de 16 páginas”.

Obviamente, se estiver imprimindo frente e verso, você precisará dividir o documento em p01-02.pdfe p03-16.pdf.

informação relacionada