Este é um problema que parece ter sido relatado por volta de 2007 e ressurgido (ou usei uma versão mais antiga do a biblioteca há muito tempo que não tinha esse problema).
O que você pode fazer é pós-processar o arquivo de saída (supondo que seu sed
tenha a opção -i
):
tiff2pdf -j input.tif -o out.pdf
sed -i 's|/DecodeParms << /ColorTransform 0 >>||' out.pdf
por algum motivo você recebe mensagens de erro e um arquivo PDF corrompido se você deixar de fora a opção -o
para tiff2pdf
e enviar a saída diretamente para sed
(o que você não obtém se tiff2pdf -j input.tif > out.pdf
ou)
Se você estiver disposto a consertar as fontes tiff 4.0.4beta, você pode comentar as linhas 5160-5163 em tools/tiff2pdf.c
(que escreve ColorTransform
stuff):
/*
if(t2p->tiff_photometric != PHOTOMETRIC_YCBCR) {
written += t2pWriteFile(output, (tdata_t) "/DecodeParms ", 13);
written += t2pWriteFile(output, (tdata_t) "<< /ColorTransform 0 >>\n", 24);
}
*/
ou altere a função t2pseekproc
para:
static uint64
t2p_seekproc(thandle_t handle, uint64 offset, int whence)
{
T2P *t2p = (T2P*) handle;
int res;
if (t2p->outputdisable <= 0 && t2p->outputfile) {
res = fseek(t2p->outputfile, (long) offset, whence);
if (res == -1 && offset == 0 && whence == SEEK_END)
return 0;
return res;
}
return offset;
}
para que ele não falhe mais se você fizer um fseek
do final com o deslocamento 0 (o que o IMO só faz sentido se um diferente fseek
, com um valor diferente de zero, o precedeu e falhou). / p>
Com essas duas alterações, todos os testes ainda são aprovados (mas obviamente não cobrem toda a funcionalidade). Com a segunda alteração, você pode fazer:
tiff2pdf -j | input.tif | sed -i 's|/DecodeParms << /ColorTransform 0 >>||' out.pdf
qual é menos provável que o IMO quebre algo em tiff2pdf
que não foi testado pelo conjunto de testes na origem.