Laravel:在 pdf 上添加具有特定位置的图像

问题描述 投票:0回答:1

构建Laravel API,我有合同PDF文件存储在远程服务器中,并以uid保存在数据库中,还有在线签名文件,它是png。现在,当用户单击

sign
按钮时,我想拍摄此 png 图像并将其放置在合同 PDF 中的右下角(这可能会改变)。我用 laravel domPDF 和 laravel-snappy 包尝试过,但没有得到想要的结果。 domPDF 示例:

    public function addSignatureToPdf(ContractFile $contractFile)
{
    // Path to the existing PDF file
    $pdfPath = storage_path($this::PDF_DIRECTORY_PATH . "combined_document{$contractFile->getHash()}.pdf");

    $existingPdfContent = file_get_contents($pdfPath);

    // Set the path to your signature image
    $signatureImagePath = storage_path('app/contract-files/დავით-ხაჩიძე.png');

    // Load the HTML content with the image (signature) added
    $html = view('pdf.signature', compact('signatureImagePath'))->render();
    $htmlWithEncoding = mb_convert_encoding($existingPdfContent . $html, 'HTML-ENTITIES', 'UTF-8');

    // Convert HTML to PDF
    $pdf = PDF::loadHTML($htmlWithEncoding);

    // Save the modified PDF
    $outputPdfPath = storage_path($this::PDF_DIRECTORY_PATH . 'modified_contract.pdf');
    file_put_contents($outputPdfPath, $pdf->output());

    return "PDF with signature added saved at: $outputPdfPath";
}

这创建了 pdf 文件,但其中包含二进制数据,我不确定在哪里以及如何将图像附加到 pdf。有什么建议如何用 laravel 来做吗?

php laravel pdf dompdf laravel-dompdf
1个回答
0
投票

将图像转换为base64

function convertImageToBase64($path) : string{
   try {
       return base64_encode(file_get_contents(public_path($path)));
   } catch (\Throwable $th) {
       return '';
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.