Temos uma impressora em nosso escritório que imprime arquivos PDF a partir de um dispositivo USB. Ele imprime a maioria dos arquivos, mas tem problemas com alguns, especialmente os gerados com Látex. Alguns PDFs simplesmente se recusam a imprimir, alguns PDFs são impressos com fonte do tipo courier e outros são impressos corretamente, exceto pelas equações.
Estou procurando uma maneira de "destilar" PDFs em um formato de impressão segura. Simplificando / normalizando o PDF até o ponto em que qualquer renderizador o renderize corretamente, ou simplesmente tornando cada página uma imagem rasterizada de 600dpi no PDF. (Eu poderia dividir o PDF em imagens raster individuais e combiná-las manualmente, mas quero algo com script.)
O tamanho do arquivo de saída não importa, desde que seja certo imprimir, possui tamanho de papel A4 (ou original) e resolução de 300 ~ 600dpi.
Respostas:
Depois de tentar, sem sucesso, algumas opções para renderizar as fontes como contornos (incluindo esta pergunta e pstoedit), descobri uma maneira de converter facilmente o PDF em formato rasterizado usando o ImageMagick:
Isso cria um PDF renderizado em 600 dpi, com antialias desativadas (desnecessárias nessa resolução).
Os arquivos de saída são enormes (~ 30 MB para um documento de 8 páginas) e extremamente lentos para imprimir, mas devem funcionar desde que a impressora tenha memória suficiente para renderizar o conteúdo.
fonte
convert
não preserva o conteúdo dos formulários que você pode ter preenchido. (Eu queria rasterizar um PDF para garantir que o conteúdo do formulário tenha a mesma aparência em todos os lugares, em particular que eles sejam exibidos por todos os visualizadores de PDF em primeiro lugar.) Para preservar o conteúdo do formulário, useevince
(ou qualquer outro aplicativo que você usou para preencher o formulário) para imprimir o documento "em um arquivo" - este é outro PDF em que o conteúdo do formulário se tornou parte do texto comum. Você ainda pode rasterizar esse novo PDF, dependendo de suas necessidades.+antialias
) em vez de desativá-lo (-antialias
).+antialias
desativa antialiasing: imagemagick.org/script/command-line-options.php?#antialiasUsar o imagemagick, na minha experiência, não é estável com altas resoluções e / ou arquivos grandes. Muitas impressoras podem fazer 1200 dpi ou mais, portanto o arquivo rasterizado deve ter uma resolução semelhante. Uma solução melhor é usar o pdf2djvu, que é mais rápido, mais robusto e até cria arquivos com um tamanho que geralmente rivaliza com o PDF original em 1200 ou 2400 dpi. Esses arquivos podem ser visualizados e impressos usando okular ou evince.
Exemplo:
fonte
Eu acho que minha atual maneira preferida de fazer isso é:
Use pdftoppm para converter o arquivo PDF em uma série de imagens.
Use img2pdf para criar um arquivo pdf a partir dessas imagens.
A boa notícia é que você pode criar um script bash para automatizar todo o processo para você.
Aqui está um script bash que destila todos os arquivos pdf em um diretório e preserva os originais em um novo diretório "originais".
Créditos: img2pdf answer & pdftoppm answer & bash script help: 1 & 2
(Nota lateral) Você pode instalar o img2pdf usando:
fonte
Outra alternativa é converter para imagens através de algo como
pdfimages
Na página do manual ", o Pdfimages salva imagens de um arquivo PDF (Portable Document Format) como arquivos Portable Pixmap (PPM), Portable Bitmap (PBM) ou JPEG. O Pdfimages lê o arquivo PDF-PDF, digitaliza uma ou mais páginas e grava um arquivo PPM, PBM ou JPEG para cada imagem, image-root-nnn.xxx, em que nnn é o número da imagem e xxx é o tipo de imagem (.ppm, .pbm, .jpg). "
Em seguida, use o pdftk para converter novamente em PDF https://www.pdflabs.com/docs/pdftk-cli-examples/
Por fim, imprima este arquivo. Obviamente, a questão principal é como escrever isso.
Você pode automatizar isso por meio de uma página da Web simples de algum tipo para os usuários. Finalmente, eles imprimem o arquivo convertido e você deve ter um desempenho melhor e uma impressão funcional?
fonte