Membuat PDF yang kompleks

Contents
[ ]

Contoh Hello, World menunjukkan langkah-langkah sederhana untuk membuat dokumen PDF menggunakan Aspose.PDF. Dalam artikel ini, kita akan melihat pembuatan dokumen yang lebih kompleks dengan Aspose.PDF untuk PHP via Java. Sebagai contoh, kita akan mengambil dokumen dari perusahaan fiktif yang mengoperasikan layanan feri penumpang.

Jika kita membuat dokumen dari awal, kita perlu mengikuti langkah-langkah tertentu:

  1. Memasang objek Document. Dalam langkah ini, kita akan membuat dokumen PDF kosong dengan beberapa metadata tetapi tanpa halaman.

  2. Tambahkan Page ke objek dokumen. Jadi, sekarang dokumen kita akan memiliki satu halaman.

  3. Tambahkan Image. Ini adalah operasi kompleks berdasarkan tindakan tingkat rendah dengan operator PDF.

    • Muat gambar dari stream
    • Tambahkan gambar ke koleksi Images dari Page Resources
    • Menggunakan operator GSave: operator ini menyimpan status grafik saat ini.
    • Buat objek Matrix.
    • Menggunakan operator ConcatenateMatrix: mendefinisikan bagaimana gambar harus ditempatkan.
    • Menggunakan operator Do: operator ini menggambar gambar.
    • Menggunakan operator GRestore: operator ini mengembalikan status grafik.
  4. Buat TextFragment untuk header. Untuk header kita akan menggunakan font Arial dengan ukuran font 24pt dan perataan tengah.

  5. Tambahkan header ke halaman Paragraf.

  6. Buat TextFragment untuk deskripsi. Untuk deskripsi, kita akan menggunakan font Arial dengan ukuran font 24pt dan perataan tengah.

  7. Tambahkan (deskripsi) ke Paragraf halaman.

  8. Buat tabel, tambahkan properti tabel.

  9. Tambahkan (tabel) ke Paragraf halaman.

  10. Simpan dokumen “Complex.pdf”.


    $document = new Document();
    //Tambahkan halaman
    $page = $document->getPages()->add();
    // -------------------------------------------------------------
    // Tambahkan gambar
    $imageFileName = $dataDir . DIRECTORY_SEPARATOR . 'logo.png';
    $page->AddImage($imageFileName, new Rectangle(20, 730, 120, 830));

    // -------------------------------------------------------------
    // Tambahkan Header
    $fontRepository = new FontRepository();
    $fontArial = $fontRepository->findFont("Arial");

    $header = new TextFragment("Rute feri baru di Musim Gugur 2020");
    $header->getTextState()->setFont($fontArial);
    $header->getTextState()->setFontSize(24);
    $header->setHorizontalAlignment(2);
    $header->setPosition(new Position(130, 720));
    $page->getParagraphs()->add($header);

    // Tambahkan deskripsi
    $descriptionText = "Pengunjung harus membeli tiket secara online dan tiket dibatasi hingga 5.000 per hari. Layanan feri beroperasi dengan kapasitas setengah dan pada jadwal yang dikurangi. Harap antisipasi antrian.";
    $description = new TextFragment($descriptionText);
    $description->getTextState()->setFont($fontRepository->findFont("Times New Roman"));
    $description->getTextState()->setFontSize(14);
    $header->setHorizontalAlignment(1);
    $page->getParagraphs()->add($description);

    // Tambahkan tabel
    $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("Berangkat dari Kota");
    $headerRowCell->setBackgroundColor($grayColor);
    $headerRowCell->getDefaultCellTextState()->setForegroundColor($whiteSmokeColor);

    $headerRowCell = $headerRow->getCells()->add("Berangkat dari Pulau");
    $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);