2012-09-06 2 views
10

Ghostscript가 작업이 컬러인지 그레이 스케일인지 간단히 감지 할 수 있는지 여부를 알 수없는 것 같습니다. Ghostscript를 사용하여 인쇄 작업을 PNG로 변환하지만 작업의 색상에 대한 정보가 있어야하므로 픽셀 단위로 다시 검색 할 필요가 없습니다.Ghostscript 색상 감지

답변

16

비교적 새로운 Ghostscript 장치 인 inkcov (Ghostscript v9.05 이상이 필요함)은 PDF 페이지의 색상 사용 여부를 안정적으로 감지 할 수 있습니다.

각 페이지마다 개별적으로 CMYK 잉크의 잉크 적용 범위를 표시합니다 (RGB 색상의 경우 내부적으로 CMYK 색상 공간으로 자동 변환 함). 페이지를

gs                  \ 
    -o color-or-grayscale-test.pdf          \ 
    -sDEVICE=pdfwrite             \ 
    -g5950x2105               \ 
    -c "/F1 {10 80 moveto /Helvetica findfont 64 scalefont setfont} def" \ 
    -c "F1       (100% 'pure' black) show showpage" \ 
    -c "F1 .5 .5 .5 setrgbcolor (50% 'rich' rgbgray) show showpage" \ 
    -c "F1 .5 .5 .5 0 setcmykcolor (50% 'rich' cmykgray) show showpage" \ 
    -c "F1 .5   setgray  (50% 'pure' gray)  show showpage" 

모든 페이지가 전혀 색을 사용하지 않는 사람의 눈에 나타나지 않습니다 동안 : 조사하고 그 기능을 설명하기 위해

먼저 고스트 스크립트의 도움으로 예 PDF를 생성 2와 3은 실제로 색상에서 명백한 회색 값을 혼합합니다. 그러나 모니터의 색상이 잘못 조정 된 경우를 제외하고는 색상이 전혀 보이지 않습니다. (웹을 통해 쉽게 표시 PNG로 변환) 결과 PDF 페이지에서

봐는 :

프리 프레스 업계에서

4 PDF pages without directly visible color

, '부자'검정 또는 회색 음영 자주 사용된다. 숙어 'rich'black 또는 grey는 이러한 색조가 순수한 검정색 토너 나 잉크로 만들어지지 않았지만 색상이 혼합되어 더 선명하고 포화 된 것처럼 보이게한다는 사실을 표현하는 데 사용됩니다. .

gs -o - -sDEVICE=inkcov color-or-grayscale-test.pdf 
[...] 
Page 1 
    0.00000 0.00000 0.00000 0.05040 CMYK OK 
Page 2 
    0.05401 0.05401 0.05401 0.05401 CMYK OK 
Page 3 
    0.05799 0.05799 0.05799 0.00000 CMYK OK 
Page 4 
    0.00000 0.00000 0.00000 0.04541 CMYK OK 

(각 컬러 채널에 대한 100 % 잉크 커버리지 1.00000 맵 값 결과의 첫 번째 줄에 따라서 0.05040 페이지 영역 5.04 % 의미

이제 각 페이지의 잉크 적용 범위를 체크 블랙 잉크에 포함된다) 따라서, 고스트의 inkcov 의해 주어지는 결과를 정확하게 예상 한이다.

  • 페이지 1 + 4 C (시안), M (마젠타), Y 중 (황색을 사용하지 않음) 색상은 K (검정색) 만.
  • 2 + 3 페이지는 C (시안 색), M (마젠타 색), Y (노랑색)의 잉크를 사용하지만 K (검정색)은 전혀 사용하지 않습니다.

지금의이 DeviceGray 색 공간을 사용하는 원래의 PDF의 모든 페이지를 변환 할 :

gs        \ 
    -o only-black-ink.pdf   \ 
    -sDEVICE=pdfwrite    \ 
    -dColorConversionStrategy=/Gray \ 
    -dProcessColorModel=/DeviceGray \ 
    color-or-grayscale-test.pdf 

을 ...잉크 커버리지를 다시 확인하십시오.

gs -q -o - -sDEVICE=inkcov only-black-ink.pdf | grep -v Page 
    0.00000 0.00000 0.00000 0.05040 CMYK OK 
    0.00000 0.00000 0.00000 0.05401 CMYK OK 
    0.00000 0.00000 0.00000 0.05799 CMYK OK 
    0.00000 0.00000 0.00000 0.04541 CMYK OK 

다시 말하면 성공적인 컬러 변환의 경우 예상되는 결과입니다!

+0

이것은 인쇄 파일에 대한 토너 커버리지를 추정해야 할 때 빠른 방법입니다. –

+0

루비에서이 작업을 수행해야하는 경우 다음 페이지 번호 (예 : 1,3,4) 또는 '1,3과 같은 범위 문자열을 포함하는 배열을 출력하는 보석 https://rubygems.org/gems/pdf_colored_pages가 있습니다. -4 ', 고스트 스크립트 inkcov 출력을 구문 분석하여. – RedRoosterMobile

1

새로운 출력 장치가이 답변을 구형으로 만들었습니다. 수락 된 답변을 참조하십시오.


2011 년까지 파일을 래스터 화하여 출력물을 확인해야했습니다. PDF/PS는 래스터 라이 제이션 된 동안 렌더링 된 것처럼 보이는 파일의 설명이기 때문에. ghostscipt로 이것을 할 수 있다고하더라도 나는 파일을 래스터 화/해석하고 출력을 먼저 봐야 할 것이라고 확신한다. 그래서 png가 있다면 이것을 처리하는 것보다 CPU 사용량이 적을 것이다. GS로 다시 파일하십시오.

+0

... 나는 당신의 진술 * "당신은 이것을 할 수 없다"*는 1 년 전까지 정확했지만, 더 이상 :-) 아닙니다 - 그래서 삭제 (또는 편집)하십시오. 당신의 대답은 downvoted되기 전에 ...-) –