PDFlib PHP 将图像并排放置

PDFlib PHP place images next to each other

我有多个图像来自一个数组(可能是 3 个,可能是 10 个),我想将它们并排放置,如果它们不再适合,请将它们放在新的一行中。

我已经写了一个 foreach 语句并且我让它工作了,所以如果它们不适合当前的行,它们会放在一个新行中,并且它们也会彼此相邻放置。

但我的问题是图像之间的间距,因为截至目前,每张图像都不同。有些之间的 space 很宽,而有些则重叠。

这是我写的函数:

function createAwardsTable(pdflib $p, int $textStartLeft, array $arrInput) {
    $awardImages = $arrInput['awards'];

    $boxHeight = 50;
    $x = $textStartLeft;
    $y = 275;

    foreach($awardImages as $awardImage) {
        $image = $p->load_image("auto", $awardImage, "");
        if ($image == 0) {
            echo("Couldn't load $image: " . $p->get_errmsg());
            exit(1);
        }

        $imagewidth = $p->info_image($image, "imagewidth", "");

        if ($x > (565 - 20)) {
            $y = 215;
            $x = $textStartLeft;
        }

        $buf =  "boxsize={" . $imagewidth . " " . $boxHeight . "} fitmethod=auto matchbox={name=awardimage}";
        // $buf = "scale=1 matchbox={name=awardimage}";
        $p->fit_image($image, $x, $y, $buf);

        $awardWidth = $p->info_matchbox("awardimage", 1, "x2");
        $x = ($x - 20) + $awardWidth;
    }
}

这是我在 pdf 中得到的结果的图片:

我认为到目前为止你的逻辑没问题。

    $awardWidth = $p->info_matchbox("awardimage", 1, "x2");
    $x = ($x - 20) + $awardWidth;

我认为 $x 的新计算不太正确。如果我对你的描述理解正确,那么你只是想输出下一张奖励图片,距离之前放置的图片 20 像素。如果是这种情况,那么使用火柴盒获取放置图像的位置,然后在其顶部添加 20 px 就足够了。

    $awardX2 = $p->info_matchbox("awardimage", 1, "x2");
    $x = $awardX2 + 20;

可能问题也出在$awardWidth的名字错误。 Info_matchbox() Returns 你的 X 位置而不是宽度。如果你想要宽度,那么你也应该得到x1位置,然后计算差异。 $width = $x2-$x1)