2017-12-13 9 views
1

프로그래밍 방식으로 작업하는 응용 프로그램이 PDF를 생성합니다. 이미지의 색상 공간을 설정하는 기능을 추가하라는 요청을 받았습니다.이 색상 공간은 모두 동일해야합니다. 현재 내 코드는 다음과 같이 colorspace를 생성합니다.색상 공간을 정의하고 PDF의 이미지에 어떻게 설정합니까?

3 0 obj 
<< 
/N 3 
/Alternate /DeviceRGB 
/Length 284 
/Filter [/FlateDecode] 
>> 
stream 
8c``2ptqre``ÈÍ+) 
rwRˆˆŒR`¿ÀÀÁÀÍ Ì`Ì`˜\\ààà yùy© |»ÆÀ¢/ë‚Ì”Ǹ’ŠJ€ô 6JI-Nf``4 ²³ËK 
€âŒs€l‘¤l0{ˆ]äd²ùÒ!ì+ v„ýÄ.zÈþRŸf3q€Í°[email protected]ì’Ô 
½Îù•E™é% 
F 
Ž)ùI© 
Á•Å%©¹Å 
žyÉùEùE‰%©)@µ÷ D!(Ä4---4Iô7A Šës 8|ÅÎ Ä ¹´¨Êdd2&ÌG˜1G‚Á)Ë„˜I/Ãþ©15C}†}s ïPo 
endstream 
endobj 
4 0 obj 
[/ICCBased 3 0 R] 
endobj 

이 작업을 수행하면 PDF가로드됩니다. 그러나, 나는 다음과 같은, 이미지에 그 색 공간을 설정하려고하면하지 간결함이있는 다른 PDF를 스캔에 따라 유효 보이는

endstream 
endobj 

여기에 포함

23 0 obj 
<< 
/Type /XObject 
/Subtype /Image 
/Name /I5 
/Length 2995953 
/Width 3675 
/Height 3675 
/Filter /DCTDecode 
/ColorSpace 4 0 R 
/BitsPerComponent 8 
>> 
stream 

이미지 데이터 이미지. Colorspace를 바꾸지 않고 대신 "/ Colorspace/DeviceRGB"를 사용하면 PDF가 제대로로드됩니다.

나는 여기에서 중요한 무엇인가를 놓치고있는 것을 알고있다. 그러나 나는 무엇을 알아낼 수 없다.

ICC profile being used

Bad PDF

+0

분명히 순수한 바이너리 데이터 여야하는 특수 ASCII 문자를 사용하고 있습니까? 아니면 그냥 시뮬레이션 된보기이며 실제 데이터 * 압축 된 색 공간의 올바른 이진 형식입니까? – usr2564301

+1

실제로 실제 데이터는 압축 된 색 공간입니다. 상황이 혼란스럽지 않으면 이미지 데이터에서했던 것처럼 데이터가 표시되지 않는다는 메모로 바꿀 수 있습니다. –

+0

ICC 스트림 데이터의 데이터에 확신이 있습니까?(정확하게 읽혀지고, 인 코드되고 소스 ICC는 RGB 타입 임) – dwarring

답변

2

4 0 R[/ICCBased 3 0 R] 개체에 대한 항목이 누락 된 상호 참조 색인 문제가있었습니다.

xpdf를 사용하여 PDF 파일을 열 때 오류가 발생하여 다음과 같은 오류 메시지가 나타났습니다 : Internal Error: xref num 25 not found but needed, try to reconstruct.

거기에서 필자는 누락 된 개체를 찾으려면 텍스트 편집기를 사용하여 실제 개체에 대해 상호 참조 테이블을 수동으로 확인했습니다.

xref 0 26 %% <-- was 0 25 0000000000 65535 f 0000000009 00000 n 0000000201 00000 n 0000000253 00000 n 0000000638 00000 n %% <-- added this line 0000000671 00000 n 0000000764 00000 n 0000000928 00000 n 0000001031 00000 n 0000001195 00000 n 0000001298 00000 n 0000001464 00000 n 0000001568 00000 n 0000001734 00000 n 0000001838 00000 n 0000002004 00000 n 0000002108 00000 n 0000002274 00000 n 0000002378 00000 n 0008538650 00000 n 0012148952 00000 n 0020386142 00000 n 0025352962 00000 n 0027568145 00000 n 0030564286 00000 n 0030564334 00000 n trailer

PDF는 다음 열고 xpdf 사용, 일반적으로 표시 : 다음과 같이

외부 참조 테이블, 작은 편집의 몇 가지를 필요로했다.

0

의 당신이 현재 어떤 ColorSpace로 표현되고있는 PDF, 예를 들어, 유효한 이미지 XObject에 있다고 가정하자 DeviceCMYK. 다른 ColorSpace를 사용하도록 (듯이), 그 이미지를 변경하고 싶은 경우. DeviceRGB (왜 이렇게했는지 이유를 설명해 줄 것입니다.) 그런 다음 일반적으로 이미지 데이터를 다른 것으로 변환해야합니다.

그렇지 않으면 참조되는 색상 공간을 변경하는 경우 예상대로 이미지가 표시되지 않을 위험이 있습니다 (예 : 뒤집어 보거나 섞인 색상). 이미지 데이터가 변경되지 않은 경우가있을 수 있지만 이미지 데이터를 올바르게 변경하지 않으면 매우 약한 방법이 될 수 있습니다.

예를 들어 PDF로 작업 할 때 사용하는 API를 언급하면 ​​더 유용한 답변을 얻을 수 있습니다.

+0

이미지가 이미 올바른 색상 공간에서 출력되었습니다. 프린터가이를 사용하여 최종 제품을 조정할 수 있도록 PDF에 해당 색상 공간을 저장하기 만하면됩니다. API에 관해서는 태그를 그냥 씁니다. –