我遇到了在Chrome中使用PHP显示PDF的问题。
我使用TCPDF(http://www.tcpdf.org/)生成PDF。 我设置了这样的标题:
header("Content-type: application/pdf");
header('Content-Disposition: inline; filename="Sujet.pdf"');
header("Content-Transfer-Encoding: binary");
header('Accept-Ranges: bytes');
出于测试目的,我将我的标题放在index.php文件的最开头,就在第一个<?php
之后
其他信息,我使用FatFree框架,我不认为标题是由框架处理的。
我正在使用TCPDF类的扩展来显示PDF。我创建了一个实现函数render
的扩展类,它使用以下命令:
$this->Output('Sujet.pdf', 'I');
ERR_INVALID_RESPONSE
。NetworkError: 500 Internal Server Error
。答案是此网址中的资源不是文字
我认为这意味着firefox期望文本并改为使用其他内容。
此外,PDF正确显示在TCPDF网站示例中。在我看来,问题来自错误或错位的标题。
感谢您考虑我的问题。
的Matthias
答案 0 :(得分:1)
使用标题功能
public function Header()
答案 1 :(得分:0)
标题由TCPDF负责,这里不需要它们。但问题并非如此。
它来自一条没有任何意义的路线:
echo \Template::instance()->render($pdf->rendu($f3, $this));
这是我试图使用FatFree模板用TCPDF编写html的时候。忘了擦掉它。
答案 2 :(得分:-1)
index.php
文件:
<?php
header("Content-type: application/pdf");
header('Content-Disposition: inline; filename="Sujet.pdf"');
header("Content-Transfer-Encoding: binary");
header('Accept-Ranges: bytes');
// defining constants
include('liste_permissions.php');
define('PAGE_ERREUR', 'templates/forbidden.htm');
// adding librairies
$f3 = require('lib/base.php');
// adding config files
$f3->config('config/config.ini');
$f3->config('config/routes.ini');
$f3->config('config/bdd.ini');
// defining other constants in the Hive of fatfree framework
$bdd = new Bdd($f3);
$f3->set('Bdd', $bdd->getDb());
$f3->set('f3', $f3);
$f3->set('FILE', __FILE__);
// Global functions used a lot
include('fct_globales.php');
// Refreshing the session of the connexion
\Membre\Manager::instance()->refreshConnection();
// running fatfree framework
$f3->run();
路由服务调用以下函数:
function renduPdf($f3) {
if(CIA(SEE_SUJETS_ET_COR)) {
$pdf = new \Pdf;
$pdf->rendu(Manager::instance()->getFromId($f3->get('PARAMS.id')));
echo \Template::instance()->render($pdf->rendu($f3, $this));
}
else {
echo ERREUR;
}
}
和pdf->rendu()
在这里:( pdf扩展TCPDF类)
public function rendu(\Sujet\Data $sujet) {
//fatfree base
$f3 = \Base::instance();
// Setting the class attributes
$this->sujet = $sujet;
$questions = $sujet->getQuestions();
$this->nomAbrege = 'CB' . $sujet->getNumero_cb();
$this->numMatiere = $sujet->getMatiere();
$this->nomMatiere = $f3->get('matieres')[$sujet->getMatiere()];
// PDF initialisation : author, imagescale
$this->initialisation();
// Displaying questions
$this->premierePage();
foreach ($questions as $question) {
$this->question($question);
}
$this->Output('Sujet.pdf', 'I');
}