我有PDF存储在一个文件夹中,现在我想通过我的表单页面上的链接查看它。我将如何使用Yii框架。
echo CHtml::link(
'pdf',
Yii::app()->createUrl('/uploads/Tutorial.pdf') ,
array('class'=>'button','target'=>'_blank'));
我收到的错误如下所述,我也试过通过包含上传允许控制器。错误 错误404 无法解析请求“uploads / Tutorial.pdf”。 我正在使用mPDF生成PDF但我不知道如何使用Yii查看已生成的PDF。
你需要更多的东西来完成这项工作。你可能已经完成了一些而没有粘贴它但是这里...
我假设你已经设置了你的网站,通过跟随this tutorial使用.htaccess的干净网址。现在你可以添加:
在config / main.php,urlMananger部分中,您需要一个到控制器类和操作方法的路由。这告诉Yii当你转到URL /uploads/Tutorial.pdf
时使用哪个控制器
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'uploads/<filename:[a-zA-Z]+\.pdf>' => 'upload/viewPdf', // actionViewPdf Method in UploadController class
// ... all your other rules
),
),
和一个控制器类,以及与上面的路由同名的方法(前面加上action
):
class UploadController extends Controller
{
// Put the usual Yii access control stuff here or whatever...
public function actionViewPdf()
{
$filename = $_GET['filename'] . '.pdf';
$filepath = '/path/to/your/pdfs/' . $filename;
if(file_exists($filepath))
{
// Set up PDF headers
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($filepath));
header('Accept-Ranges: bytes');
// Render the file
readfile($filepath);
}
else
{
// PDF doesn't exist so throw an error or something
}
}
}
然后你应该可以使用
echo CHtml::link(
'pdf',
Yii::app()->createUrl('/uploads/viewPdf', array('filename' => 'Tutorial')) ,
array('class'=>'button','target'=>'_blank'));
希望这很有帮助。
嗯......你确定服务器上的uploads文件夹是否可用,并且它位于链接友好的位置? Yii没有通过它的index.php文件传递所有内容,如果文件已经存在,那么它就像它一样使用它。这就是为什么你可以访问图像或css文件夹中的文件,而无需控制器。
如果您使用的是普通的Yii结构,则应该在受保护文件夹旁边放置“uploads”文件夹。
如果您的uploads文件夹不在Web可访问的位置,请使用JamesG告诉您的内容。我唯一的改变是模式,它只匹配字母,你的名字也可能有其他字符。
不要在链接中添加“.pdf”:
Yii::app()->createUrl('/uploads/Tutorial')
在PHP中你可以像这样打印你的pdf(必须在actionTutorial中):
$mPDF = Yii::app()->ePdf->mpdf();
$mPDF->WriteHTML($this->render('tutorial', array(), true));
$mPDF->Output();
本教程是一个简单的html页面,应该呈现在你的pdf中。
Here你可以找到doku到mpdf Yii扩展名