>

Excel 파일이 있는데 PHP Excel을 사용하여 파일을 pdf로 변환하고 싶습니다. 다음 코드 사용하기 :

namespace frontend\controllers;
use PHPExcel;
use PHPExcel_IOFactory;
use PHPExcel_Settings;
use PHPExcel_Style_Alignment;
use yii\web\Controller;
class ExportsController extends Controller
{
    public function actionIndex()
    {
        $inputFile = \Yii::getAlias('@frontend') . '/controllers/matrix.xls';
        $inputFileType = PHPExcel_IOFactory::identify($inputFile);
        $objReader = PHPExcel_IOFactory::createReader($inputFileType);
        $objPHPExcel = $objReader->load($inputFile);
        $objPHPExcel->setActiveSheetIndex(0);
        $rendererLibrary = 'DomPDF';
        $rendererLibraryPath = \Yii::getAlias('@frontend') . '/components/Classes/PHPExcel/Writer/PDF/' . $rendererLibrary;
        $rendererLibraryPath .= '.php';
        if (!PHPExcel_Settings::setPdfRenderer(
            $rendererLibrary,
            $rendererLibraryPath
        )
        ) {
            die(
                'NOTICE: Please set the $rendererName and $rendererLibraryPath values' .
                '<br />' .
                'at the top of this script as appropriate for your directory structure'
            );
        }
        header('Content-Type: application/pdf');
        header('Content-Disposition: attachment;filename="01simple.pdf"');
        header('Cache-Control: max-age=0');
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
        $objWriter->save('php://output');
    }
}

마지막 두 줄의 코드를 주석 처리하면 빈 pdf 파일이 반환되고 그렇지 않으면 다음 오류가 발생합니다. net::ERR_INVALID_RESPONSE .

코드의 실수를 찾도록 도와 주시겠습니까?


  • 답변 # 1

    마지막으로이 코드 추가

     header('Content-Type: application/pdf');
      header('Content-Disposition: attachment;filename="01simple.pdf"');
      header('Cache-Control: max-age=0');
      $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
      ob_end_clean();
      $objWriter->save('php://output');
    
    

  • 답변 # 2

    xls 파일에 약 3000 개 이상의 레코드가 있으면 DomPDF에서 메모리 오류가 발생합니다.

관련 자료

  • 이전 json - d3 - 모든 자식 노드가 동시에 표시되는 것은 아닙니다
  • 다음 android - onEndOfSpeech가 호출 된 후 SpeechRecognizer가 시작될 때 왜 통화 중입니까?