Zip FPDFs файлы? - PullRequest
       42

Zip FPDFs файлы?

0 голосов
/ 27 апреля 2020

У меня есть скрипт php, где я могу легко загрузить файл PDF, используя библиотеку fpdf. Сценарий принимает идентификатор нескольких строк из БД и загружает PDF-файлы для каждого идентификатора. Как мне загрузить несколько PDF-файлов, как один раз с Zip? То есть я отправляю значение идентификатора другому сценарию, и этот сценарий затем собирает все идентификаторы и загружает его в zip-файл?

<?php
//include connection file
ob_start();
include_once('fpdf/fpdf.php');

 $db = new PDO("mysql:host=localhost; dbname=db;charset=utf8",'root','');

class PDF extends FPDF
{
// Page header
function Header()
{
    $this->SetFont('Arial','B',14);
    $this->Cell(276, 5, 'Details', 0, 0, 'C');
    $this->Ln();
    $this->SetFont('Times', '', 12);
    //$this->Cell(276, 10, 'Details of students', 0, 0, 'C');
    $this->Ln(5);
}

function viewTable($db)
{
    $id=$_GET['id'];
    $sql = "SELECT * FROM Datas WHERE ID = '$id'";
    $stmt = $db->query($sql);
}


}

$id=$_GET['id'];

$pdf = new PDF('P','mm','A4');
$pdf->AliasNbPages();
$pdf->AddPage('L','A4',0);
$pdf->viewTable($db);

$pdf->Output("D", "$id.pdf");
ob_end_flush(); 

?>

1 Ответ

0 голосов
/ 27 апреля 2020

Понял! Я создал ZipArchive и отправил путь к файлу zip.

$pdf->Output("F", "$id.pdf");

$zip = new ZipArchive;
$tmp_file = 'Documents.zip';
    //if ($zip->open($tmp_file,  ZipArchive::CREATE)) 
    if($zip->open($tmp_file, ZipArchive::OVERWRITE|ZipArchive::CREATE)) {
        $zip->addFile("$id.pdf", "$id.pdf");
        $zip->close();
        echo 'Archive created!';
        header('Content-disposition: attachment; filename=Documents.zip');
        header('Content-type: application/zip');

   } else {
       echo 'Failed!';
   }
   ob_end_clean(); 
   readfile($tmp_file);
...