2011-04-14 14 views
6

Chrome kullanarak pdf dosyası okuma konusunda bir sorunum var. Burada ise Chrome, inline PDF'lerde "PDF belgesi yüklenemedi" hata iletisine sahip

$path = "actually file path"; 
header("Pragma: public"); 
header("Expires: 0"); 
header("Content-type: $content_type"); 
header('Cache-Control: private', FALSE); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header("Content-Disposition: inline; filename=\"$filename\""); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length' . filesize($path)); 
ob_clean(); 
flush(); 
readfile($path); 

PHP

yapmak nasıl

Aşağıdaki kod

, ben satır içi Content-Disposition ayarlayın. Çünkü kullanıcı tarayıcısı pdf görüntüleyici eklentisi varsa pdf dosyasını görüntülemek istiyorum. Bildiğiniz gibi, Chrome'da pdf görüntüleyici var.

Sorun şu ki sunucuda bir sürü pdf dosyası var. Chrome’un yalnızca bir kısmı görüntülenebilir. Başkalarının neden aynı şekilde çalışamadığını anlayamıyorum. Her dosyanın iznini kontrol ettim. İzin problemine benzemiyor.

Sorunun ne olduğunu bilen var mı? Teşekkür ederim.

+2

Değişim Sunucuda ne var ne kaydedildi. –

+0

@Marc Bunu deniyorum. İkisi de indirilip aynı görünebilir. Bunu sunucudaki dosyayla da karşılaştırıyorum. Onlar aynı. İçerik düzenlemesine geri döndüğümde: satır içi. Sadece işe yaramıyor. :(Hatta yanıt üstbilgisini karşılaştırabilirler.Onlar aynıdır – easycoder

+0

Doğrudan senaryonun içinden geçmek yerine birini görüntülemeye çalışırsanız ne olur? –

cevap

10

Bu aynı sorunla uğraşıyorum. Bu, tarayıcılarda tutarlı sonuçlara ulaştığım kadar yakın. Bazı PDF'lerin readfile() işlevinin doğru şekilde işlenebilmesi için çok büyük olması, sorun yaşamanın sebebidir. Bunu deneyin:

$file = "path_to_file"; 
$fp = fopen($file, "r") ; 

header("Cache-Control: maxage=1"); 
header("Pragma: public"); 
header("Content-type: application/pdf"); 
header("Content-Disposition: inline; filename=".$myFileName.""); 
header("Content-Description: PHP Generated Data"); 
header("Content-Transfer-Encoding: binary"); 
header('Content-Length:' . filesize($file)); 
ob_clean(); 
flush(); 
while (!feof($fp)) { 
    $buff = fread($fp, 1024); 
    print $buff; 
} 
exit; 
+0

teşekkürler mingala .. bunu deneyecek. – easycoder

+1

düzgün çalışmıyor gibi görünüyor ... :( – easycoder

+1

Bu, herhangi bir tarayıcı veya sadece Chrome için işe yaramıyor mu? Tamponun boyutunu 1024'ten küçük bir şeye değiştirmeyi deneyebilirsiniz. Eğer $ file belgenin tam yoluna ayarlanırsa Aynı zamanda, başlıkların birinde $ myFileName değişkeni not edin.Bu ayarlanması veya kaldırılması gerekiyor – mingala

0

Benzer bir sorun yaşadım ancak sipariş sorunlarını fark ettim. Krom yükleme sıkışmış satır içi PDF, görüntü vermedi,

$file = "/files/test.pdf"; 
    $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension 
    $mime = finfo_file($finfo, $file); 

    header('Pragma: public'); 
    header('Expires: 0'); 
    header('Content-Type: $mime'); 
    header('Content-Description: File Transfer'); 
    header('Content-Disposition: attachment; filename="'.basename($file).'"')); 
    header('Content-Transfer-Encoding: binary'); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Content-Length' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
1

i

$path = 'path to PDF file'; 
header("Content-Length: " . filesize ($path)); 
header("Content-type: application/pdf"); 
header("Content-disposition: inline; filename=".basename($path)); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
ob_clean(); 
flush(); 
readfile($path); 
1

aynı problem vardı bu yolu çözdüm: ; filename= etrafını tırnaklar olması gerektiğini görünüyor, Content-Disposition: attachment bu deneyin . Çözüm, header('Accept-Ranges: bytes')'u eklemekti.

Benim tam kodu:, indir/iyi PDF ve kötü pdf kaydetmek ve karşılaştırmak bir indirme (: eki/İçerik-türü uygulama/sekizli-stream Content-eğilim) zorlama ile

header('Content-Type: application/pdf'); 
header('Content-Disposition: inline; filename="'.$title.'"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: '.filesize($file)); 
header('Accept-Ranges: bytes'); 
header('Expires: 0'); 
header('Cache-Control: public, must-revalidate, max-age=0'); 
İlgili konular