Eu tenho um PDF que já compactou imagens e é um pouco artefato e estou usando o Ghostscript para anexar uma página de título a esse PDF.
No entanto, não consigo encontrar nenhuma maneira de dizer ao GS para usar apenas as imagens existentes sem reprocessá-las, e agora estou me sentindo como se tivesse algo a ver com o funcionamento do GS, ou seja, você não pode recompilar / vincular um PDF sem reprocessar suas imagens. Isso é verdade?
Posso aumentar a configuração de DPI no GS, mas passará de 5 MB para 60 MB enquanto ainda estiver pior.
Existe alguma alternativa melhor ao GS que faça o que eu preciso (de preferência que seja compilado no OS X)?
pdf
ghostscript
pdftk
Mahmoud Al-Qudsi
fonte
fonte
Respostas:
Se você apenas deseja concatenar dois arquivos PDF sem reprocessar seu conteúdo,
pdftk
é para você. (No Mac OS X, isso deve estar disponível via MacPorts ou Fink, para Linux, existem pacotes nativos para todas as principais distribuições; para Windows, veja aqui. ) Tente o seguinte:Anexará o title.pdf ao content.pdf e gravará o resultado em book.pdf .
pdftk
é uma maneira "burra", mas muito rápida, de concatenar dois (ou mais) arquivos PDF. "Dumb" até o momento, pois depdftk
forma alguma interpreta o fluxo de dados em PDF, apenas garante que os números de objetos internos sejam reorganizados conforme o necessário e apareçam naxref
estrutura do PDF (que basicamente é uma espécie de ToC do PDF para objetos).Ghostscript:
Se você deseja usar o Ghostscript, o comando básico para concatenar os mesmos dois arquivos seria:
No entanto, como você experimentou, essa linha de comando simples pode atrapalhar a qualidade da imagem. O motivo é que o Ghostscript não é 'despejo' quando processa PDFs: ele os interpreta completamente durante a leitura e cria um arquivo completamente novo ao gravar o resultado. Para criar o resultado, ele usará automaticamente as configurações padrão para muitos detalhes no processamento geral. Esses padrões se aplicam a todos os casos em que suas invocações não instruíram o Ghostscript de outra forma.
Portanto, o método do Ghostscript para criar o novo book.pdf é muito mais "inteligente" (mas também muito mais lento) do que
pdftk
o método. (Esse também é o motivo pelo qual o Ghostscript, em muitos casos, é capaz de - dentro dos limites - "reparar" arquivos PDF b0rken, ou incorporar fontes nos PDFs de saída que não estão incorporados nos PDFs de entrada ou remover imagens duplicadas, substituindo eles por meras referências, etc. - e, em geral, cria arquivos menores e melhor otimizados a partir de PDFs de entrada inchados ...)A solução é não permitir que o Ghostscript use seus padrões: adicionando mais parâmetros personalizados à linha de comando.
O que significa "Ghostscript 'interpreta' sua entrada em PDF" ?
Todo o arquivo e seu conteúdo (objetos, fluxos, fontes, imagens, ...) são lidos, verificados e mantidos em sua própria representação interna, antes de cuspir o PDF resultante com seus objetos PDF novamente. No entanto, ao 'cuspir', o Ghostscript aplicará todas as suas configurações padrão internas para as centenas de parâmetros [*] disponíveis.
Infelizmente, isso causa seu "reprocessamento" de imagens de acordo com essas configurações padrão - que só podem ser evitadas ou substituídas adicionando seus próprios parâmetros de linha de comando (desejados).
Seus problemas de imagem podem ser causados pela necessidade do Ghostscript (devido a problemas de licenciamento) de recodificar imagens JPEG2000 em codificação JPEG. Se você deseja evitar isso, adicione o seguinte à sua linha de comando:
Outras opções de linha de comando relacionadas à imagem a serem consideradas para inclusão são:
Portanto, a linha de comando completa do Ghostscript que pode fazer você feliz deve ler:
Você também pode dizer ao Ghostscript para não compactar as imagens no PDF de saída usando esta linha de comando:
.
[*]:
Se você estiver interessado em aprender sobre uma lista completa das configurações padrão que o dispositivo pdfwrite do Ghostscript está usando , execute o seguinte comando. Retorna a lista completa :
Para obter explicações sobre o que exatamente todos esses parâmetros significam, você precisará ler a documentação da Adobe sobre "Parâmetros do destilador" . Ghostscript tenta muito imitar tudo isso ...
fonte
dEncodeColorImages
,dEncodeGrayImages
,dEncodeMonoImages
causa o arquivo de saída para se tornar muito mais maciça. Ao removê-los, o tamanho do arquivo foi alterado de 22 MB para 3,1 MB e a qualidade da imagem parece exatamente com o uso desses sinalizadores. Todas as únicas bandeiras com eu uso são:dColorConversionStrategy=/LeaveColorUnchanged
,dDownsampleMonoImages=false
,dDownsampleGrayImages=false
,dDownsampleColorImages=false
,dAutoFilterColorImages=false
,dAutoFilterGrayImages=false
,dColorImageFilter=/FlateEncode
,dGrayImageFilter=/FlateEncode
-dColorImageFilter
? Eu só posso encontrarFlateEncode
eDCTEncode
. O DCT parece fazer JPEG (por que eles criptografaram isso?). Acho que o FLATE é uma opção desatualizada para imagens agora, já que a patente do Bell Labs no LZW não é mais um problema? No entanto, depois de passar algum tempo pesquisando, não consigo encontrar como usar PNG (ou qualquer outra coisa) ... Minhas imagens originais são PNG e quero que elas permaneçam inalteradas. Eu tentei a opção -c, mas isso me dá-c can only be used in a built with POSTSCRIPT included.
...