gpt4 book ai didi

php - FPDI+TCPPDF导入PDF模板大小问题

转载 作者:可可西里 更新时间:2023-11-01 12:40:39 27 4
gpt4 key购买 nike

我陷入了一个非常复杂的境地。我正在开发用于贺卡的 PHP Web 应用程序。

为此,我使用了一些 Linux 工具以及 TCPDF 和 FPDI。让我告诉你这一切是如何运作的:

有 4 页贺卡模板 PDF 文件。这是自定义尺寸 5x7 英寸 300dpi PDF 文件。我也在 TCPDF 中添加了自定义大小

case 'STANDARD_CARD'       : {$pf = array(1500.00,2100.00);break;}

我所做的是,我使用:

pdftk templateX.pdf burst output  page_%2d.pdf 

分隔寺庙的每一页。

现在我使用:

$pdf = new FPDI($cardDetails['ORIENTATION'],"mm",$cardDetails['SIZE']);      


//set source file for
$pdf->setSourceFile($pdfFile);
$templateIndex = $pdf->importPage(1);
$pdf->AddPage($cardDetails['ORIENTATION'],$cardDetails['SIZE']);
$pdf->useTemplate($templateIndex,0,0);

其他的,比如写消息打印图片。最后使用以下方法保存文件:

$pdf->output("file_name.pdf","F");

原始 PDF 文件(仅第一页):(5x7 英寸) Original pdf file修改PDF及部分PDF操作:(29x20英寸) modified PDF

现在我得到的输出不是 5x7 pdf,而是一个 29 x 20 英寸的文件,这也破坏了我的计算和 PDF。

请告诉我我做错了什么......

最佳答案

嗨,拉维什,

我也遇到了这个问题。其实我的场景是这样的。我有一个合法尺寸 (8.5mm x 14mmmm) 的原始文件。当我像您一样使用 FPDI 输出显示它时,它只显示一个字母大小(8.5mm x 11mm)。所以结果是:裁剪 PDF 文件。

我进行了几次谷歌搜索,也从不同的帖子中找到了几个答案。这是我找到的最相关的解决方案。

首先是下面这段功能代码:useTemplate

$this->useTemplate($templateIndex, null, null, 0, 0, true);

通常,一些开发人员将最后一个参数设置为 TRUE。是的,如果你不设置宽度和长度是正确的。但是,我想强调的是,第 4 和第 5 个参数指定了导入 PDF 的宽度和长度。因此,如果您要采用或获取导入文档的实际大小,请将最后一个参数设置为 FALSE,因为这将表明它将采用您设置的实际或特定大小。

请看我做的这个示例代码:

$pdf = new FPDI();
$pdf -> setSourceFile('birform2316.pdf');
$tplIdx = $pdf -> importPage(1);
$size = $pdf->getTemplateSize($tplIdx);
$pdf -> AddPage();
$pdf ->useTemplate($tplIdx, null, null, $size['w'], 310, FALSE);
$pdf -> SetFont('Arial');
$pdf -> SetTextColor(0, 0, 0);
$pdf -> SetXY(18, 174);
$pdf -> Write(0, $employer_address);
$pdf -> Output('myOwn.pdf', 'D');

使用此代码,我生成了一个新的 PDF WITHOUT CROPPING 我设置的导入文件。也就是说,模板(原始文件)的所有细节都已显示。

另请注意,我在设置 PDF 大小时观察到了一些东西:

首先,我的文件的原始宽度为 215.6 毫米,长度为 350.9 毫米。现在,当我使用函数 getTemplateSizeuseTemplate 设置我的 PDF 大小时,例如:

$size = $pdf->getTemplateSize($tplIdx);
$pdf ->useTemplate($tplIdx, null, null, $size['w'], $size['h'],FALSE);

或者简单地说:

$pdf ->useTemplate($tplIdx, null, null, 215.6, 350.9,FALSE);

结果是,我的新 PDF 文件在底部被裁剪,我不知道为什么。

有了这个观察,我做了几次测试来找出原因。结果是,使用 FPDI 生成 PDF 文件时有长度限制。正如您在上面的代码中看到的,我没有使用文件的实际长度。我没有使用可以从 $size[h'] 派生的 350.9mm,而是因为它会给出裁剪文件。我只是传递了一个接近它的数值和实际宽度来产生所需的结果。

$pdf->useTemplate($tplIdx, null, null, $size['w'], 310, false);

顺便说一句,310 毫米(长度)是我用来生成未裁剪 的新 PDF 文件的最大数值。

我希望我已经为所有使用 FPDI 的开发人员提供了一些意见,这些开发人员遇到了 CROPPED PDF 结果的问题。

感谢所有...

列维·帕默

关于php - FPDI+TCPPDF导入PDF模板大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6674753/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com