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“>
答案 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);
}
希望这可能对您有帮助...