2014-04-24 8 views
2

이해가 잘 안되므로 다음 문제도 해결할 수 있습니다. 젠드 프레임 워크 (Zend_Pdf)를 사용하여 도면, 글꼴 및 이미지를 사용하여 동적 PDF를 작성합니다. 문제는 이미지 때문입니다. 압축하지 않고 JPG를 임베드하고 있지만 Adobe PDF Reader에서는 항상 손상됩니다. 다른 이미지 DPI를 사용해 보았습니다. 삽입하기 전에 이미지 크기를 조정하고 저장 했었습니다. 또는 원본 크기를 유지하고 PDF에 포함시킬 때만 크기를 조정했지만 결과는 같습니다. 나는 무엇이 잘못 되었는가 또는 그 밖에 무엇을 시도 할 수 있는지 이해하지 못하기 때문에 어떤 도움에 대해서도 감사 할 것입니다. PDF에 삽입PDF 리더에서 이미지가 손상되었지만 브라우저에서 문제가있는 이유는 무엇입니까?

이미지 (original is here) :

the image inserted into PDF

나는 모든 브라우저 (크롬, FF, IE)가 OK 보이지만, 어도비 PDF 리더에서 나는이 얻을에서 PDF를 열 때 :

screenshot from PDF reader

나는 손상된 장소를 표시했다. test.pdf can be seen here. 아무도 내가이 문제를 이해하도록 도와 줄 수 있습니까?

EDIT

더 디버깅 한 후,이 화상 사이즈 Zend_Pdf::drawImage() 방법 연결된 것으로 보인다.

PDF의 예상 이미지 크기는 내가 제공 한 좌표에 따라 168x120px와 같아야하지만 PDF의 실제 크기는 훨씬 커야합니다. 약 35 %의 차이가 있습니다.

나는 이미지가 손상 그 이유는 생각하지만, 난 아직도 기본적으로 내가이 패턴을 사용하고 있습니다 ... 원하는 픽셀 크기를 표시하기 위해 사용한다 좌표를 이해하지 않습니다

$page->drawImage($image, $x, ($y - 120), ($x + 168), $y); 

좌표를 계산하는 방법이 잘못 되었습니까?

편집 2 :

이미 조정 된 이미지의 예를 PDF 내부 이미지 크기가 다르다는 것을 보여주기 위해 실제 크기 (168x120px)를 사용하여 PDF에 포함, 또는 적어도 보인다되고도 추가 해요 위의 코드를 사용하고 있지만 예상되는 크기가 아닙니다. 크기 조정 된 이미지는 here이고 최종 PDF는 here입니다. 이 크기 조정 된 이미지에는 이전에 크기가 조정 된 흰색 경계선이 있으므로 결과가 더 좋아 보입니다.

EDIT 3

는 PDF 내부 화상의 소정 화소의 크기를보다 명확히한다. 인쇄 때문에 따라야 할 레이아웃이 있습니다. 레이아웃 사양은 mm이며, 이미지를 배치해야하는 정확한 영역과 최대 너비/높이가 있습니다. 나는. 최대 너비는 100mm입니다. 72ppi 문서에서 높이 (42mm = 119px)와 비슷하게 280px로 계산되었습니다. 또한 임베디드 이미지는 300 DPI 여야한다는 요구 사항이 있습니다. 그리고 문제가있을 수 있다고 생각하지만 PDF의 너비/높이를 어떻게 다시 계산해야합니까? 또한 큰 이미지를 포함하고 더 작게 그리거나 크기 조정 된 이미지를 사용하고 실제 크기로 그릴 것을 권장합니다. 72DPI를 사용하는 이미지가있는 화면에서 조금 더 나은 결과를 얻었습니다. 따라서 인쇄용으로 하나, 화면 또는 브라우저 용으로 하나만 두 개의 PDF 파일을 만들어야 할 수도 있습니까?

EDIT 4 (프린트)

I 300 및 600 dpi로 인쇄 테스트. 두 가지 경우 모두 PDF (this one)로 그리면 크기가 조정되는 원본 크기 이미지를 사용하는 PDF는 정상입니다. scaled.pdf은 300 DPI 인쇄에서 매우 나쁩니다 (약간의 붉은 색이 가장자리에서도 보입니다). 600 DPI 인쇄에서는 꽤 괜찮지 만 스트레칭으로 인해 매우 흐립니다. 그리고 스트레칭은 이전에 언급했듯이 드로잉 할 때 이미지의 잘못된 포인트 크기로 인해 발생합니다.

+2

이것들은 Adobe 도구의 알고리즘을 부드럽게하는 데 사용되는 것입니다. – Bobrovsky

+2

애플의 미리보기 (가장 강력한 PDF 뷰어는 아니지만)에서도 같은 것을 볼 수 있습니다. 공평하게 말하자면 JPEG을 추출한 후 합리적인 크기로보기 (100 % 미만) - 미리보기는 아티팩트도 표시합니다. 아마도 주위에 1 또는 2 개의 흰색 픽셀 테두리를 포함하면 렌더러가 도움이 될 것입니다. – usr2564301

+0

예, 힌트를 주셔서 감사합니다. 나는 이미지 주위에 5px의 흰색 테두리를 추가하는 것이 S와 A의 상단에있는 문제를 해결했다는 것을 잊어 버렸다. 그러나 Y의 상단과 하단은 여전히 ​​좋지 않다. 또한 IE 및 Firefox에서 확대/축소시 문제를 재현 할 수 있으므로 비례하지 않는 포함 된 이미지의 크기에 문제가 있다고 생각합니다 (종횡비는 고려하지 않음) – lp1051

답변

0

"say"라는 단어가 문자로 구성된 경우, 독자 (브라우저 판독기, 곡예사, 여우 등)가 글꼴을 렌더링하는 방법에 따라 다릅니다.

글꼴이 pdf에 포함되어 있으면 도움이되는지 확인하십시오.

+1

OP는 이미지이고 심지어 링크를 제공한다고했습니다. 이 문제는 실제로 텍스트 *를 보여주는 이미지와 관련이없는 것 같습니다. – usr2564301

+0

당신이 맞습니다. 그래서 @Bobrowsky에 동의합니다. 아마도 이것들은 유물 일뿐입니다. 아마도 Zend의 크기를 재조정하는 것과 관련이있을 것입니다. – zeppaman

+0

네, 그렇습니다. 글자 만 사용하는 이미지 예제를 보여 드리겠습니다. 그러나 단순성을 위해 더 많이 사용합니다. 이미지에는 비 텍스트 그래픽이 포함될 수 있습니다. 그래픽은 응용 프로그램의 특성상 나 자신을 그리지 못합니다. – lp1051