2013-04-10 2 views
0

Приведенный ниже код является образцом и работает (загружает pdf из файла, рисует одну строку, Success), однако, если я изменю invoice.pdf (пример pdf из учебника), чтобы my pdf, buyersguide.pdf Я получаю сообщение об ошибке firefox, файл не найден.Получающий «файл не найден» Zend PDF

<?php 
    header("Content-Type: application/x-pdf"); 
    //header("Content-Disposition: attachment; filename=invoice-". date("Y-m-d-H-i") . ".pdf"); 
    header("Cache-Control: no-cache, must-revalidate"); 

    require_once 'zendframework/library/Zend/Loader/Autoloader.php'; 
    //Zend_Loader::registerAutoload(); 

    $loader = Zend_Loader_Autoloader::getInstance(); 

    // load the invoice 

    $invoice = Zend_Pdf::load("invoice.pdf"); 
    $page = $invoice->pages[0]; 


    $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_TIMES_BOLD); 

    $page->setFont($font, 12); 

    // invoice information*/ 
    $page->drawText('success ', 420,642); 

    // output the PDF 
    echo $invoice->render(); 
?> 

код с файла изменился:

<?php 
    header("Content-Type: application/x-pdf"); 
    //header("Content-Disposition: attachment; filename=invoice-". date("Y-m-d-H-i") . ".pdf"); 
    header("Cache-Control: no-cache, must-revalidate"); 

    require_once 'zendframework/library/Zend/Loader/Autoloader.php'; 
    //Zend_Loader::registerAutoload(); 

    $loader = Zend_Loader_Autoloader::getInstance(); 

    // load the invoice 

    $invoice = Zend_Pdf::load("buyersguide.pdf"); 
    $page = $invoice->pages[0]; 


    $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_TIMES_BOLD); 

    $page->setFont($font, 12); 

    // invoice information*/ 
    $page->drawText('success ', 420,642); 

    // output the PDF 
    echo $invoice->render(); 
?> 

PDF для покупателей руководства взята из веб-сайте правительства. Обычно PDF загружается в Adobe Reader. Справочник покупателя PDF: http://www.consumer.ftc.gov/articles/pdf-0083-buyers-guide.pdf

+0

Работал для меня с ZF 1.11.11. Попробуйте сохранить содержимое операции render() в файл и посмотреть, что произойдет. Если файл в порядке, попробуйте повторно установить заголовок, который вы закомментировали, и посмотреть, что произойдет. – JamesG

+0

Проверено и все еще не работает. Вы используете руководство для покупателей pdf по ссылке? Я не уверен, как сохранить содержимое рендера в файл, я попытался: \t $ pdfString = $ invoice-> render(); \t $ handle = fopen ("$ filename- $ time.txt", "w"); \t fwrite ($ handle, $ pdfString); \t fclose ($ handle); Я также попытался сохранить файл pdf на своем сервере и проверить его, и он не работает вообще. Однако он отлично работает при сохранении демонстрации invoice.pdf – John

+0

См. Мой обновленный ответ в моем ответе ниже. Надеюсь, это сработает для вас. – JamesG

ответ

0

Следующий код показывает, что последняя стабильная версия ZF1 (1.12.3) будет успешно обработать файл, который вы испытываете проблемы с:

<?php 
set_include_path("PATH/TO/zf1/library" . PATH_SEPARATOR . get_include_path()); 
require_once 'Zend/Loader/Autoloader.php'; 
$loader = Zend_Loader_Autoloader::getInstance(); 

// Grab a copy of the file from the remote server 
// This is just for demo purposes only 
// Obviously you'd want to keep a copy of this file locally 
$source = "http://www.consumer.ftc.gov/articles/pdf-0083-buyers-guide.pdf"; 
file_put_contents("template.pdf", file_get_contents($source)); 

// load the invoice 
$invoice = Zend_Pdf::load("template.pdf"); 
$page = $invoice->pages[0]; 

$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_TIMES_BOLD); 

$page->setFont($font, 12); 

// invoice information*/ 
$page->drawText("success ", 320, 700); 

// Save the file to disk 
$filename = "invoice-" . date("Y-m-d-H-i") . ".pdf"; 
file_put_contents($filename, $invoice->render()); 

// output the PDF 
header("Content-Type: application/pdf"); 
header("Content-Disposition: attachment; filename=\"$filename\""); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Content-Length: " . filesize($filename)); 
readfile($filename); 

Этот код далек от производства уже, но это работает. Если это не сработает для вас, вы должны распечатать коды возврата каждого вызова функции, пока не определите, какая строка не работает.

+0

Подтвержденный код, который вы опубликовали, отлично работает на моем сервере. Спасибо за вашу помощь! Все еще пытаюсь определить, что было не так с моим исходным кодом. Я думаю, что я могу просто работать от тебя, чтобы определить, куда идти дальше. Еще раз спасибо. – John

+0

Извините, что являюсь вредителем, но если вы сочтете это достойным, не могли бы вы официально принять мой ответ? Спасибо. – JamesG

Смежные вопросы