Création d'un PDF complexe
L’exemple Hello, World a montré des étapes simples pour créer un document PDF en utilisant Aspose.PDF. Dans cet article, nous allons examiner la création d’un document plus complexe avec Aspose.PDF pour PHP via Java. À titre d’exemple, nous prendrons un document d’une entreprise fictive qui exploite des services de ferry pour passagers.
Si nous créons un document à partir de zéro, nous devons suivre certaines étapes :
- 
Instancier un objet Document. Dans cette étape, nous allons créer un document PDF vide avec quelques métadonnées mais sans pages. 
- 
Ajoutez une Page à l’objet document. Ainsi, notre document aura désormais une page. 
- 
Ajoutez une Image. C’est une opération complexe basée sur des actions de bas niveau avec des opérateurs PDF. - Charger l’image depuis le flux
- Ajouter l’image à la collection d’Images des Ressources de Page
- Utiliser l’opérateur GSave : cet opérateur enregistre l’état graphique actuel.
- Créer un objet Matrix.
- Utiliser l’opérateur ConcatenateMatrix : définit comment l’image doit être placée.
- Utiliser l’opérateur Do : cet opérateur dessine l’image.
- Utiliser l’opérateur GRestore : cet opérateur restaure l’état graphique.
 
- 
Créez un TextFragment pour l’en-tête. Pour l’en-tête, nous utiliserons la police Arial avec une taille de police de 24pt et un alignement centré. 
- 
Ajouter un en-tête à la page Paragraphes. 
- 
Créer un TextFragment pour la description. Pour la description, nous utiliserons la police Arial avec une taille de police de 24pt et un alignement centré. 
- 
Ajouter (description) aux paragraphes de la page. 
- 
Créer un tableau, ajouter des propriétés de tableau. 
- 
Ajouter (table) aux Paragraphes. 
- 
Enregistrer un document “Complex.pdf”. 
    $document = new Document();
    //Ajouter une page
    $page = $document->getPages()->add();
    // -------------------------------------------------------------
    // Ajouter une image
    $imageFileName = $dataDir . DIRECTORY_SEPARATOR . 'logo.png';
    $page->AddImage($imageFileName, new Rectangle(20, 730, 120, 830));
    // -------------------------------------------------------------
    // Ajouter un en-tête
    $fontRepository = new FontRepository();
    $fontArial = $fontRepository->findFont("Arial");
    $header = new TextFragment("Nouvelles routes de ferry à l'automne 2020");
    $header->getTextState()->setFont($fontArial);
    $header->getTextState()->setFontSize(24);
    $header->setHorizontalAlignment(2);
    $header->setPosition(new Position(130, 720));
    $page->getParagraphs()->add($header);
    // Ajouter une description
    $descriptionText = "Les visiteurs doivent acheter des billets en ligne et les billets sont limités à 5 000 par jour. Le service de ferry fonctionne à demi-capacité et selon un horaire réduit. Attendez-vous à des files d'attente.";
    $description = new TextFragment($descriptionText);
    $description->getTextState()->setFont($fontRepository->findFont("Times New Roman"));
    $description->getTextState()->setFontSize(14);
    $header->setHorizontalAlignment(1);
    $page->getParagraphs()->add($description);
    // Ajouter un tableau
    $table = new Table();
    $table->setColumnWidths("200");
    $colors = new Color();
    $darkSlateGrayColor = $colors->getDarkSlateGray();
    $blackColor = $colors->getBlack();
    $grayColor = $colors->getGray();
    $whiteSmokeColor = $colors->getWhiteSmoke();
    $table->setBorder(new BorderInfo(BorderSide::$Box, 1.0, $darkSlateGrayColor));
    $table->setDefaultCellBorder(new BorderInfo(BorderSide::$Box, 0.5, $blackColor));
    $table->getMargin()->setBottom(10);
    $table->getDefaultCellTextState()->setFont($fontRepository->findFont("Helvetica"));
    $headerRow = $table->getRows()->add();
    $headerRowCell = $headerRow->getCells()->add("Départs Ville");
    $headerRowCell->setBackgroundColor($grayColor);
    $headerRowCell->getDefaultCellTextState()->setForegroundColor($whiteSmokeColor);
    $headerRowCell = $headerRow->getCells()->add("Départs Île");
    $headerRowCell->setBackgroundColor($grayColor);
    $headerRowCell->getDefaultCellTextState()->setForegroundColor($whiteSmokeColor);
    $timenow = new DateTime('06:00');
    for ($i = 0; $i < 10; $i++) {
        $dataRow = $table->getRows()->add();
        $cell = $dataRow->getCells()->add($timenow->format('H:i'));
        $timenow->add(new DateInterval('PT30M'));
        $dataRow->getCells()->add($timenow->format('H:i'));
    }
    $page->getParagraphs()->add($table);
    $document->save($outputFile);