2011-03-29 3 views
1

이미지로 PDF를 표시하기 위해 헤더와 Imagick을 사용하려고합니다. 사파리를 제외하고는 다른 브라우저에서 작업하고 있습니다. 이미지는 검정색 배경이됩니다. 예는 여기와는 예를 생성 한 코드는 다음과 같습니다 : PHP Safari PDF to Image 문제

http://www.iptlock.com/pdf_test.php

<?php 
header("Pragma: no-cache"); 
header("Expires: -1"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 

$file_location='/media/files/bFdIdcxsOKtkBjzayEBD.pdf'; 

$im = new imagick($file_location."[0]"); 
$im->setImageFormat("jpg"); 
header("Content-Type: image/jpeg"); 
echo $im; 
?> 

그래서 내가 잘못이나 방법이 문제를 해결하는 방법이 무엇인지 모르겠습니다.

+0

PNG로 변경하면 문제가 해결되지만 여전히 JPEGS가 작동하지 않는 이유에 대해서는 답변하지 않습니다. –

+0

Mac 용 Safari 5.0.3에서 즐겁게 작동 :-) – Ragnar123

답변

0

PDF에서 JPG/JPEG로 축소판을 만들 때도 마찬가지입니다.

function writeAttachmentsToDisk($mbox,$uid,$part,$dir,$subtype,$subject,$attachments,$readonly=false,$dataInici=''){ 
    if(!file_exists($dir)){ 
    mkdir($dir); 
    } 
    if(!empty($dataInici)){ 
    $subject = trim(str_replace($dataInici,'',$subject)); 
    } 
    $filename = setNomArxiu(@iconv_mime_decode($subject,0,'UTF-8').(count($attachments)>0?'-'.strtoupper(alpha(count($attachments))):'')).'.'.$subtype; 
    if(!$readonly || !file_exists($dir.'/'.$filename)){ 
     $temp_filename = 'tmp.eml'; 
     $email_file = $dir."/".$temp_filename; 
     @imap_savebody($mbox,$email_file,$uid,$part,FT_UID | FT_PEEK); 
     if(file_exists($email_file)){ 
      $tb = false; 
      for($a=0;$a<count($attachments);$a++){ 
      if(files_identical($email_file,$attachments[$a])){ 
       $tb = true; 
       break; 
      } 
      } 
      if(!$tb){ 
       $command = "php -r '\$fh = fopen(\$argv[1], \"r\"); \$theData=fread(\$fh, filesize(\$argv[1])); fclose(\$fh); echo base64_decode(\$theData);' '$email_file' > $dir/$filename"; 
       exec($command,$output,$result); 
       if($result!=0){ 
       unlink($email_file); 
       @rmdir($dir); 
       return false; 
       } else { 
       unlink($email_file); 
       return $dir.'/'.$filename; 
       } 
      }else{ 
      unlink($email_file); 
      @rmdir($dir); 
      return false; 
      } 
     }else{ 
     unlink($email_file); 
     @rmdir($dir); 
     return false; 
     } 
    }else{ 
    return $dir.'/'.$filename; 
    } 
} 

기능은 위의 손 (알파, setNomArxiu, files_identical)에 대한 질문과 관련이없는 다른 기능을 사용

내가 그렇게하도록 구현 한 기능입니다.

나는 문제가 어떻게 든 여기 있어야합니다 같아요

$command = "php -r '\$fh = fopen(\$argv[1], \"r\"); \$theData=fread(\$fh, filesize(\$argv[1])); fclose(\$fh); echo base64_decode(\$theData);' '$email_file' > $dir/$filename"; 
exec($command,$output,$result); 

이미지 can be seen here in most browsers을 발생하지만, 맥에 저장하면 Safari에서 거의 검은 색, 어두운 및 표시됩니다.

여기에 무슨 일이 일어나고 있는지에 대한 아이디어가 있습니까?

감사합니다.

+0

이 문제가 Safari와 관련이 있는지 아는 사람 있습니까? 귀하의 의견에 감사드립니다. – Gerard