.tif
일부 스캔 파일 (libtiff 버전 4.0.3)과 JPEG 압축을 .pdf
사용 하도록 변환했습니다 . tiff2pdf
이를 보면 evince
컬러(분홍색) 배경이 나타납니다.
처음에는 스캐너가 고장났지만 파일은 .tif
괜찮다고 생각했고, .pdf
JPEG 압축을 사용하지 않았다면 파일은 괜찮았을 텐데(하지만 파일이 매우 커질 것입니다).
.pdf
명령줄 도구를 사용하여 색상이 지정되지 않은 압축 JPEG를 얻는 방법은 무엇입니까 ?
답변1
지속되는 문제인 것 같아요2007년쯤 보고됨그리고 다시 나타납니다(또는 오랫동안 이전 버전의 라이브러리를 사용했는데 이 문제가 발생하지 않았습니다).
당신이 할 수 있는 일은 출력 파일을 후처리하는 것입니다( 옵션이 sed
있다고 가정):-i
tiff2pdf -j input.tif -o out.pdf
sed -i 's|/DecodeParms << /ColorTransform 0 >>||' out.pdf
-o
어떤 이유로 옵션을 생략 tiff2pdf
하고 출력을 직접 파이프 하면 sed
(그렇게 하면 얻을 수 없음 tiff2pdf -j input.tif > out.pdf
) 오류 메시지가 표시되고 손상된 PDF 파일이 표시됩니다.
tiff 4.0.4beta 소스 코드를 패치하려는 경우 5160~5163 행 tools/tiff2pdf.c
(이렇게 표시됨 ColorTransform
)을 주석 처리할 수 있습니다.
/*
if(t2p->tiff_photometric != PHOTOMETRIC_YCBCR) {
written += t2pWriteFile(output, (tdata_t) "/DecodeParms ", 13);
written += t2pWriteFile(output, (tdata_t) "<< /ColorTransform 0 >>\n", 24);
}
*/
또는 t2pseekproc
기능을 다음과 같이 변경하십시오.
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;
}
fseek
이렇게 하면 오프셋 0의 끝에서 작업을 수행하면 더 이상 실패하지 않습니다(IMO에서는 fseek
앞에 0이 아닌 값이 있는 다른 작업이 있고 실패하는 경우에만 의미가 있습니다).
이러한 두 가지 변경 사항을 적용하면 모든 테스트가 여전히 통과됩니다(그러나 분명히 모든 기능을 다루지는 않습니다). 두 번째 변경으로 다음을 수행할 수 있습니다.
tiff2pdf -j | input.tif | sed -i 's|/DecodeParms << /ColorTransform 0 >>||' out.pdf
tiff2pdf
IMO 는 소스 코드의 테스트 스위트에서 테스트하지 않은 다른 것들을 깨뜨릴 가능성이 없습니다 .