我已将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。
发布于 2014-03-03 03:21:03
您还需要更多的东西才能使其工作。您可能已经完成了其中的一些操作,但并未粘贴,但现在开始吧…
我假设您已经通过遵循this tutorial将您的站点设置为在.htaccess中使用干净的URL。现在您可以添加:
在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'));
希望这对你有帮助。
发布于 2014-03-03 06:34:10
好吧..。是否确定上传文件夹在服务器上可用,并且位于链接友好的位置?Yii不会通过它的index.php文件传递所有内容,如果一个文件已经存在,那么它只是按原样使用它。这就是为什么你可以在没有控制器的情况下访问图像或css文件夹中的文件。
如果你使用的是普通的Yii结构,那么你应该把你的“上传”文件夹放在你的受保护文件夹旁边。
如果上载文件夹不在可通过web访问的位置,请使用JamesG告诉您的内容。我想要的唯一改变是模式,它只匹配字母,你也可能在名字中有其他字符。
发布于 2014-03-03 15:19:59
不要将".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的扩展
https://stackoverflow.com/questions/22128530
复制相似问题