【问题标题】:Inserting an image with PHP and FPDF使用 PHP 和 FPDF 插入图像
【发布时间】:2010-08-12 19:46:22
【问题描述】:

我正在尝试插入图像,但不想指定 x 和 y 坐标。这可能吗?

$pdf->Image($image1, 5, 70, 33.78);

我希望能够指定大小 (33.78) 而不是 x 和 y,以便它根据内容移动。

$pdf->Write( 70, $reportTitle );
$pdf->Ln( 45 );
$pdf->SetFont( 'Arial', '', 12 );
$pdf->Write( 6, $reportSubtitle );

/**
  Create product 1
**/
$pdf->Ln( 10 );
$pdf->SetFont( 'Arial', '', 12 );
$pdf->Write( 6, $prod1title );
$pdf->Ln( 30 );
$pdf->SetFont( 'Arial', '', 10 );
$pdf->Write( 5, $prod1sub );
$pdf->Ln( 30 );
$pdf->Image($image1, 5, 70, 33.78);

以上是我使用的代码。如果 $reportSubtitle 是两三行,它会将 $prod1title 和 $$prod1sub 向下推,并且不可避免地在固定的图像下。有没有办法让图像像产品标题和副标题一样被下推,同时仍然声明尺寸?

【问题讨论】:

    标签: php fpdf


    【解决方案1】:

    我想通了,实际上很简单。

    设置你的变量:

    $image1 = "img/products/image1.jpg";
    

    然后创建一个单元格,定位它,然后使用您在上面创建的变量而不是设置图像的位置:

    $this->Cell( 40, 40, $pdf->Image($image1, $pdf->GetX(), $pdf->GetY(), 33.78), 0, 0, 'L', false );
    

    现在,如果周围的其他单元格移动,该单元格将随内容上下移动。

    希望这对同一条船上的其他人有所帮助。

    【讨论】:

    • 这不会像你想象的那样工作。单元格位置不会从图像继承 XY。您需要设置 XY 来定位 Cell。尝试显示填充,你会明白我的意思。图像和单元格位于两个不同的位置。
    • 这段代码没有意义。 Image() 不返回任何内容,因此在其上调用 Cell() 是无效的。请参阅 Mchl 的答案,了解正确的做法。
    【解决方案2】:

    您可以使用$pdf->GetX()$pdf->GetY() 获取当前坐标并使用它们插入图像。

    $pdf->Image($image1, 5, $pdf->GetY(), 33.78);

    甚至

    $pdf->Image($image1, 5, null, 33.78);

    (虽然在第一种情况下,您可以添加一个数字来创建一点空间)

    $pdf->Image($image1, 5, $pdf->GetY() + 5, 33.78);

    【讨论】:

      【解决方案3】:
      $image="img_name.jpg";
      $pdf =new FPDF();
      $pdf-> AddPage();
      $pdf-> SetFont("Arial","B",10);
      $pdf-> Image('profileimage/'.$image,100,15,35,35);
      

      【讨论】:

      • 欢迎来到 StackOverflow!虽然答案总是很受欢迎,但这个问题是 6 年前提出的,并且已经有了一个公认的解决方案。请尝试通过提供答案来避免将问题“推到顶部”,除非该问题尚未标记为已解决,或者您找到了解决该问题的更好的替代方法。还要确保提供上下文以充分解释您的代码如何解决手头的问题:)
      • 它在 FPDF 1.6 上运行良好
      【解决方案4】:

      请注意,您在测试时不应使用任何 png,首先使用 jpg。

      $myImage = "images/logos/mylogo.jpg";  // this is where you get your Image
      
      $pdf->Image($myImage, 5, $pdf->GetY(), 33.78);
      

      【讨论】:

        【解决方案5】:

        您不能将 PDF 视为 HTML 文档。图像不能在文档中“浮动”并让事物在它们周围流动,或者与周围的文本一起流动。 FPDF 允许您将 html 嵌入文本块中,但这只是因为它解析标签并用 Postscript 等效命令替换 <i><b> 等。动态放置图片不够智能。

        换句话说,您必须指定坐标(如果不指定,则无论如何都会使用当前位置的坐标)。

        【讨论】:

        • 您最多可以尝试计算文本大小(可能使用GetStringWidth() 并查看是否需要调整图像的坐标。但同样,您不能在不提供的情况下将图像插入PDF坐标。没有说不能根据其他内容调整坐标,但不能盲目插入。
        猜你喜欢
        • 2013-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-21
        • 1970-01-01
        • 1970-01-01
        • 2022-12-13
        • 2014-09-26
        相关资源
        最近更新 更多