У меня есть интересная проблема. Я пробовал с Zend_Pdf
. Раньше работал вполне нормально. Но вот уже 2 дня не работает. После запуска моего действия я открываю или сохраняю вопрос браузера. Если я выбираю открыть, я получаю сообщение об ошибке «невозможно открыть, потому что файл поврежден:
Я удалил все вещи из своего действия контроллера и попытался использовать простую версию, но получаю ту же ошибку. Вот мое действие контроллера:
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);
}
Я удалил все, потому что думал, что мой код в конечном итоге не полностью действителен, но теперь у меня остался только тест. Я хочу отметить, что было обновление Firefox, поэтому я попытался с IE, но та же проблема. Может быть, есть принципиальная ошибка? Еще одно замечание, в данном случае я работаю только с экшеном контроллера, никакого вьюскрипта у меня нет. Нужен ли он мне, потому что контроллер создает PDF-файл? Если да, то что должно быть внутри? Кто-нибудь знает ответ или обходной путь?
новое явление: я изменил свой код (последние операторы) на:
$fileName="./pdfs/test.pdf";
$pdf->save($fileName);
echo $pdf->render();
Я получаю такое же сообщение в своем браузере. Теперь у меня есть копия на моем веб-сервере, если я открою этот файл двойным щелчком, он откроется без ошибок.
Я попытался выбрать «сохранить в» в своем браузере и выбрал какую-то папку за пределами моего веб-сервера. Этот файл я не могу открыть, теперь я совсем запутался.
Кто-нибудь может помочь?
Обновлять:
Я попробовал некоторые другие возможности. Очень интересно, что у меня есть 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();
?>
Это должно быть что-то с заголовками, кто-нибудь знает решение?