Разделение файла PDF на несколько файлов PDF с одинаковым внешним видом - PullRequest
0 голосов
/ 03 сентября 2018

Я использую следующую функцию php, чтобы разделить файл pdf на два файла в соответствии с номером страницы. Исходный файл имеет 14 страниц. Я создаю два файла: первые 12 страниц для одного и последние две страницы для второго файла. Но я получаю другой формат сайта для обоих созданных файлов, чем исходный файл. Как я могу улучшить функцию, чтобы убедиться, что я получаю точный формат сайта в качестве исходного файла? Я использую библиотеку pdf-reader. Или что вы можете порекомендовать использовать в качестве инструмента для достижения этой цели?

function split_pdf14($filename, $end_directory = false, $numberOfPages = 12, $row) {
    $pdf = new \TCPDI();
    $pagecount = $pdf->setSourceFile($filename);
    $pagesDone = 0;
    if ($pagecount > $numberOfPages) {
        $maxFiles = floor($pagecount / $numberOfPages);
        for ($j = 1; $j <= 2; $j++) {
            $new_pdf = new \TCPDI();
            $new_pdf->setSourceFile($filename);
            for ($i = 1; $i <= $numberOfPages; $i++) {
                $pagesDone++;
                if ($pagesDone > $pagecount) {
                    /*
                     * do nohting
                     */
                } else {
                    $new_pdf->AddPage();
                    $new_pdf->useTemplate($new_pdf->importPage($pagesDone));
                }
            }
            try {
                if ($j == 1) {
                    $new_filename = 'localfiles/' . $row['f_auftragsnr'] . '_' . $row['t_sorte'] . '_' . $row['t_sprache'] . '_' . $row['t_umfang'] . '.pdf';
                } else {
                    $new_filename = 'localfiles/' . $row['f_auftragsnr'] . '_' . $row['t_sorte'] . '_' . $row['t_sprache'] . '_' . $row['t_umfang'] . '_BON.pdf';
                }
                //$new_pdf->Output($new_filename, "F");
            $new_pdf->Output($_SERVER['DOCUMENT_ROOT'] . '/' . $new_filename, 'F'); 
               //$new_pdf->Output('/home/box/public_html/box2019/' . $new_filename, 'F'); 
            } catch (Exception $e) {
                echo 'Caught exception: ', $e->getMessage(), "\n";
            }
            $numberOfPages = $pagecount;
        }
    }
}

1 Ответ

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

Вы используете формат страницы по умолчанию (A4) и ориентацию.

Ваш код не заботится о размере импортируемых страниц и просто добавляет портретные страницы формата A4:

$new_pdf->AddPage();
$new_pdf->useTemplate($new_pdf->importPage($pagesDone));

Вы просто должны добавить страницы в правильном размере и ориентации:

$tplId = $new_pdf->importPage($pagesDone);
$size = $this->getTemplatesize($tplId);
$new_pdf->AddPage($size['w'] > $size['h'] ? 'L' : 'P', [$s['w'], $s['h']]);
$new_pdf->useTemplate($tplId);

PS: сценарию, который вы используете (TCPDI), кажется, несколько лет. Для этой задачи вы можете использовать последнюю официальную версию FPDI .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...