سؤال

أقوم بإنشاء مستند PDF للتنزيل على سبيل المثال ، نقر شخص ما على رابط PDF ثم يتم إنشاء ملف PDF ويفتح المتصفح نافذة جديدة مع مسار ملف PDF هذا. المشكلة هي أن المتصفح يعطي 404 خطأ لم يتم العثور على خطأ لهذا الملف لمدة 40-50 ثانية تقريبًا بعد إنشائها ولكن بعد ذلك عندما أقوم بتحديث المتصفح ، يكون هذا الملف موجودًا للعرض أو التنزيل.

رابط PDF واحد هو http://images.myvouchercodes.co.uk/mvclocal/pdf/ca3b5098-9b35-7d8e.pdf حيث يمكنك عرض الملف ولكن عنوان URL نفسه يعطي 404 لم يتم العثور عليه مباشرة بعد إنشائه. أنا أستخدم التعليمات البرمجية التالية لكتابة الملف

      try{
            $fh = fopen($filename, "w");                        
            $contents = $this->render();   // return pdf contents in string        
            if(fwrite($fh, $contents))
            {           
                $fh = fopen($filename, "r");                    
                while(strlen(file_get_contents($filename)) !=  strlen($contents))
                { }
                echo $filename;
            }
            else
            {
                throw new Exception ("Unable to create pdf");
            }
            fclose($fh);

        }
        catch(Exception $e)
        {
            echo $e->getMessage();
        }

هذه المكالمة هي Ajax وتردد اسم الملف عند الانتهاء من PDF ، ثم يتم إلحاق اسم الملف هذا بعنوان URL و ATED WINDOW.OPEN () لفتح نافذة جديدة مع رابط PDF الذي يعطيني 404 غير موجود. أي شخص يعرف لماذا يحدث هذا الخطأ؟

هل كانت مفيدة؟

المحلول

استخدم رؤوس PHP لإخراج PDF مباشرة على المتصفح

$contents = $this->render();
header('Content-type: application/pdf');
header('Content-disposition: inline; filename=nijman.pdf');
header('Content-length: ' . strlen($contents));
echo $contents;

لذا بدلاً من القيام بـ AJAX ، افتح نافذة جديدة مع عنوان URL لإنشاء رمز PDF.

نصائح أخرى

أولاً ، تحتاج إلى عزل ما إذا كانت مشكلة Zend PDF أو خادم الويب العام. حاول إبداع ملف Dummy 1-بايت يدويًا والتحقق مما إذا كان سيظهر نفس التأخير.

الأمر متروك لتكوين خادم الويب الخاص بك - قد يكون لدى بعضها خصائص تنظيم ملفات عدوانية ، لذلك لا توجد إجابة عالمية ، ستحتاج إلى التحقق من خيارات التكوين المقابلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top