Попытка добавить 2 изображения на одну страницу в двухстраничном файле PDF В библиотеке FPDI на PHP - PullRequest
0 голосов
/ 27 марта 2020

Эй, у меня странная ошибка в моем коде. Я пытаюсь запустить массив объектов, а затем добавить изображения на страницу. в чем проблема? Он не добавляет 2 изображения на одну страницу, но добавляет изображение на той же странице, но делит его на 2 страницы. Я пробую свой код без al oop, и он работает, но когда я пробую его с l oop, это не удастся.

Мой класс для создания массива объектов.

<?php
use setasign\Fpdi\Fpdi;
use \setasign\Fpdi\PdfParser\StreamReader;
require_once('fpdf/fpdf.php');
require_once('fpdi/src/autoload.php');

class Point {
    public $x; // int
    public $y; // int

    function __construct($x, $y) {
        $this->x = $x;
        $this->y = $y;
    }   
}

class Rectangle {
    public $width;  // int
    public $height; // int

    function __construct($width, $height) {
        $this->width = $width;
        $this->height = $height;
    }
}

class Signature {
    public $id;       // int
    public $flowID;   // int
    public $fileID;   // int
    public $type;     // string
    public $page;     // int
    public $position; // Point
    public $size;     // Rectangle
}

$signature1 = new Signature();
$signature1->id = 5;
$signature1->flowID = 1;
$signature1->fileID = 1;
$signature1->type = 'partner';
$signature1->page = 1;
$signature1->position = new Point(50, 100);
$signature1->size = new Rectangle(20, 20);

$signature2 = new Signature();
$signature2->id = 3;
$signature2->flowID = 1;
$signature2->fileID = 1;
$signature2->type = 'identification';
$signature2->page = 1;
$signature2->position = new Point(50, 100);
$signature2->size = new Rectangle(20, 20);

$signatures = array($signature1, $signature2);

My l oop с FPDI:

$pdf = new Fpdi();
foreach ($signatures as $signa) {
$fileContent = file_get_contents('http://www.africau.edu/images/default/sample.pdf','rb');
$pdf->setSourceFile(StreamReader::createByString($fileContent));
$tplId = $pdf->importPage($signa->page);
$s = $pdf->getTemplatesize($tplId);
$pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L', array($s['w'], $s['h'])); // This gets it the right dimensions
$pdf->useTemplate($tplId, null, null, null, null, true);
$pdf->Image('signature.png', $signa->position->x, $signa->position->y, $signa->size->width, $signa->size->height);
}
$pdf->Output();   
...