我需要编写一个PHP脚本代码,让我生成一个pdf文件,该文件以特定分辨率显示会员ID卡(类似于用于识别自己的信用卡)。
让我解释一下:
我确实有png文件格式的卡的基本蓝图。脚本需要输入成员的姓名和生日以及序列号。到目前为止,没有问题 - 那里有很多优秀的PHP库。
我的问题是确保生成的pdf(确切地说,生成的卡片图像)符合一定的分辨率(最好是300dpi),这样打印就会看起来正确。
有什么想法吗?
修改
我使用TCPDF库解决了它,它允许您以特定分辨率缩放图像
在此处获取:http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf
编辑@Don
require_once(dirname(__FILE__).'/tcpdf/config/lang/eng.php');
require_once(dirname(__FILE__).'/tcpdf/tcpdf.php');
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT,
true, 'UTF-8', false);
// set document information
$pdf->SetCreator('SO-youth');
// remove default header/footer
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
//set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
//set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
// set font
$pdf->SetFont('courier', '', 10);
// add a page
$pdf->AddPage();
// set JPEG quality
$pdf->setJPEGQuality(100);
$cred = <<<EOT
<p>
<b>{$userdata->first_name} {$userdata->last_name}</b><br/>
<span style="font-size: 80%;">{$userdata->geburtstag}</span>
</p>
EOT;
$id = <<<EOT
<span style="font-size: 60%;">{$userdata->club_id}</span>
EOT;
$pdf->Image(dirname(__FILE__).'/img/clubcard.jpg',
10, 10, 85.6, 53.98, null, null, null, false, 300);
$pdf->writeHTMLCell(60, 15, 50.5, 20.5, $cred);
$pdf->writeHTMLCell(50, 20, 77, 50.5, $id);
//Close and output PDF document
$pdf->Output($userdata->filename, 'F');
答案 0 :(得分:1)
为了这个目的,我会使用Imagemagick,以及Imagick能够直接从php访问它。
然后您就可以拍摄原始图像,添加一些文本,然后输出(或存储)为pdf,如下所示:
$image = new Imagick($filename);
$draw = new ImagickDraw();
$draw->setFont($font);
$draw->setFontSize($fontSize);
$image->annotateImage($draw, $xpos, $ypos, $rotation, $text);
// Changes the dpi
$image->setImageResolution(200,200);
我找不到用于快速输出/存储为pdf的正确代码,但应该在Imagemagick网站的某处记录。