首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以Yii格式查看PDF

以Yii格式查看PDF
EN

Stack Overflow用户
提问于 2014-03-02 21:58:48
回答 3查看 7.4K关注 0票数 0

我已将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。

EN

回答 3

Stack Overflow用户

发布于 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'));

希望这对你有帮助。

票数 0
EN

Stack Overflow用户

发布于 2014-03-03 06:34:10

好吧..。是否确定上传文件夹在服务器上可用,并且位于链接友好的位置?Yii不会通过它的index.php文件传递所有内容,如果一个文件已经存在,那么它只是按原样使用它。这就是为什么你可以在没有控制器的情况下访问图像或css文件夹中的文件。

如果你使用的是普通的Yii结构,那么你应该把你的“上传”文件夹放在你的受保护文件夹旁边。

如果上载文件夹不在可通过web访问的位置,请使用JamesG告诉您的内容。我想要的唯一改变是模式,它只匹配字母,你也可能在名字中有其他字符。

票数 0
EN

Stack Overflow用户

发布于 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的扩展

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22128530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档