3
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;

        }
    }

打开文件的代码:这是用户单击我的语法,以便在新选项卡文件 index.php/admin/viewMinutesFile 中打开 pdf 文件?id="目标="_tab">

4

6 回答 6

6

用静态网址试试这个。不需要任何额外的词。

<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);
于 2013-08-12T06:30:59.027 回答
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));
}
于 2013-08-12T04:54:21.960 回答
2

你可以在你的观点上试试这个:

<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);
    }

希望这可以帮助你...

于 2019-04-26T01:18:51.760 回答
2

只需创建一个指向空白页面的链接并在您的控制器中使用此代码:

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

享受!

于 2020-06-30T21:06:28.670 回答
1

您的代码没有任何问题,您可以在下一个选项卡上轻松打开,就像其他页面一样,唯一的区别是您必须更改标题描述,并确保您的浏览器 pdf 阅读器插件可用,否则它将为您提供选项下载。

于 2013-08-12T05:03:55.697 回答
1

你可以按照这个来。

<?php echo form_open_multipart('your_controller/your_function','target="_blank"') ;?>
    //other input fields
<?php form_close();?>
于 2014-12-17T13:26:23.660 回答