Java를 사용하여 AcroForm에서 데이터 추출
Contents
[
Hide
]
모든 양식 필드 추출
전체 문서 개체 모델을 통해 작업하지 않고 필드 이름과 값을 읽으려면 com.aspose.pdf.facades.Form을 사용하세요.
- 전체 문서 개체 모델을 순회하지 않고도 AcroForm 필드를 읽을 수 있도록
Form파사드로 소스 PDF 양식을 여세요. - 양식에 있는 모든 필드 식별자를 수집하려면
getFieldNames()를 호출하세요. - 해당 필드 이름을 반복하고
getField(fieldName)를 호출하여 각 필드 값을 읽으세요. - 추출된 키-값 쌍에서 출력 문자열을 작성하고 집계된 양식 데이터를 인쇄하세요.
finally블록에서Form파사드를 닫으세요.
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();
}
}
이름으로 필드 값 검색
Form파사드를 사용하여 소스 PDF 양식을 여세요.- AcroForm 데이터에서 현재 값을 읽으려면 요청된 필드 이름으로
getField(fieldName)를 호출하세요. - 추출된 필드 값을 인쇄하세요.
finally블록에서Form파사드를 닫으세요.
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();
}
}
양식 필드를 JSON으로 내보내기
Form파사드를 사용하여 소스 PDF 양식을 여세요.- AcroForm에서 사용 가능한 모든 필드 식별자를 수집하려면
getFieldNames()를 호출하세요. - 해당 필드를 반복하고, 이름과 값을 이스케이프하고, JSON 개체 문자열을 빌드하세요.
- JSON 결과를 출력 파일에 쓰세요.
finally블록에서Form파사드를 닫으세요.
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();
}
}
양식 데이터를 XML, FDF 및 XFDF로 내보내기
- 아직 문서를 바인딩하지 않고
FormFacade를 만드세요. - XML 파일의 출력 스트림을 열고
bindPdf(...)를 사용하여 소스 PDF를 Facade에 바인딩하세요. exportXml(stream)를 호출하세요. 현재 양식 필드 데이터가 XML로 직렬화됩니다.- 내보내기가 완료된 후
FormFacade를 닫으세요.
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();
}
}
- 아직 문서를 바인딩하지 않고
FormFacade를 만드세요. - FDF 파일의 출력 스트림을 열고
bindPdf(...)를 사용하여 소스 PDF를 Facade에 바인딩하세요. exportFdf(stream)를 호출하세요. 양식 필드 데이터가 FDF 형식으로 직렬화됩니다.- 내보내기가 완료된 후
FormFacade를 닫으세요.
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();
}
}
- 아직 문서를 바인딩하지 않고
FormFacade를 만드세요. - XFDF 파일의 출력 스트림을 열고
bindPdf(...)를 사용하여 소스 PDF를 Facade에 바인딩하세요. exportXfdf(stream)를 호출하세요. 양식 필드 데이터가 XFDF 형식으로 직렬화됩니다.- 내보내기가 완료된 후
FormFacade를 닫으세요.
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();
}
}