Eu uso o Mac OS X Snow Leopard. Eu tenho um PDF com campos de formulário, anotações e carimbos. Gostaria de congelar (ou "nivelar") esse PDF para que os campos do formulário não possam ser alterados e as anotações / carimbos não sejam mais editáveis. Como na verdade tenho muitos desses PDFs, desejo fazer isso automaticamente na linha de comando.
Algumas coisas que eu tentei / considerei, com seu grau de sucesso:
- Abra em Visualizar e Imprimir em arquivo. Isso cria um PDF totalmente plano sem alterar o tamanho do arquivo. A única maneira de automatizar parece ser escrever um AppleScript baseado na interface do usuário , que eu tenho tentado evitar.
- Abra no Acrobat Pro e use uma função JavaScript para nivelar . Novamente, não sei como automatizar isso na linha de comando.
- Use
pdftk
com aflatten
opção Mas isso apenas nivela campos de formulários, não carimbos e outras anotações. - Use o
cupsfilter
que pode criar PDF a partir de vários formatos de arquivo. Assim,pdftk
achatavam apenas os campos do formulário. - Use
cups-pdf
para conectar ao servidor de impressão do Mac e salvar um arquivo PDF em vez de imprimir. Eu usei a versão macports . O arquivo resultante é simples, mas enorme. Eu tentei isso em um arquivo de 8 MB; o PDF achatado tinha 358 MB! Talvez isso possa ser combinado com uma chamada ghostscript, como na Dica do Ubuntu: Como reduzir o tamanho do arquivo PDF na linha de comando .
Quaisquer outras sugestões serão apreciadas.
Respostas:
Tente usar
pdf2ps
eps2pdf
em sucessão. É um pouco complicado, mas me ajudou a reduzir meu documento de 30 MB para 17 MB. Não tanto quanto eu gostaria, mas ainda melhor. Eu recebi essa ideia de um amigo que usou esse método para se livrar das permissões de senha em um pdf.Espero que ajude!
fonte
pdf2ps file.pdf - | ps2pdf - file_flat.pdf
. O arquivo passou de 300K para 500K, o que representa um grande aumento percentual, mas nada como o aumento de 4400% que ocups-pdf
método produziu.pdf2ps -q -sOutputFile=- file.pdf | ps2pdf - file_flat.pdf
.brew install ghostscript
.Então é isso que tenho usado ultimamente. Eu acho que funcionalmente faz a mesma coisa que
pdf2ps file.pdf - | ps2pdf - file_flat.pdf
, mas parecia funcionar melhor para mim.fonte
Pode ser subopcional, mas você considerou encadear cups-pdf com pdftk ou cupsfilter? Como você mencionou, o cups-pdf produzirá um arquivo pdf plano e o passará pelo pdftk ou cupsfilter para reduzi-lo a um tamanho aceitável?
Como alternativa, dê uma olhada em
/System/Library/Printers/Libraries/convert
Você deve ser capaz de fazer algo comofonte
/System/Library/Printers/Libraries/convert
. Eu tenteicupsfilter
. Ao converter de PDF para PDF, nenhuma alteração foi feita no arquivo. Ao converter de PDF para PS e, em seguida, para PDF, as anotações foram perdidas.AVISO: gs e pdf2ps | ps2pdf NÃO achatam PDFs!
O uso de gs ou pdf2ps seguido de ps2pdf produzirá um PDF de várias camadas com o conteúdo das anotações presentes na forma original . Você pode verificar essa falha na visualização usando Selecionar tudo, Copiar e Colar em uma janela do Editor de texto (no modo rich text). Você verá o texto ou gráficos em anotações de redação, por exemplo. Isto é claramente muito ruim se você precisar legalmente que o conteúdo saia da saída.
Uma solução de trabalho
O ImageMagick pode produzir um PDF nivelado, de várias páginas e de qualidade configurável, com rasters de cada página, usando o seguinte comando:
Esse comando rasteriza document_original.pdf, criando uma imagem baseada em pixel de cada página, a 150 DPI, e produz o resultado como document_flat.pdf.
Uma nota sobre a qualidade da imagem
Devido à rasterização , produz um PDF não escalonável (zoom e você verá o texto ou as imagens vetoriais originais ficarem pixelizadas). Provavelmente, ele terá um tamanho de arquivo maior, a menos que o original tenha conteúdo vetorial muito complexo, como gráficos de dispersão de milhões de pontos.
Alterando a densidade , você pode trocar um tamanho de arquivo maior por uma saída com maior resolução.
Todo o texto será convertido em pixels brutos em cada imagem da página. Os diagramas de texto e vetor são os que mais sofrem, então experimente o DPI até obter os arquivos de saída utilizáveis.
fonte
O Applescript é provavelmente o melhor / mais rápido caminho para a linha de comando. Uma vez que funcione, você pode salvá-lo como um aplicativo e criar um alias no shell de comando para executá-lo. Depois disso, basta digitar seu alias na linha de comando.
fonte