如何使用codeigniter打开pdf文件到浏览器中的另一个选项卡

时间:2013-08-12 04:51:14

标签: codeigniter

im making currently making my thesis about a record management of our university secretary.. in which all papers inside the office will be scanned and uploaded in the system.. i am using codeigniter..one of the feature in my system is to view the pdf file in other window of the browser. but my problem is, when i click the title. only blank page will be displayed in the other tab.. can you help me solve this one?? here is my code

controller:

 function viewMinutesFile(){
        if(isset($_GET['id'])){
            $id = $_GET['id'];
            $file = $this->minutes_model->getFile($id);

            $fp= fopen($file->path, "r");

            header("Cache-Control: maxage=1");
            header("Pragma: public");
            header("Content-type: application/pdf");
            header("Content-Disposition: inline; filename=".$file->filename."");
            header("Content-Description: PHP Generated Data");
            header("Content-Transfer-Encoding: binary");
            header('Content-Length:' .filesize($file->path));
            ob_clean();
            flush();
            while (!feof($fp)){
                $buff = fread($fp,1024);
                print $buff;
            }
            exit;

        }
    }

打开文件的代码:这是我的用户点击的语法,以便在新标签页中打开pdf文件                 文件                                  的index.php /管理/ viewMinutesFile?           id =“target =”_ tab“>                 

6 个答案:

答案 0 :(得分:5)

好吧,您可以使用target="_blank"添加指向文件的链接,例如

<a href="<?php echo base_url(). 'your_controller/viewMinutesFile'; ?>" target="_blank">
    View Pdf
</a>

并在控制器功能中:

function viewMinutesFile(){
    ....
    $file = $this->minutes_model->getFile($id);
    $this->output
           ->set_content_type('application/pdf')
           ->set_output(file_get_contents($your_pdf_file));
}

答案 1 :(得分:5)

尝试使用静态网址。不需要任何额外的话。

<a href="<?=base_url('any_folder_name/any_file.pdf')?>" target="_blank">Show My Pdf</a>

新更新

如果它为你工作,那么从数据库中获取pdf名称并将名称放在视图中,如

<a href="<?=base_url('index.php/admin/viewMinutesFile/'.$info['doc_id'])?>" target="_blank">Show My Pdf</a>

现在在控制器中

$this->load->helper('download');
if($this->uri->segment(3))
{
    $data   = file_get_contents('./file_path/'.$this->uri->segment(3));
}
$name   = $this->uri->segment(3);
force_download($name, $data);

答案 2 :(得分:1)

您的代码没有任何问题,您可以在下一个标签上轻松打开,就像其他页面只有区别,您必须更改标题说明,并确保在您的浏览器上pdf阅读器加载项可用,否则它将给出你可以选择下载。

答案 3 :(得分:1)

你可以这样做。

<?php echo form_open_multipart('your_controller/your_function','target="_blank"') ;?>
    //other input fields
<?php form_close();?>

答案 4 :(得分:1)

只需创建一个指向空白页面的链接,然后在您的控制器中使用以下代码:

public function myPdfPage(){
    $url = base_url('assets/your.pdf');
    $html = '<iframe src="'.$url.'" style="border:none; width: 100%; height: 100%"></iframe>';
    echo $html;
}

享受!

答案 5 :(得分:0)

您可以在视图上尝试此操作:

<a href="controller/viewfile/filename.anything">Filename</a>

,并在您的控制器上,您可以尝试一下,因为这对我很有效:

    function viewfile(){
        $fname = $this->uri->segment(3);
        $tofile= realpath("uploaddir/".$fname);
        header('Content-Type: application/pdf');
        readfile($tofile);
    }

希望这可能对您有帮助...