【问题标题】:Dynamically creating a member ID card as pdf using PHP?使用PHP动态创建会员身份证为pdf?
【发布时间】:2010-02-03 10:35:14
【问题描述】:

我需要编写一个 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');

【问题讨论】:

    标签: php pdf dynamic resolution


    【解决方案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 网站的某个地方。

    【讨论】:

    • 这肯定会奏效,糟糕的是,lib 没有也无法安装(低成本主机:/)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 2019-12-04
    • 2021-12-01
    • 1970-01-01
    • 2020-02-03
    相关资源
    最近更新 更多