Skip to content

Campos de Formulário

O módulo Form (FormFieldManager, FormField) cria campos interativos AcroForm dentro do PDF. Os tipos de campo são definidos pelo enum FormFieldType: TEXT, PASSWORD, TEXTAREA, CHECKBOX, RADIO, LISTBOX, COMBOBOX, BUTTON. Todos os métodos retornam static, então cada chamada pode ser encadeada.

Referência Rápida

MétodoTipo de Campo
textField()Entrada de texto de linha única
checkboxField()Toggle checkbox
radioField()Botão de rádio (agrupado)
listboxField()Lista com scroll
comboboxField()Seletor dropdown
buttonField()Botão push com ação JavaScript opcional
flattenFields()Converter todos os campos interativos em conteúdo estático

Exemplo Básico

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setFont('Helvetica', '', 12)
    ->cell(0, 10, 'Registration Form', newLine: true)
    ->ln(5)

    // Campo de texto
    ->cell(30, 8, 'Name:')
    ->textField('name', 45, null, 80, 8, [
        'border'    => ['width' => 1],
        'maxLength' => 100,
    ])
    ->ln(12)

    // Campo de email
    ->cell(30, 8, 'Email:')
    ->textField('email', 45, null, 80, 8)
    ->ln(12)

    // Checkbox
    ->checkboxField('agree', 15, null, 5, 5)
    ->cell(0, 5, '  I agree to the terms', newLine: true)
    ->ln(10)

    // Dropdown
    ->cell(30, 8, 'Country:')
    ->comboboxField('country', 45, null, 60, 8, ['US', 'UK', 'TW', 'JP', 'DE'])
    ->ln(12)

    // Botão de envio
    ->buttonField('submit', 45, null, 40, 10, 'Submit', 'submitForm("https://example.com/submit")');

Campos de Texto e Checkbox

php
$pdf->textField(string $name, float $x, float $y, float $w, float $h, array $prop = []);
$pdf->checkboxField(string $name, float $x, float $y, float $w, float $h, bool $checked = false);

Passe null para $y para usar a posição vertical atual do cursor.

Campos de Botão de Rádio

php
$pdf->radioField(string $name, float $x, float $y, float $w, float $h, array $prop = []);

Botões de rádio com o mesmo $name formam um grupo mutuamente exclusivo:

php
$pdf->cell(30, 8, 'Gender:')
    ->radioField('gender', 45, null, 5, 5, ['value' => 'male'])
    ->cell(10, 5, ' M')
    ->radioField('gender', 65, null, 5, 5, ['value' => 'female'])
    ->cell(10, 5, ' F');

Campos de Lista, Caixa de Combinação e Botão

php
$pdf->listboxField(string $name, float $x, float $y, float $w, float $h, array $values, array $prop = []);
$pdf->comboboxField(string $name, float $x, float $y, float $w, float $h, array $values, array $prop = []);
$pdf->buttonField(string $name, float $x, float $y, float $w, float $h, string $caption, string $action = '');

listboxField() renderiza uma lista com múltiplas linhas e scroll. comboboxField() renderiza um dropdown de linha única. buttonField() cria um botão push com uma string de ação JavaScript opcional.

php
$pdf->buttonField('reset', 15, null, 40, 10, 'Reset', 'this.resetForm()')
    ->buttonField('print', 60, null, 40, 10, 'Print', 'this.print()');

Propriedades dos Campos

O array $prop controla a aparência e o comportamento dos campos:

ChaveTipoDescrição
borderarrayEstilo da borda com chaves width, color, style
bgcolorarrayCor de fundo como [r, g, b]
fontstringNome da família da fonte
fontSizefloatTamanho da fonte em pontos
alignmentstringAlinhamento de texto: left, center, right
maxLengthintContagem máxima de caracteres (campos de texto)
readonlyboolImpedir edição pelo usuário
requiredboolMarcar como obrigatório para validação de formulário
valuestringValor padrão / inicial

Achatamento de Formulários

O achatamento converte todos os campos interativos em conteúdo estático não editável. Isso é útil para arquivar formulários preenchidos ou produzir um PDF final somente leitura.

php
$pdf->flattenFields();  // Converter todos os campos de formulário em conteúdo estático

Após o achatamento, os valores dos campos tornam-se texto permanente. Os campos não podem mais ser editados em um visualizador PDF.

Distribuído sob a licença LGPL-3.0-or-later.