新7版本如何设置边距?我想删除页面的边距,设置为 0。在版本 6 中,我将它们设置为新的 mPDF(但现在我不知道怎么可能
关于6我用过的:
$pdf = new \mPDF('utf-8', 'A4'.($orientation == 'L' ? '-L' : ''), '', '', $margin_left, $margin_right, $margin_top, $margin_bottom, 0, 0);
Run Code Online (Sandbox Code Playgroud)
现在?
谢谢
我已经下载了 mpdf 的更新版本并将其与 php 一起使用。它给了我以下错误。
“致命错误:在第 39 行的 E:\xampp\htdocs\PDF\mpdf\Mpdf.php 中未找到特征 'Mpdf\Strict'”。
$html = '<h2>mpdf test.</h2>';
include("mpdf/mpdf.php");
$mpdf = new mPDF('c','A4','','',32,25,27,25,16,13);
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first
level of a list
// LOAD a stylesheet
$stylesheet = file_get_contents('mpdfstyletables.css');
$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text
$mpdf->WriteHTML($html,2);
$mpdf->Output('mpdf.pdf','I');
exit;
Run Code Online (Sandbox Code Playgroud) 我正在尝试用PHP做一些PDF生成.我发现mPDF通常效果很好.我遇到的一个问题是,我需要为某些部分设置偶数/奇数页的单独标题.我不认为这个功能正常.这是我的代码:
// load mPDF
// --------------------------------------------------------------------------
include('mpdf.php');
$mpdf = new mPDF();
// generate a lot of content so it spans multiple pages
// --------------------------------------------------------------------------
$i = 0;
$out = '';
while ($i < 300)
{
$i++;
$out .= '<p>Lorem Ipsum</p>';
}
// set html header for odd pages, write html and output
// --------------------------------------------------------------------------
$mpdf->SetHTMLHeader('ODD {PAGENO}', 'O');
$mpdf->WriteHTML($out);
$mpdf->Output();
Run Code Online (Sandbox Code Playgroud)
当我运行这个代码时,它会在每个页面上放置"ODD Page 3"或它所在的任何页面.不只是奇怪的页面.它似乎不会将自然破碎的页面视为偶数或奇数的新页面,只是手动破坏的页面.如果我运行AddPage()函数,它会将下一个组视为偶数页面.但这可能是50个自动分页符.
有关如何让它为实际偶数/奇数页设置不同标题的任何建议,而不仅仅是在手动分页后?
在php中创建页面后,我使用mpdf创建一个看起来像页面的pdf.该页面是收据,因此其中一些条目是变量.将收据页面('Receipt_Template_2.php')转换为pdf的页面代码为:
<?php
include("MPDF57/mpdf.php");
ob_start();
include "Receipt_Template_2.php";
$template = ob_get_contents();
ob_end_clean();
$mpdf=new mPDF('','A4','','',32,25,27,25,16,13,'L');
$mpdf->WriteHTML($template);
$mpdf->Output('MyPDF.pdf', 'D');
?>
Run Code Online (Sandbox Code Playgroud)
但是,实际收据模板页面上正确打印了php变量.但是,这些变量不会打印到收据上(字段留空).谢谢.
我主要在收据模板中使用会话变量,如下所示:
<div id="apDiv1"><img src="Receipt_Template_2.jpg" width="765" height="519"></div>
<div id="apDiv2">
<p><strong><?php echo $_SESSION['firstName'] . ' ' . $_SESSION['lastName'];?></strong> </p>
<p><?php echo $_SESSION['address'];?></p>
<p><?php echo $_SESSION['city'] . ' ' . $_SESSION['province'];?></p>
<p><?php echo $_SESSION['postal'];?></p>
<p><?php echo $_SESSION['country'];?></p>
</div>
<div id="apDiv3"><?php echo $_SESSION['dateReceived'];?></div>
<div id="apDiv4"><?php echo date("Y-m-d");?></div>
<div id="apDiv5"><?php echo $_SESSION['locationIssued'];?></div>
<div id="apDiv18">$<?php echo $_SESSION['donationAmount'];?></div>
<div id="apDiv6"><?php echo $preReceiptNumber . $receiptNumber;?></div>
Run Code Online (Sandbox Code Playgroud) 我的php脚本使用mPDF有一个奇怪的问题.我从HTML生成PDF文件,我想在每个页面上设置水印.所以我在手册中尝试:
if($_REQUEST['WATERMARK']==1){
$mpdf->SetWatermarkText('draft');
$mpdf->showWatermarkText = true;
$mpdf->watermarkTextAlpha= 0.4;
}
Run Code Online (Sandbox Code Playgroud)
但它工作错误,因为它没有清晰地设置水印(就像我将设置watermarkTextAlpha = 1,重叠在主文本上).但在其他脚本(有点不同)中它运作良好.
我已经mpdf/mpdf通过composer 安装了.
所有这些都在开发环境中完美运行,但在生产/暂存中,我收到权限错误.
file_put_contents(\/.../ttfontdata\/dejavusanscondensed.GSUBGPOStables.dat): failed to open stream: Permission denied' in .../shared\/vendor\/mpdf\/mpdf\/classes\/ttfontsuni.php:999\nStack trace:\n#0 [internal function]: Illuminate\\Exception\\Handler->handleError(2, 'file_put_conten...', '...', 999, Array)\n#1
Run Code Online (Sandbox Code Playgroud)
根据mpdf文档,我需要定义我的存储文件夹的路径:
// Tried this at top of index.php before require bootstrap/autoload.php
define("_MPDF_TEMP_PATH", dirname(__FILE__) . '/../app/storage/mpdf/');
// Tried this just before creating a new mpdf
define("_MPDF_TEMP_PATH", storage_path() . '/mpdf/');
Run Code Online (Sandbox Code Playgroud)
我使用Laravel作为框架 - 而mpdf只是不会使用我指定的临时文件夹
我正在使用mPDF生成工资单。但是,工资单中的图标一旦生成就不会显示。它只留下一个空白,就像这样:

图标应显示在突出显示的位置上。到目前为止,这是我已经完成的工作:
我正在使用Yii2 PHP框架,这是我的动作控制器:
public function actionPdf($id)
{
$model = $this->findModel($id);
$earnings = EarningDetails::find()->where(['payslip_id' => $model->_id, 'status' => 1])->all();
$deductions = DeductionDetails::find()->where(['payslip_id' => $model->_id, 'status' => 1])->all();
$html = $this->render('view', [
'model' => $model,
'earnings' => $earnings,
'deductions' => $deductions,
]);
$mpdf = new mPDF('c','A5-L','0','',0,4,1,1,0,0);
$mpdf->allow_charset_conversion = true;
$mpdf->charset_in = 'windows-1252';
$mpdf->SetTopMargin(0);
$user_password = User::find()->where(['_id' => $model->user_id ])->one();
$password = $user_password->fname.$user_password->lname;
$mpdf->SetProtection(array(), $password, $password);
$mpdf->WriteHTML($html);
$mpdf->Output('Payslip.pdf', 'D');
exit;
}
Run Code Online (Sandbox Code Playgroud)
我想念什么吗?请告诉我。
我有个问题。如何将新页面从HTML添加到PDF?
我将立即说我不知道为什么,但是有以下解决方案:
<pagebreak />
Run Code Online (Sandbox Code Playgroud)
要么
h1 {page-break-before: always}
Run Code Online (Sandbox Code Playgroud)
不工作。
我的PHP代码:
$pdf = new Pdf([
'mode' => Pdf::MODE_UTF8,
'format' => Pdf::FORMAT_A4,
'orientation' => Pdf::ORIENT_PORTRAIT,
'destination' => Pdf::DEST_FILE,
'filename' => $path,
'content' => $content,
'cssInline' => '.font_next{font-family:DoodlePen}table{border-collapse:collapse;width:100%}td{border:1px solid #000}',
]);
return $pdf->render();
Run Code Online (Sandbox Code Playgroud)
有没有人有这种经验,可以为您提供帮助?
我仍然有点新的mpdf,我尝试使用嵌入式base64使用mpdf显示图像.以下是我的代码.
$kad_photo = base64_encode($row['kad_photo']);
header('Content-Type: image/jpeg;');
$photo = "<img src=\"data:image/jpeg;base64, ".$kad_photo."\"/>";
$mpdf->WriteHTML($photo);
Run Code Online (Sandbox Code Playgroud)
当我把$mpdf->showImageErrors = true;:我得到这个错误:
mPDF error: IMAGE Error (0f5155bea7f7e18dc9f7c35b695d1705): Error parsing JPG header
Run Code Online (Sandbox Code Playgroud)
我尝试了这种方法,它的工作原理!
$mpdf->WriteHTML("<img src=".$_SERVER['DOCUMENT_ROOT']."/vms/images/logo/logo.png " .
"width=\"500\" height=\"50\">");
Run Code Online (Sandbox Code Playgroud)
但是对于底座64我没有显示它.
除此之外,因为$photo,我得到file_put_content了字符串并将其粘贴到jsfiddle,它工作!但是在mpdf中我无法显示base64图像.
任何建议为什么我不能使用嵌入式base64显示图像?
在我的控制器中生成 pdf 布局,然后将其附加为 Pdf 并使用自定义文件名。这是代码
$this->load->library('mpdf');
$mpdf = new Mpdf('L', 'A4', 0, 'Trebuchet MS', 6, 6, 9, 9, 3, 3, 'L');
ob_start();
echo $this->generateFoodReport($inspectionId);
$html = ob_get_contents();
ob_end_clean();
$mpdf->WriteHTML(utf8_encode($html));
$content = chunk_split(base64_encode($mpdf->Output('', 'S')));
$filename = "inspection-report.pdf";
$this->load->library('email');
$this->email->set_mailtype("html");
$this->email->set_newline("\r\n");
$this->email->from($fromMail, $fromName);
$this->email->to($mailTo);
$this->email->subject($subject);
$this->email->attach($content):
$this->email->send();
Run Code Online (Sandbox Code Playgroud)
如何通过电子邮件附加文件。