mpdf 相关问题

mPDF是一个PHP库,用于从HTML生成PDF文件,支持Unicode / UTF-8和CJK。它是在GNU通用公共许可证下分发的。虽然它比它的protoplast(fpdf库)慢,但它支持Unicode字符,而fpdf则不支持。

MPDF HTML 填充页面

我正在使用 MPDF 从 HTML 生成 pdf 文件,该文档是一份法律文件,在特定司法管辖区要求所有页面从上到下填充文本,即文本段落...

回答 1 投票 0

在 Laravel 中使用 mPDF 时阿拉伯文本方向和 PDF 编码的问题

我在 Laravel 项目中使用 mPDF 包从视图生成 PDF,特别是用于渲染阿拉伯文本。我的目标是在从左到右 (LTR) 字符旁边包含阿拉伯文本(例如

回答 1 投票 0

mPDF 隐藏第一页和最后一页的标题

我使用以下代码在 PDF 的每一页上添加页眉和页脚: 全局$pdf_footer; 全局$pdf_header; $mpdf->SetHTMLHeader(''); $mpdf->

回答 1 投票 0

此组合出现错误:yii 1.1.29 + php 7.4 上的 mPDF

嗨,我正在尝试将我的 yii 应用程序迁移到 Php 7.4, 在这个过程中我发现mPDF需要升级。 所以我进入“protected”文件夹,然后运行“composer intall mpdf/mpdf”,这会创建一个 作曲家.j...

回答 1 投票 0

mpdf https 上的图像损坏

我正在使用 mpdf 生成 pdf。一切都很好,直到我切换到 https。之后,pdf 仍然可以正确生成,但图像已损坏。他们的来源是用 https 协议正确编写的......

回答 5 投票 0

在 yii2 中添加自定义字体 kartik yii-mpdf 后,config_custom.php 应该放在哪里

创建自定义配置文件以更改 mpdf-yii2 中的字体类型后,我应该将该文件放在哪里以及如何调用它。 这是custom_config.php 创建自定义配置文件以更改 mpdf-yii2 中的字体类型后,我应该将该文件放在哪里以及如何调用它。 这是custom_config.php <?php require_once __DIR__ . '/vendor/autoload.php'; $defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults(); $fontDirs = $defaultConfig['fontDir']; $defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults(); $fontData = $defaultFontConfig['fontdata']; $mpdfConfig = new \Mpdf\Mpdf([ 'mode' => 'utf-8', 'format' => [190, 236], 'tempDir' => __DIR__ . '/web/css/fonts', 'fontDir' => array_merge($fontDirs, [ __DIR__ . 'web/css/fonts/tajawal' ]), 'fontdata' => $fontData + [ 'tajawal' => [ 'R' => "Tajawal-Regular.ttf", 'L' => "Tajawal-Light.ttf", 'B' => "Tajawal-Bold.ttf", 'useOTL' => 0xFF, 'useKashida' => 75, ], ], 'default_font' => 'tajawal' ]); 这是 /config/web.php 中该库的配置 'pdf' => [ 'class' => Pdf::classname(), 'format' => Pdf::FORMAT_A4, 'orientation' => Pdf::ORIENT_PORTRAIT, 'destination' => Pdf::DEST_BROWSER, 'cssFile' => '@vendor/kartik-v/yii2-mpdf/src/assets/kv-mpdf-bootstrap.min.css', 'cssInline' => '.row { margin: 5px 0px 0px 0px !important; padding: 0px !important; }', 'methods' => [ 'SetTitle' => 'Title', ], ], 以及controller.php中的这段代码 $pdf = Yii::$app->pdf; $pdf->methods = [ 'SetTitle' => $pdfTitle , ]; $mpdf = $pdf->api; $mpdf->setAutoBottomMargin = 'pad'; if($language == 0) { $mpdf->SetDirectionality('ltr'); } else { $mpdf->SetDirectionality('rtl'); } $pdf->content = $content; return $pdf->render(); 我正在尝试此代码添加了选项 'pdf' => [ 'class' => Pdf::classname(), 'format' => Pdf::FORMAT_A4, 'orientation' => Pdf::ORIENT_PORTRAIT, 'destination' => Pdf::DEST_BROWSER, 'cssFile' => '@vendor/kartik-v/yii2-mpdf/src/assets/kv-mpdf-bootstrap.min.css', // 'marginLeft'=>0, // 'marginRight'=>0, // 'marginFooter'=>20, 'cssInline' => '.row { margin: 5px 0px 0px 0px !important; padding: 0px !important; }', 'methods' => [ 'SetTitle' => 'Title', ], 'options' => [ 'config' => $_SERVER['DOCUMENT_ROOT'].'/css/fonts/config-fonts.php', ], 查看kartik\mpdf\Pdf类源代码。它创建自己的 Mpdf 对象实例。因此,当您使用 custom_config.php 时,在 Yii::$app->pdf 中创建自己的实例不会对您有帮助。 看看如何在 Mpdf 类中创建 Pdf 实例,在 options 组件属性覆盖某些值后,其 Mpdf 属性中设置的任何内容都将作为构造函数参数传递到 Pdf 中。这意味着您在配置 Mpdf 组件时,需要在 custom_config.php 属性中设置要传递给 options 中的 Pdf 构造函数的任何内容。 为了保持您的config/web.php干净,您可以在额外文件中准备选项,例如config/pdf.php: $defaultConfig = (new Mpdf\Config\ConfigVariables())->getDefaults(); $fontDirs = $defaultConfig['fontDir']; $defaultFontConfig = (new Mpdf\Config\FontVariables())->getDefaults(); $fontData = $defaultFontConfig['fontdata']; return [ // your font configurations 'fontDir' => array_merge($fontDirs, [ dirname(__DIR__) . '/web/css/fonts/tajawal', // the dirname() is used here because __DIR__ points to `config` directory. ]), 'fontdata' => $fontData + [ 'tajawal' => [ 'R' => "Tajawal-Regular.ttf", 'L' => "Tajawal-Light.ttf", 'B' => "Tajawal-Bold.ttf", 'useOTL' => 0xFF, 'useKashida' => 75, ], ], // keep defaults that are set up in Pdf::$options 'autoScriptToLang' => true, 'ignore_invalid_utf8' => true, 'tabSpaces' => 4, ]; 如您所见,我省略了 mode、format、tempDir 和 default_font 选项,因为这些选项被 Pdf 组件属性覆盖,因此我们需要在那里设置它们。 您不需要 require vendor/autoload.php,因为在加载配置之前它已经包含在 web/index.php 文件中。 现在我们需要在 Pdf 中的 config/web.php 组件设置中使用此文件。 'pdf' => [ 'class' => Pdf::classname(), 'format' => Pdf::FORMAT_A4, 'orientation' => Pdf::ORIENT_PORTRAIT, 'destination' => Pdf::DEST_BROWSER, 'cssFile' => '@vendor/kartik-v/yii2-mpdf/src/assets/kv-mpdf-bootstrap.min.css', 'cssInline' => '.row { margin: 5px 0px 0px 0px !important; padding: 0px !important; }', 'methods' => [ 'SetTitle' => 'Title', ], 'mode' => Pdf::MODE_UTF8, // we will use constant defined in Pdf class instead of plain text 'tempPath' => dirname(__DIR__) . '/web/css/fonts', // tempDir uses tempPath property instead. Make sure the path to temp dir matches actual directory structure 'defaultFont' => 'tajawal', 'options' => require __DIR__ . '/pdf.php', // here we use the extra file with pdf configuration we've prepared ], 这应该确保 Mpdf 组件中的 Pdf 实例是使用您设置的配置创建的。

回答 1 投票 0

如何使用mpdf包为上传的PDF文件中的所有页面添加页眉?

我的代码仅将页脚添加到所有页面,但不添加页眉。 我正在 Laravel 项目中执行此操作。 // 报告控制器.php $mpdf = 新 Mpdf(); $pagecount = $mpdf->SetSourceFile($re...

回答 1 投票 0

我在从 mPDF 库输出的 pdf 上的附加 XML 文件上得到了 0.00 字节的文件大小,并且该文档与 PDF/A-3 不符

我使用 mPDF 库生成 PDF/A-3 文件,一切正常,除了 我从该库输出的 pdf 文件表明文件仅符合 PDF/A-1B。 我的 XML 附件在 pdf 文档的输出中

回答 1 投票 0

带有基本设置的空白页

我遇到的问题是,我正在使用 mpdf 文档中给出的基本设置,但只得到一个空白页面作为输出。 ajax 正在工作,调试输出如下: 调试:在 0.013416 秒内生成 PDF...

回答 1 投票 0

调用未定义函数 Mpdf\Mpdf()

我正在尝试使用 mPDF 和 laravel 从 Blade View 下载 pdf,但是当我运行代码时,我得到 "message": "调用未定义函数 Mpdf\Mpdf()", "例外": "Symfony\Component\

回答 3 投票 0

在 PHP 中使用 mPDF 生成 PDF 时乌尔都语字体中缺少字符“Á”

在生成包含乌尔都语文本的 PDF 时,我面临着 PHP 中的 mPDF 库的独特挑战。导致问题的特定字符是“-”(嘿),它似乎缺失或不存在

回答 1 投票 0

mPDF 中的两列布局,列之间有一行

我想要 mPDF 中的两列布局,其中内容应在第一列结束时放置在两列内,然后转到第二列。两列均已填充。他们去下一个......

回答 1 投票 0

在 CSS 中的“@media”表达式中使用媒体查询

我在手册中读到可以使用CSS媒体查询,例如: 但我需要在一个独特的 CSS 样式表中使用它,你...

回答 1 投票 0

mpdf - 设置页眉和页脚

如何在mpdf生成的PDF文档中设置页眉和页脚? $mpdf = 新\Mpdf\Mpdf(); $mpdf->SetHTMLHeader('Page: {PAGENO}'); $mpdf->WriteHTML('测试... 如何在mpdf生成的PDF文档中设置页眉和页脚? $mpdf = new \Mpdf\Mpdf(); $mpdf->SetHTMLHeader('<div>Page: {PAGENO}</div>'); $mpdf->WriteHTML('<div>test</div>'); $mpdf->Output('test.pdf'); 这会将 test 写入文档,但没有标题? 如何将总页码添加到标题中,例如Page 1 of 3 我使用 Mpdf 版本 8.1.6,此代码对我有用: $mpdf = new \Mpdf\Mpdf(); $mpdf->SetHTMLHeader('<div>Page: {PAGENO}</div>'); $mpdf->SetHTMLFooter('<div>Some Footer</div>'); $mpdf->WriteHTML('<div>test</div>'); $mpdf->Output(); 总页数仅在页眉或页脚部分包含时才有效。 例如,你可以这样写: $mpdf->SetHTMLHeader('<div>Page {PAGENO} of {nbpg}</div>'); 这个方法对我有用 页眉和页脚 如果您希望每个页面上都显示页眉和页脚,请将它们添加到您的标签中,如下所示: 标题 <htmlpageheader name="page-header"> Your Header Content </htmlpageheader> 页脚 <htmlpagefooter name="page-footer"> Your Footer Content </htmlpagefooter> 现在你只需要在 CSS 中使用 name 属性定义它们: @page { header: page-header; footer: page-footer; } 页眉和页脚内部的{PAGENO}可以用来显示页码。 参考在此填写

回答 2 投票 0

mPDF 将 pdf 输出为由字符组成的符号

我想在浏览器中显示pdf。我使用 mpdf 生成 pdf 并且它生成正确。当我使用 $mpdf->Output('binders/' . $filename . '.pdf', 'I'); 它输出为以下符号...

回答 2 投票 0

Laravel - 将使用 TailwindCSS 样式的视图输出为 PDF

我正在尝试从视图生成pdf,但样式就是不出来。我尝试过使用 3 个不同的库,但结果并没有太大不同。我错过了什么吗? 看法 我正在尝试从视图生成 pdf,但样式就是不出来。我尝试过使用 3 个不同的库,但结果并没有太大不同。我是不是错过了什么? view <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Test View</title> <link rel="stylesheet" type="text/css" media="screen" href="{{ asset('css/app.css') }}"> <script src="{{ asset('js/app.js') }}" defer></script> </head> <body class="font-sans antialiased"> <div class="grid grid-cols-3"> <div class="bg-red-200 col-span-2 h-screen"></div> <div class="bg-blue-200 h-screen"> <div class="grid grid-cols-8"> <div class="col-span-7"> <div class="rounded-t-full w-full h-screen flex items-center justify-center bg-green-600"> <div class="h-60 w-60 rounded-full bg-blue-500">TEST</div> </div> </div> </div> </div> </div> </body> </html> appearance dompdf export method protected function dompdfImplementation() { $dompdf = new Dompdf; $dompdf->getOptions()->setChroot(public_path()); $dompdf->loadHtml(view('view')->render()); $dompdf->stream('view.pdf', ['Attachment' => false]); } dompdf export result mpdf export method protected function mpdfImplementation() { $mpdf = new Mpdf; $mpdf->WriteHTML(view('view')->render()); $mpdf->output(); } mpdf export result tcpdf export method protected function tcpdfImplementation() { $tcpdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); $tcpdf->AddPage(); $tcpdf->writeHTML(view('view')->render()); $tcpdf->Output('view.pdf', 'I'); } tcpdf export result 如果没有 css 内联,是否无法将视图导出为 pdf? 我是否最好手动截取整页屏幕截图,将其粘贴到文本文档中并将其另存为 pdf 文件? 这个包的作用就像一个魅力(就像通常的 spatie 一样): https://github.com/spatie/browsershot 根据医生的说法: 该软件包可以将网页转换为图像或 pdf。转换 是由 Puppeteer 在幕后完成的,它控制着一个无头的 谷歌浏览器版本。 如果您需要支持现代CSS功能,例如flexbox(我想您的Tailwind示例使用了flexbox),那么最好使用headless chrome(或有点旧的wkhtmltopdf)来生成PDF。 使用 chrome-php/chrome 的示例: <?php use HeadlessChromium\BrowserFactory; use HeadlessChromium\Page; require_once __DIR__ . '/vendor/autoload.php'; $browserFactory = new BrowserFactory(); $browser = $browserFactory->createBrowser([ 'noSandbox' => true, 'customFlags' => [ '--proxy-server="direct://"', '--proxy-bypass-list=*', '--font-render-hinting=none', ], ]); $page = $browser->createPage(); $tempname = '//<path to your HTML over HTTP>'; $page->navigate('file://' . $tempname) ->waitForNavigation(Page::NETWORK_IDLE); $outputPath = __DIR__ . '/output.pdf'; $page->pdf([ 'printBackground' => true, 'preferCSSPageSize' => true, 'marginTop' => 0.4, 'marginBottom' => 0.2, 'marginLeft' => 0.2, 'marginRight' => 0.2, ])->saveToFile($outputPath); 使用 PHP PDF 库可以利用其相对于浏览器方法的一些优势 - 颜色处理、预打印、条形码支持、页眉和页脚、页码、目录等,但考虑到它们对 HTML 和 CSS 的支持,需要定制模板和很可能需要样式表。 当然,当您无法通过托管提供商运行除 PHP 之外的其他软件时,上一段也适用。 这个答案可能会解决问题: https://stackoverflow.com/a/36695827/5540654 基本上,您需要在文档的 base 中添加 head 标签。 <html> <head> ... <base href="http://www.example.com/"> <link href="/assets/css/style.css" rel="stylesheet"> ... </head> 使用 wkhtmltopdf 为我工作。可能是类似的问题。 之后 尝试barryvdh/laravel-dompdf而不是dompdf/dompdf 在我的样式表上使用media="print" 使用 TailwindCSS 的 print:* 类 试图让chrome-php工作却无济于事 尝试 barryvdh/excel 的 pdf 导出。 没有任何效果,所以我达到的解决方案是一个糟糕的解决方案。 在 Firefox 中打开视图。 截取整个页面(不仅仅是可见内容)。 使用我找到的第一个在线 PNG 到 PDF 转换器。 我希望有一种不那么痛苦的方法来做到这一点,但它看起来不像。这个糟糕的解决方案实际上有效。

回答 4 投票 0

php Office 电子表格 mpdf 带密码导出示例

是否可以使用php Office电子表格和mpdf在pdf文件上设置密码?我认为没有其他选择。 我使用的是 phpspreadsheet 的原生 excel 语法,而不是 html。 建议我其他...

回答 1 投票 0

mpdf 中的专色

在mpdf中(我使用8.1.4和PHP 8.2)我可以通过这样的代码添加专色 $mpdf->AddSpotColor('直切', 10, 10, 10, 10); //名称、c、m、y、k 但之后我就看不到这个专色了。在A...

回答 1 投票 0

如何在 PHP 中动态放置表格或图像到 pdf

我有一个规则的pdf文件,需要通过多个批准。在文件(内容)的末尾,我需要: 在特定位置添加二维码作为电子签名,或者 添加包含

回答 1 投票 0

Laravel Mccarlosen/Laravel-mpdf 包无法将数据传递到刀片模板

我无法使用 McCarlosen/Laravel-mpdf 包获取对象数据传递给 Blade 模板。我们的愿望是传递单行数据库记录,但对页面的调用遇到错误 - “未定义的变量...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.