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étodo | Tipo 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
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
$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
$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:
$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
$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.
$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:
| Chave | Tipo | Descrição |
|---|---|---|
border | array | Estilo da borda com chaves width, color, style |
bgcolor | array | Cor de fundo como [r, g, b] |
font | string | Nome da família da fonte |
fontSize | float | Tamanho da fonte em pontos |
alignment | string | Alinhamento de texto: left, center, right |
maxLength | int | Contagem máxima de caracteres (campos de texto) |
readonly | bool | Impedir edição pelo usuário |
required | bool | Marcar como obrigatório para validação de formulário |
value | string | Valor 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.
$pdf->flattenFields(); // Converter todos os campos de formulário em conteúdo estáticoApós o achatamento, os valores dos campos tornam-se texto permanente. Os campos não podem mais ser editados em um visualizador PDF.