3

내 앱에서 반복 가능한 패턴이 있습니다.UIView에서 PDF 로의 변환 이미지 색상이

Original Image

여기에 PDF로 변환 후 표시와 같은 이미지입니다 : 여기

앱 내에서 표시되는 이미지의

PDF Image - Pink bars instead of faded blue/grey

이에서 볼 수 있듯이에서, 이미지 색상이 회색/녹색에서 분홍색으로 바뀝니다.
PDF는 보낼 준비가 된 전자 메일에 직접로드됩니다.

이것이 이미지 자체가 PDF로로드되는 것과 관련이 있는지 또는 PDFing 프로세스와 관련된 것인지 확실하지 않습니다. 어느 쪽이든, 아래에 PDF 프로세스의 코드를 첨부했습니다.

가 여기 내 PDF 생성 코드입니다 : 나는 그것이 프레임을 조정하는 것입니다 크기의 50 %로 변환 PDF 파일 과정에서

- (NSData *)createPDFForView:(UIView *)view{   
    NSMutableData *pdfData = [NSMutableData data]; 
    UIGraphicsBeginPDFContextToData(pdfData, CGRectMake(0, 0, 792, 600), nil); 
    UIGraphicsBeginPDFPage(); 
    CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 
    [view setFrame:CGRectMake(0, 0, 792, 600)]; 
    [view.layer renderInContext:pdfContext]; 
    UIGraphicsEndPDFContext(); 
    return pdfData; 
} 

, 이미지 자체는, 단지보기를 수정되지 않도록 이미지가 포함되어 있습니다. 이미지는 프레임 내에서 자동 크기 조정됩니다.

이 색상 변경이 발생하지 않도록 할 수있는 방법이 있습니까?

+0

'layer.content'의 내용은 무엇입니까? 게시 할 수있는 파일입니까? 어떻게'layer.content'를 설정 했습니까? – nielsbot

+0

PDF를 만들기 전에 A4 모양으로 레이아웃 한 일련의 이미지/텍스트입니다. 나머지 이미지와 텍스트는 잘 보입니다. –

답변

2

PDF 사양은 JPEG, JPEG2000, TIFF & JBIG2 (그리고 다른 어떤 쓸모없는 것들) 만 지원합니다. 문서를 PDF로 변환하는 데 사용하는 프로그램은 이미지를 호환 가능한 형식이며, JPEG는 전통적으로 이러한 경우에 선택됩니다.

이유는 이미지가 투명하지 않고 JPEG로 수정되었고 이미지의 모양을 유지할 필요가없는 PNG to JPEG 변환기를 사용했기 때문입니다. 이미지에 색상 프로파일이있는 경우 이러한 색상 프로파일도 제거됩니다.

문서를 PDF로 변환하기 전에 이미지를 JPEG로 변환하면 계속 진행되는 작업을 훨씬 효과적으로 제어하고 제어 할 수 있습니다. 이 방법은 프로그램이 그대로 이미지를 유지하므로 얻을 수있는 것을 정확히 알 수 있습니다. 이것은 이미지의 색상 프로파일을 지정할 수있는 유일한 기회이기도합니다.

관리 할 수있는 경우 JPEG보다 JPEG2000이 바람직합니다. 특히 무손실 이미지를 찾는 경우 특히 좋습니다.

투명도는 PDF에서 얻을 수 있지만 사용 된 이미지 형식과 관계없이 이미지 개체에 대한 필터를 사용하면 얻을 수 있습니다. 그러나, 그것은 당신이하고있는 것보다 조금 더 진보 된 것이며 시간 가치가 없을 것입니다.

+0

이것은 지금까지 가장 그럴듯한 대답입니다. 내가 시험해 볼게. –

+0

당신은이 대답에 옳았습니다! 행복하게 현상금을 수여합니다. –

+1

도와 드리겠습니다. 과도한 파일 크기없이 고화질 이미지를 PDF로 원하면 Jasper 라이브러리를 사용하여 JPEG2000으로 변환 할 수 있습니다. – Alasdair

1

오류를 해결했지만 '그 이유'를 파악하지 못했습니다.

기본적으로 회색/파랑 색은 투명 PNG입니다.
흰색 배경을주고 이미지를 다시 저장 했으므로 제대로 작동하는 것 같습니다.

나는 '왜'를 도와 줄 수있는 사람에게도 현상금을 수여 할 것입니다.

+0

정확히 PDF에 흰색 배경을 부여 했습니까? – Papouh

+0

@Papouh 이미지 파일 자체. 그래서 투명 PNG를 삽입하는 대신 흰색 배경의 PNG를 삽입했습니다. –

0

그것은 하드 조금 (이 컴퓨터 ... 포토샵의 내 사본없이 저를 등) 정확한 색상을 필요없이 얘기하지만 것 같습니다 두 가지 중 하나와 같은 :

  1. 색상 공간 충돌 이미지의 알파 채널로 PDF 렌더링의 현재 컨텍스트를 잡는 중일 때 어떻게 그런 일이 일어날 지 확신 할 수 없지만 의도 한 알파 값이 빨간색 값으로 해석되는 경우 (예 : 이미지가 RGBA로 만들어지고 렌더링되는 경우) ARGB에서 - 알파 값이 원래 회색 색상의 다른 값보다 높음) 회색/파란색 이미지가 분홍빛을 띠게됩니다.
  2. PNG를 렌더링 할 때 iOS가 "투명 색상"으로 사용하는 색상 문제가 있습니다. 이 문제는 의심의 여지가 있지만 iOS 관련 주제에 대한 문서를 찾을 수는 없지만 원격 가능성으로 배포 할 수는 있습니다. 나는 # 1을 먼저 들여다 보았다.
0

내 생각에 내부적으로 이미지가 JPEG로 변환됩니다. JPEG는 투명도를 지원하지 않으므로 투명 픽셀에 배경색이 추가됩니다. 추가 된 픽셀은 일반적으로 회색 또는 검정색이지만 구현에 따라 달라 지거나 PNG의 "배경색"데이터 필드와 관련 될 수 있습니다.

잠재적 인 문제는 PDF 표준이 포함 된 PNG를 실제로 지원하지 않는다는 것입니다.파일을 렌더링 할 때 일반적으로 제작자 소프트웨어가 데이터를 압축되지 않은 래스터 바이트로 변환했기 때문에 일반적으로 파일을 압축합니다.

더 복잡 할 수도 있습니다. this adobe forum thread에 따르면 실제로 문제는 포스트 스크립트이므로 UIView가 postscript-> pdf 변환을 수행하면이 문제도 발생할 수 있습니다.