加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 如何在现有PDF上叠加HTML生成的PDF?

发布时间:2021-07-06 05:22:07 所属栏目:大数据 来源: https://www.jb51.cc
导读:我想从一个初始的PDF文件开始,一个有图形和文本的文件,然后拿一些HTML代码,它有一些用户输入的动态值,生成为PDF,希望使用初始PDF作为背景,或者之后以某种方式运行PHP脚本以“合并”两个PDF,其中一个充当另一个的背景. 我有一些代码,呈现HTML格式的PDF :(使用

我想从一个初始的PDF文件开始,一个有图形和文本的文件,然后拿一些HTML代码,它有一些用户输入的动态值,生成为PDF,希望使用初始PDF作为背景,或者之后以某种方式运行PHP脚本以“合并”两个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”并使用用户输入值进行字符串替换,将其呈现为名为“file_html_new.html”的新HTML文件,然后将该AS呈现为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文档与FPDI一起使用.这段代码应该向您展示这个概念(实际上我猜所有的页面格式都是A4肖像):

<?PHP

$pdf = new FPDI();

// let's get an id for the background template
$pdf->setSourceFile('myPDF.pdf'); 
$backId = $pdf->importPage(1);

// iterate over all pages of HTML_Generated_pdf.pdf and import them
$pageCount = $pdf->setSourceFile('HTML_Generated_pdf.pdf');
for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
    // add a page
    $pdf->AddPage();
    // add the background
    $pdf->useTemplate($backId);
    // import the content page
    $pageId = $pdf->importPage($pageNo);
    // add it
    $pdf->useTemplate($pageId);
}

$pdf->Output();

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读