2011-04-14 22 views
6

पर त्रुटि संदेश मुझे PHP का उपयोग करके क्रोम में पीडीएफ फ़ाइल पढ़ने में समस्या है।क्रोम में "पीडीएफ दस्तावेज़ लोड करने में विफल" इनलाइन पीडीएफ

निम्नलिखित कोड है कैसे मैं PHP

$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); 

में क्या यहाँ में, मैं इनलाइन करने के लिए सामग्री-विन्यास की स्थापना की। क्योंकि मैं पीडीएफ फ़ाइल को प्रदर्शित करना चाहता हूं यदि उपयोगकर्ता ब्राउज़र में पीडीएफ दर्शक प्लगइन है। जैसा कि आप जानते हैं, क्रोम में अंतर्निहित पीडीएफ दर्शक है।

समस्या यह है कि मेरे पास सर्वर पर पीडीएफ फाइलों का समूह है। उनमें से कुछ केवल क्रोम द्वारा देखे जा सकते हैं। मैं यह नहीं समझ सकता कि अन्य लोग उसी तरह क्यों काम नहीं कर सकते हैं। मैंने प्रत्येक फाइल की अनुमति की जांच की है। यह अनुमति समस्या की तरह दिखता है।

क्या कोई जानता है कि समस्या क्या है? धन्यवाद।

+2

एक डाउनलोड (: लगाव/सामग्री प्रकार आवेदन/ओकटेट धारा सामग्री-स्वभाव) के लिए मजबूर करने के लिए बदलें क्या सर्वर पर क्या बचा है। –

+0

@Marc मैं कोशिश करता हूं। उनमें से दोनों को डाउनलोड किया जा सकता है और ऐसा ही दिखता है। मैं सर्वर में फ़ाइल के साथ इसकी तुलना भी करता हूं। वह एक जैसे है। जब मैं सामग्री-स्वभाव पर वापस जाता हूं: इनलाइन। यह सिर्फ काम नहीं करता है। :(मैं प्रतिक्रिया शीर्षलेख की तुलना भी करता हूं। वे समान हैं। – easycoder

+0

क्या होता है यदि आप अपनी स्क्रिप्ट के माध्यम से सीधे देखने के बजाय सीधे एक को देखने का प्रयास करते हैं? –

उत्तर

10

मैं इस मुद्दे के साथ कुश्ती कर रहा हूं। यह करीब है क्योंकि मुझे ब्राउज़रों में लगातार परिणाम मिलते हैं। मुझे लगता है कि आपको समस्याएं हो सकती हैं अगर कुछ पीडीएफ रीडफाइल() को सही तरीके से संभालने के लिए बहुत बड़े हैं। इसे आज़माएं:

$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

धन्यवाद मिंगला .. इसे आज़माएं। – easycoder

+1

ऐसा लगता है कि यह ठीक से काम नहीं करता है ... :( – easycoder

+1

क्या यह किसी भी ब्राउज़र या सिर्फ क्रोम के लिए काम नहीं करता है? आप बफर के आकार को 1024 से कुछ छोटे में संशोधित करने का प्रयास कर सकते हैं। अगर $ फ़ाइल आपके दस्तावेज़ के लिए पूर्ण पथ पर सेट है काम करना चाहिए। साथ ही, हेडर में से एक में $ myFileName वैरिएबल को नोट करें। इसे सेट या निकालने की आवश्यकता है। – mingala

0

मुझे इसी तरह का मुद्दा था लेकिन मैंने ऑर्डर मामलों को देखा। लगता है ; filename= इसके चारों ओर उद्धरण होना आवश्यक है कि, Content-Disposition: attachment इस प्रयास करें:

$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

मैं इस तरह से

$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

एक ही समस्या थी ठीक करने के बाद, क्रोम इनलाइन पीडीएफ, लोड हो रहा है पर अटक प्रदर्शित नहीं किया । समाधान header('Accept-Ranges: bytes') जोड़ने के लिए था।

मेरे पूरा कोड:, डाउनलोड/अच्छा पीडीएफ और एक बुरा पीडीएफ बचाने के लिए, और तुलना

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'); 
संबंधित मुद्दे