Skip to content

Digital Signature ​

Laravel WordTemplate mendukung penambahan tanda tangan berupa gambar maupun digital signature.
Fitur ini cocok untuk dokumen resmi seperti kontrak, invoice, atau sertifikat.

1️⃣ Signature dengan Gambar ​

php
use Novay\Word\Facades\Word;

Word::builder()
    ->addTitle('Surat Perjanjian', 1)
    ->addText('Isi perjanjian antara pihak A dan pihak B...')
    ->addTextBreak(2)
    ->addText('Hormat kami,')
    ->addImage(public_path('signatures/director.png'), [
        'width' => 120,
        'alignment' => 'left',
    ])
    ->addText('Direktur Utama', ['bold' => true])
    ->download('signature-image.docx');

👉 Tanda tangan berupa gambar (director.png) akan muncul di bawah teks.

2️⃣ Multiple Signatures ​

php
Word::builder()
    ->addTitle('Kontrak Kerjasama', 1)
    ->addText('Isi kontrak...')
    ->addTextBreak(2)

    ->addTable([
        [
            ['text' => 'Pihak Pertama', 'alignment' => 'center'],
            ['text' => 'Pihak Kedua', 'alignment' => 'center'],
        ],
        [
            ['image' => public_path('signatures/person1.png'), 'width' => 100, 'alignment' => 'center'],
            ['image' => public_path('signatures/person2.png'), 'width' => 100, 'alignment' => 'center'],
        ],
        [
            ['text' => 'Andi Wijaya', 'alignment' => 'center'],
            ['text' => 'Budi Santoso', 'alignment' => 'center'],
        ],
    ])
    ->download('signature-multiple.docx');

👉 Dua tanda tangan ditampilkan berdampingan dalam tabel.

3️⃣ Digital Signature (Simple) ​

Untuk digital signature, Anda bisa menyematkan informasi tanda tangan (nama, jabatan, waktu). Catatan: ini bukan tanda tangan X.509, tetapi metadata sederhana dalam dokumen.

php
Word::builder()
    ->addTitle('Surat Keputusan', 1)
    ->addText('Isi surat...')
    ->addDigitalSignature([
        'name' => 'Siti Aminah',
        'role' => 'Kepala Departemen',
        'signed_at' => now()->toDateTimeString(),
    ])
    ->download('signature-digital.docx');

👉 Metadata tanda tangan akan ditambahkan ke dalam dokumen.

4️⃣ Digital Signature dengan X.509 (Advanced) ​

Jika Anda memiliki sertifikat digital (misalnya .pfx atau .pem), Anda bisa menggunakannya untuk menandatangani file DOCX/PDF agar lebih resmi.

php
Word::builder()
    ->addTitle('Kontrak Resmi', 1)
    ->addText('Isi kontrak dengan tanda tangan digital...')
    ->signWithCertificate(storage_path('certs/mycert.pfx'), 'password-ku')
    ->save(storage_path('app/contracts/official.docx'));

👉 Dokumen akan diproteksi dengan tanda tangan digital X.509.

5️⃣ Signature di Template ​

php
Word::template('templates/contract.docx')
    ->replace([
        'party_a' => 'Andi Wijaya',
        'party_b' => 'Budi Santoso',
    ])
    ->addImage(public_path('signatures/person1.png'), ['width' => 120])
    ->addImage(public_path('signatures/person2.png'), ['width' => 120])
    ->download('contract-signed.docx');

📌 Tips ​

  • addImage() → untuk tanda tangan manual berupa gambar.
  • addDigitalSignature() → metadata tanda tangan sederhana.
  • signWithCertificate() → untuk tanda tangan digital resmi berbasis X.509.
  • Gunakan tabel untuk membuat layout tanda tangan lebih rapi.