Extrair dados do AcroForm usando Java
Extrair campos de formulário de um documento PDF
Use com.aspose.pdf.facades.Form para ler nomes de campos e valores sem percorrer todo o modelo de objeto do documento.
- Abra o formulário PDF de origem com a fachada Form para que os campos AcroForm possam ser lidos sem percorrer todo o modelo de objeto do documento.
- Chame
getFieldNames()para coletar todos os identificadores de campo presentes no formulário. - Itere pelos nomes desses campos e chame
getField(fieldName)para ler o valor de cada campo. - Construa a string de saída a partir dos pares chave-valor extraídos e imprima os dados de formulário agregados.
- Feche a fachada Form na
finallybloco.
public static void extractFormFields(Path inputFile) {
Form form = new Form(inputFile.toString());
try {
StringBuilder formValues = new StringBuilder("{");
String[] fieldNames = form.getFieldNames();
for (int i = 0; i < fieldNames.length; i++) {
if (i > 0) {
formValues.append(", ");
}
formValues.append(fieldNames[i]).append("=").append(form.getField(fieldNames[i]));
}
formValues.append("}");
System.out.println(formValues);
} finally {
form.close();
}
}
Recuperar valor do campo de formulário por nome
Quando você conhece o nome exato do campo definido no formulário PDF, pode recuperar seu valor diretamente com getField(fieldName)
sem percorrer toda a coleção de campos.
- Abra o formulário PDF de origem com a fachada Form.
- Chame
getField(fieldName)com o nome do campo solicitado para ler seu valor atual dos dados do AcroForm. - Imprima o valor do campo extraído.
- Feche a fachada Form na
finallybloco.
public static void extractFormFieldByTitle(Path inputFile, String fieldName) {
Form form = new Form(inputFile.toString());
try {
String formValue = form.getField(fieldName);
System.out.println(formValue);
} finally {
form.close();
}
}
Extrair campos de formulário de documento PDF para JSON
Os valores dos campos de formulário também podem ser extraídos e armazenados como JSON. Isso é útil quando os dados do formulário PDF precisam ser consumidos por aplicações web, APIs ou outros sistemas que trabalham com JSON.
- Abra o formulário PDF de origem com a fachada Form.
- Chame
getFieldNames()para coletar todos os identificadores de campo disponíveis do AcroForm. - Itere pelos campos, escape os nomes e valores e construa uma string de objeto JSON.
- Escreva o resultado JSON no arquivo de saída.
- Feche a fachada Form na
finallybloco.
public static void extractFormFieldsJson(Path inputFile, Path outputFile) throws Exception {
Form form = new Form(inputFile.toString());
try {
StringBuilder json = new StringBuilder();
json.append("{\n");
String[] fieldNames = form.getFieldNames();
for (int i = 0; i < fieldNames.length; i++) {
String fieldName = fieldNames[i];
json.append(" \"").append(escapeJson(fieldName)).append("\": \"")
.append(escapeJson(form.getField(fieldName))).append("\"");
if (i < fieldNames.length - 1) {
json.append(",");
}
json.append("\n");
}
json.append("}\n");
Files.writeString(outputFile, json.toString());
} finally {
form.close();
}
}
Exportar dados de formulário para XML de um arquivo PDF
A exportação XML é útil quando os dados de formulário PDF precisam ser consumidos por sistemas que trabalham com dados XML estruturados.
- Crie a fachada Form sem vincular um documento ainda.
- Abra um fluxo de saída para o arquivo XML e vincule o PDF de origem à fachada com
bindPdf(...). - Chame
exportXml(stream); assim, os dados atuais do campo de formulário são serializados como XML. - Feche a fachada Form após a exportação ser concluída.
public static void extractDataToXml(Path inputFile, Path outputFile) throws Exception {
Form form = new Form();
try (OutputStream stream = Files.newOutputStream(outputFile)) {
form.bindPdf(inputFile.toString());
form.exportXml(stream);
} finally {
form.close();
}
}
Exportar dados para FDF a partir de um arquivo PDF
FDF (Forms Data Format) é comumente usado para trocar dados de campos AcroForm independentemente do documento PDF.
- Crie a fachada Form sem vincular um documento ainda.
- Abra um fluxo de saída para o arquivo FDF e vincule o PDF de origem à fachada com
bindPdf(...). - Chame
exportFdf(stream); assim, os dados do campo de formulário são serializados no formato FDF. - Feche a fachada Form após a exportação ser concluída.
public static void extractDataToFdf(Path inputFile, Path outputFile) throws Exception {
Form form = new Form();
try (OutputStream stream = Files.newOutputStream(outputFile)) {
form.bindPdf(inputFile.toString());
form.exportFdf(stream);
} finally {
form.close();
}
}
Exportar dados para XFDF a partir de um arquivo PDF
XFDF é a representação baseada em XML do Forms Data Format e é conveniente para a troca de dados de formulário com sistemas que trabalham com XML.
- Crie a fachada Form sem vincular um documento ainda.
- Abra um fluxo de saída para o arquivo XFDF e vincule o PDF de origem à fachada com
bindPdf(...). - Chame
exportXfdf(stream); assim, os dados do campo de formulário são serializados no formato XFDF. - Feche a fachada Form após a exportação ser concluída.
public static void extractDataToXfdf(Path inputFile, Path outputFile) throws Exception {
Form form = new Form();
try (OutputStream stream = Files.newOutputStream(outputFile)) {
form.bindPdf(inputFile.toString());
form.exportXfdf(stream);
} finally {
form.close();
}
}