2013-04-01 2 views
1

나는 주소와 몇 가지 사소한 세부 사항을 제외하고 같은 페이지 (글자)를 많이 사용하고있다. 나는 PDF 생성이 가장 느려지는 것이 로고 이미지가 모든 페이지에 포함되어 있다고 믿습니다 (상당히 작지만).TCPDF에서 사용할 이미지를 미리로드 할 수 있습니까?

로고를 캐싱하여 파일을 한 번로드하고 변수에 저장하고 매번 이미지를로드하는 대신 TCPDF를 사용하여 프로세스 속도를 높이고 싶습니다. 내가 어떻게 파일에서이 같은 이미지 스트림을 만드는 아무 생각이 없다, 그러나

$imgdata = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABlBMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDrEX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg=='); 
$pdf->Image('@'.$imgdata); 

:는 "PHP 이미지 데이터 스트림", 주어진 예제를로드 할 수 있습니다 TCPDF이있다.

내 로고는 작은 (4kB) PNG 파일입니다. readfile($file)을 사용하고 그 앞에 '@'가있는 $pdf->Image을 보내면 이미 chmod 777에 설정된 캐시 폴더에 대한 오류가 발생합니다 (테스트 서버 임) - 라이브 서버에 대한 적절한 권한을 설정합니다). 나는 또한 작동하지 않았다 base64_encode를 시도했다는 것을 믿는다.

이 작업을 수행하는 방법에 대한 의견이 있으십니까?

추신 : 나는 PDF에 더 많은 페이지를 포함할수록 속도가 느려지므로 이미 중간 정도 (현재 500 대신 파일 당 200-250 페이지)를 찾을 것입니다.

감사합니다.

답변

2

같은 질문을 sourceforge (sourceforge forum post)의 TCPDF 포럼에 게시하고 TCPDF 작성자가 답변했습니다.

이미지는 내부적으로 캐시되지만 이미지 처리가 필요한 경우 XObject() 템플릿 시스템을 사용하는 것이 좋습니다 (TCPDF 사이트의 example 62 참조).

처음에는 제대로 작동하지 않는 이유가 아직 확실하지 않지만, 원래는 Image()을 사용하여 원본 버전과 정확히 같아 보였습니다. 3,000 개의 항목이 각각 500 페이지 분량의 PDF 파일로 나뉩니다.

XObject()Image() 사이에는 속도가 전혀 없었으며 결과 파일은 실제로는 1.2MB 파일에서 2.5kB에 불과했습니다. XObject()이 실제로 나타났습니다.

이 질문은 원래 질문 (직접적으로을 사용하는 TCPDF에서 사용할 수있는 PHP 데이터 스트림을 만드는 방법)에 직접적으로 대답하지 않지만, 내가 정말로 알아야 할 것을 알려줍니다. 이미지는 이미 캐시되어 있습니다. XObject()을 사용한 캐싱은 내 상황에 어떤 이점도 제공하지 않습니다.

관련 문제