Я ищу, чтобы начать с исходного файла PDF, который имеет графику и текст, а затем взять некоторый код html, который имеет динамические значения для некоторого пользовательского ввода, генерирует это как PDF, мы надеемся, либо используя начальный PDF-файл, либо как background, OR каким-то образом запускает скрипт PHP, чтобы «объединить» оба PDF, где один выступает в качестве фона для другого.Как наложить HTML сгенерированный PDF поверх существующего PDF?
У меня есть некоторый код, который визуализирует в HTML отформатированный PDF: (используя DOMPDF)
$initialpdf = file_get_contents('file_html.html');
$initialpdf = str_replace(array(
'%replaceText1%',
'%replaceText2%'
), array (
$replaceText1,
$replaceText2,
), $initialpdf);
$fp = fopen('file_html_new.html','w');
file_put_contents('file_html_new.html', $initialpdf);
require_once("dompdf/dompdf_config.inc.php");
spl_autoload_register('DOMPDF_autoload');
function pdf_create($html, $filename, $paper, $orientation, $stream=TRUE)
{
$dompdf = new DOMPDF();
$dompdf->set_paper($paper,$orientation);
$dompdf->load_html($html);
$dompdf->render();
$pdf = $dompdf->output();
@file_put_contents($filename . ".pdf", $pdf);
}
$filename = 'HTML_Generated_pdf';
$dompdf = new DOMPDF();
$html = file_get_contents('file_html_new.html');
pdf_create($html,$filename,'Letter','landscape');
Код выше берет HTML файл «file_html.html» и делает строки замены со значениями пользовательского ввода, делает это как новый HTML-файл с именем «file_html_new.html», а затем отображает это как PDF-файл.
У меня также есть другие PHP код, рендерить PDF, имея PDF в качестве исходного источника: (с использованием FPDF)
<?php
ob_clean();
ini_set("session.auto_start", 0);
define('FPDF_FONTPATH','font/');
define('FPDI_FONTPATH','font/');
require('fpdf.php');
require('fpdi.php');
$pdf = new FPDI();
$pdf->setSourceFile("/home/user/public_html/wp-content/myPDF.pdf");
$tplIdx = $pdf->importPage(1);
$specs = $pdf->getTemplateSize($tplIdx);
$pdf->addPage($specs['h'] > $specs['w'] ? 'P' : 'L', 'Letter');
$pdf->useTemplate($tplIdx, 0, 0);
$pdf->SetFont('helvetica');
$pdf->SetXY(30, 30);
$pdf->Write(0, $replaceText1);
ob_end_clean();
$pdf->Output('New_Generated_PDF.pdf', 'F');
?>
Это занимает уже существующий PDF, «myPDF.pdf», и использует его в качестве фона, написание некоторых документов, переданных в документ, и сохранение вновь созданного документа.
Хотя это по существу то, что я хочу сделать, мне нужно работать с html, потому что точное форматирование текста становится строгим и почти невозможно сделать, просто построив его вручную.
Я открыт для использования DOMPDF, FPDF, FPDI, TCPDF или любого другого ресурса PHP для этого.
Есть ли способ сплавить два пути, которые у меня выше?
Я бы рекомендовал имя файла на основе сеанса для этой цели. Когда пользователь отправляет форму, он создает файл PDF на сервере. Имя файла будет сеансом пользователя. Проверьте, существует ли какой-либо PDF для этого конкретного пользователя с помощью [scandir()] (php.net/manual/en/function.scandir.php) или file_exists() и отображает все файлы PDF; если есть файл с этим сеансом пользователя, введите имя файла во второй код, используя другую кнопку отправки. –
@MawiaHL это не корень моей проблемы, она уже сохраняется как имя файла на основе сеанса, с добавлением динамических имен файлов. Проблема заключается в том, чтобы сделать один PDF поверх другого PDF. что означает 1 страница + 1 страница = 1 страница, а не отдельные визуализации. – NoReceipt4Panda