构建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 来做吗?
将图像转换为base64
function convertImageToBase64($path) : string{
try {
return base64_encode(file_get_contents(public_path($path)));
} catch (\Throwable $th) {
return '';
}
}