【问题标题】:Convert an excel to pdf using phpSpreadsheet使用 phpSpreadsheet 将 excel 转换为 pdf
【发布时间】:2018-03-02 13:34:14
【问题描述】:

我正在使用 phpSpreadsheet 将内存中的 Excel 文件转换为 pdf,但我收到了这个致命错误消息。

这里是消息

Fatal error: Uncaught exception 'PhpOffice\PhpSpreadsheet\Writer\Exception' with message 'Could not open file /pdf_finali/mario.pdf for writing.' in /membri/cassiodb/FEDEGARIPROVE/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf.php:260 Stack trace: #0 /membri/cassiodb/FEDEGARIPROVE/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf/Mpdf.php(33): PhpOffice\PhpSpreadsheet\Writer\Pdf->prepareForSave('/pdf_finali/mar...') #1 /membri/cassiodb/FEDEGARIPROVE/excel_to_pdf.php(29): PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf->save('/pdf_finali/mar...') #2 {main} thrown in /membri/cassiodb/FEDEGARIPROVE/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf.php on line 260

这里是代码

<?php

require 'vendor/autoload.php';


use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
use PhpOffice\PhpSpreadsheet\Spreadsheet;

//Inizio blocco solo per test standalone
$new_excel_path = "prova_inserimento.xlsx" ;
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
$spreadsheet = $reader->load("$new_excel_path"); 
//Fine blocco solo per test standalone

echo 'Fino alla creazione del foglio tutto bene <br> <br><br><br>';

//Conversione della variabile spreadsheet in pdf


    //Creazione del writer
    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Mpdf');

    //Salvataggio del pfd
    //$pdf_path = 'pdf_finali/'.$name.'.pdf';
    $pdf_path = 'pdf_finali/mario.pdf';
    echo '<br>';
    echo $pdf_path;
    $writer->save($pdf_path);?>

编辑:

我找到了上一个问题的解决方案(我还编辑了上面的代码,因为我写错了保存文件的路径),但现在我得到了这个。

 Fatal error: Class 'Mpdf\Mpdf' not found in /membri/cassiodb/FEDEGARIPROVE/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Pdf/Mpdf.php on line 20 

【问题讨论】:

  • 您是如何安装 PhpSpreadsheet 的 - 使用 Composer 还是手动安装?如果你是用 composer 做的,它应该已经安装了缺少的 Mpdf 库。您是否关注了这些文档:phpspreadsheet.readthedocs.io/en/develop
  • 我遇到了同样的问题。我没有使用作曲家安装。我该如何解决这个问题?

标签: php excel pdf phpspreadsheet


【解决方案1】:
$vendorDirPath = realpath(__DIR__ . '/vendor');
if (file_exists($vendorDirPath . '/autoload.php')) {
    require $vendorDirPath . '/autoload.php';
} else {
    throw new Exception(
        die("somthing went wrong");
    );
}

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReaderForFile("190321_CNGD0N0242017_RatingShell.xls");
$phpWord = $reader->load("190321_CNGD0N0242017_RatingShell.xls");
use \PhpOffice\PhpSpreadsheet\Style\Border;

$phpWord ->getDefaultStyle()->applyFromArray(
            [
                'borders' => [
                    'allBorders' => [
                        'borderStyle' => Border::BORDER_THIN,
                        'color' => ['rgb' => '000000'],
                    ],
                ]
            ]
        );

$xmlWriter = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($phpWord,'Mpdf');

$xmlWriter->writeAllSheets();
$xmlWriter->setFooter("Sdfsdf");
$num = rand(00, 99);
//create folder named files
$xmlWriter->save("files/helloWorld$num.pdf");

【讨论】:

    【解决方案2】:

    如果您完成了缺少的 Mpdf 库,您可能会遇到以下错误:

    Unable to `set PDF file protection, CSPRNG Functions are not available. Use paragonie/random_compat polyfill or upgrade to PHP 7.`
    

    当然,除非您使用的是 PHP 7。

    【讨论】:

    【解决方案3】:

    我更改了以下代码:

    //if (!function_exists('random_int') || !function_exists('random_bytes')) {                      
      if (!function_exists('random_int') ) {
    

    在 mpdf/mpdf/src/Pdf/Protection.php 和 mpdf/mpdf/src/Pdf/Protection/UniqidGenerator.php 中

    您可能需要使用类似以下命令来定位并包含 random_int.php 文件:
    find . -name random_int.php -print

    require_once "/usr/share/nginx/html/CI306/vendor/mpdf/mpdf/vendor/paragonie/random_compat/lib/random_int.php";
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-05-26
      • 2017-01-13
      • 2018-01-27
      • 1970-01-01
      • 2016-07-16
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多