2015-08-13 6 views
0

У меня есть интересная проблема. Я пробовал с Zend_Pdf. Раньше он работал довольно хорошо. Но теперь, начиная с 2 дней, он больше не работает. После запуска моего действия я открываю или сохраняю вопрос браузера. Если я выберу open, я получаю сообщение об ошибке, которое говорит: «невозможно открыть, потому что файл поврежден:Ошибки Zend_pdf при открытии в браузере

Я удалил все данные из своего контроллера и попробовал с простой версией, но я получаю ту же ошибку. действие:

public function indexAction() 
{ 
    $pdf = new Zend_Pdf(); 
    $pdf->properties['Title']='testtitle'; 
    //echo $pdf->properties['Title'] . "\n"; 
    $pdf->pages = array_reverse($pdf->pages); 
    $style = new Zend_Pdf_Style(); 
    $style->setFont(Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA), 36); 
    $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA); 
    $pdf->pages[1] = ($page = $pdf->newPage('A4')); 
    $page=$pdf->pages[1]; 
    $page->setFont($font, 18); 
    $page->drawText("testcaption", 100, 100); 
    header("Content-Type: application/pdf"); 
    header("Content-Disposition: inline; filename=test.pdf"); 
    //header("Cache-Control: no-cache, must-revalidate"); 
    echo $pdf->render(); 
    // $fileName="./pdfs/test.pdf"; 
    // $pdf->save($fileName); 
} 

Я удалил все, потому что я думал, что мой код был в конечном счете не полностью действительным, но теперь у меня есть только тест left.I нужно заметить, что есть обновление Firefox, поэтому я попытался с IE, но такая же проблема. Возможно, есть основная ошибка? Еще одно замечание: в этом случае я работаю только с действием контроллера, у меня нет какого-либо viewcript. Мне нужен он, потому что контроллер строит pdf? ld быть внутри? Кто-нибудь знает ответ или какое-то обходное решение?

новый phänomenon: Я изменил код (последние отчеты):

$fileName="./pdfs/test.pdf";  
$pdf->save($fileName); 
echo $pdf->render(); 

я получаю то же сообщение в своем браузере. Теперь у меня есть копия на моем веб-сервере, если я открою этот файл с помощью doubleclick, он открывается без каких-либо ошибок.

Я попытался выбрать «сохранить под» в своем браузере и выбрать папку вне моего веб-сервера. Этот файл я не могу открыть, теперь я полностью смущен.

Кто-нибудь может помочь?

Обновление:

Я пробовал другие возможности. Очень интересно, что у меня есть 2 разных pdf-документа. Тот, который я сохраняю (с сохранением метода) на моем сервере, открывается отлично, все в порядке. Если я заставляю другую загрузку в своем браузере и открываю документ из папки для загрузки.

Я получаю документ, в котором есть мой html-макет внутри, а также дата в формате pdf. Это действительно начинается, как следует:

<base href="/mosaik/public/" /> 

после этого мои DIV области и в конце есть мои PDF области.

Это тот же самый эффект, но при попытке я изменил код, я создал класс, который обеспечивает PDF и у меня есть представление, где я поставил свой заголовок:

<?php 
$response = Zend_Controller_Front::getInstance()->getResponse(); 
//$response = new Zend_Controller_Response_Http(); 
$response->setHeader('Content-Disposition', 'attachment; fileName=schwesternliste.pdf'); 
$response->setHeader('Content-type', 'application/pdf'); 

$pdf=new Application_Model_Pdf_Schwestern(); 
$pdf->load(); 
$pdf->fillData(); 
echo $pdf->render(); 

?> 

Это должно быть что-то с заголовки, кто-то знает решение?

ответ

0

В связи с тем, что этот портал был онлайн с апреля. 5 месяцев и работал очень хорошо, я попробовал другой компьютер, который у меня есть, и на котором я не использую обновления automatik, и там он все еще работает. Интересно! Я немного потрудился, и, как я писал выше, у меня нет проблем, чтобы открыть сохраненный pdf, у меня есть только эти ошибки, если я его визуализирую в своем браузере. Я сравнивал оба файла с eclipse и выяснял, что тот, который вызывает ошибки, имеет мой макет html в заголовке, другой - прозрачный pdf.

Поскольку у меня такое же действие для 3-х разных модулей, и мне нужно, чтобы он работал, я сделал обходное решение, которое, безусловно, не лучшее решение, но у меня не было другой идеи.

Теперь действие контроллера сохраняет PDF-файл на сервере, и мой взгляд помещает на него некоторые заголовки и открывает его. Это прекрасно работает. Здесь для всех, кто имеет такой же эффект, мой сценарий:

<?php 
require_once 'Zend/Pdf.php'; 

header('Content-Type: application/pdf'); 
header('Content-Disposition: inline; filename=schwesternliste.pdf'); 
header('Cache-Control: private, max-age=0, must-revalidate'); 
header('Pragma: public'); 
ini_set('zlib.output_compression','0'); 
echo file_get_contents("./pdfs/schwesternliste.pdf"); 

?> 
<html> 
<body> 

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

  • Нет связанных вопросов^_^