Невозможно транслировать pdf: заголовки уже отправлены codeigniter после хостинга - PullRequest
0 голосов
/ 09 сентября 2018

Может кто-нибудь мне помочь? Я использую dompdf в codeigniter, я пробовал все решения, и тогда никто не может решить мою проблему. При использовании localhost проблем не возникало, после хостинга произошла ошибка Unable to stream pdf: headers already sent, пожалуйста, помогите мне, я все еще учусь.

Вот мой контроллер Laporanpdf.php

`<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Laporanpdf extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('model_laporan');
$this->load->library('dompdf_gen');
}
public function index(){
        $data['title'] = 'Cetak Laporan Kinerja'; //judul title
        if($this->session->userdata('level')=='1-Admin'){
        $data['pengguna'] = $this->model_laporan->pengguna_admin(); //query model        
        $data['kinerja'] = $this->model_laporan->kinerja_admin(); //query model
        $data['awal'] = strtotime($this->input->get('awal'));
        $data['jbtn_atasn'] = $this->input->get('jbtn_atasn');
        $data['nip_atsn'] = $this->input->get('nipeg');
        $data['pangkat_atsn'] = $this->input->get('pngkat');
    $data['gol_atsn'] = $this->input->get('gol');
}else{
    $data['pengguna'] = $this->model_laporan->pengguna_else(); //query model        
    $data['kinerja'] = $this->model_laporan->kinerja_else(); //query model
    $data['jbtn_atasn'] = $this->input->get('jbtn_atasn');
    $data['nip_atsn'] = $this->input->get('nipeg');
    $data['pangkat_atsn'] = $this->input->get('pngkat');
    $data['gol_atsn'] = $this->input->get('gol');
}
if($this->session->userdata('level')=='1-Admin'){
    if ($this->model_laporan->kinerja_admin()==null){
//pesan error
        echo "<script>alert('Kinerja dengan tanggal tersebut tidak tersedia. Silahkan masukan tanggal yang sesuai.');
        window.location='/kinerja/index.php/kinerja';
        </script>";
        exit();
    } else {
        $this->load->view('v_cetak', $data, TRUE);
    }
}else{
    if ($this->model_laporan->kinerja_else()==null){
//pesan error
        echo "<script>alert('Kinerja dengan tanggal tersebut tidak tersedia. Silahkan masukan tanggal yang sesuai.');
        window.location='/kinerja/index.php/kinerja';
        </script>";
        exit();
    } else {
        $this->load->view('v_cetak', $data, TRUE);
    }
}
    $paper_size  = 'A4'; //paper size
    $orientation = 'potrait'; //tipe format kertas
    $html = $this->output->get_output();
    $this->dompdf->set_paper($paper_size, $orientation);
    //Convert to PDF
    $this->dompdf->load_html($html);
    $this->dompdf->render();
    $this->dompdf->stream("laporan.pdf", array('Attachment'=>0)); //preview pada browser
}
}`

Вот мой Dompdf_gen.php, который я вставил в приложение / библиотека

`<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Dompdf_gen {
    public function __construct() {
        require_once APPPATH.'third_party/dompdf/dompdf_config.inc.php'; // @version 0.5.1.htischer.20090507
        $pdf = new DOMPDF();
    $CI =& get_instance();
    $CI->dompdf = $pdf;
}
}`

1 Ответ

0 голосов
/ 10 сентября 2018

Пожалуйста, проверьте ваши журналы ошибок. Если какие-либо предупреждения или другие выходные данные генерируются до того, как dompdf попытается отобразить выходные данные, то произойдет сбой. Устраните все ошибки, обнаруженные в журналах, и повторите попытку.

Другими вероятными причинами могут быть пустые строки после закрывающего тега «?>» В одном из ваших других классов. Избегайте использования закрывающих тегов php в любых ваших моделях / контроллерах / библиотеках, так как они не нужны и могут вызывать подобные проблемы.

Если вы не можете найти причину, которая вызывает это, в качестве последней попытки рва вы можете попробовать использовать буферизацию вывода, чтобы остановить любые утечки (см .: http://php.net/manual/en/book.outcontrol.php).

...