PDF/A는 전자 문서의 보관 및 장기 보존에 사용하도록 전문화된 휴대용 문서 형식(PDF)의 ISO 표준 버전입니다. PDF/A는 글꼴 연결(PDF 포함과 반대) 및 암호화와 같이 장기간 보관에 적합하지 않은 기능을 금지하여 글꼴과 다릅니다.
다음 코드는 PDF을 PDF/A로 변환하는 데 사용되었습니다
package com.aemformscs.documentservices;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class PDFAUtilities {
public String SAVE_LOCATION = "c:\\pdfa";
public void toPDFA(String postURL) {
HttpPost httpPost = new HttpPost(postURL);
CredentialUtilites cu = new CredentialUtilites();
String accessToken = cu.getAccessToken();
httpPost.addHeader("Authorization", "Bearer " + accessToken);
ClassLoader classLoader = DocumentGeneration.class.getClassLoader();
URL fileToConvert = classLoader.getResource("pdffiles/Address.pdf");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
File pdfToConvert = new File(fileToConvert.getPath());
builder.addBinaryBody("inDoc", pdfToConvert, ContentType.create("application/pdf"), pdfToConvert.getName());
try {
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
CloseableHttpClient httpclient = HttpClients.createDefault();
CloseableHttpResponse response = httpclient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
InputStream generatedPDF = response.getEntity().getContent();
byte[] bytes = IOUtils.toByteArray(generatedPDF);
File saveLocation = new File(SAVE_LOCATION);
if (!saveLocation.exists()) {
saveLocation.mkdirs();
}
File outputFile = new File(SAVE_LOCATION + File.separator + "pdfa.pdf");
FileOutputStream outputStream = new FileOutputStream(outputFile);
outputStream.write(bytes);
outputStream.close();
System.out.println("PDF was converted to PDFA and saved to " + SAVE_LOCATION);
} else {
String json_string = EntityUtils.toString(response.getEntity());
JsonObject responseJson = JsonParser.parseString(json_string).getAsJsonObject();
System.out.println("Could not convert to PDF/A - " + responseJson.get("message").getAsString());
}
} catch (Exception e) {
System.out.println("The message is " + e.getMessage());
}
}
}
다음 코드는 주어진 PDF/A 준수 PDF의 유효성을 검사하는 데 사용됩니다.
public void validatePDFA(String postURL) {
HttpPost httpPost = new HttpPost(postURL);
CredentialUtilites cu = new CredentialUtilites();
String accessToken = cu.getAccessToken();
httpPost.addHeader("Authorization", "Bearer " + accessToken);
ClassLoader classLoader = DocumentGeneration.class.getClassLoader();
URL fileToValidate = classLoader.getResource("pdffiles/pdfa.pdf");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addBinaryBody("options", GetOptions.getPDFAOptions().getBytes(), ContentType.APPLICATION_JSON, "options");
File pdfToValidate = new File(fileToValidate.getPath());
builder.addBinaryBody("inDoc", pdfToValidate, ContentType.create("application/pdf"), pdfToValidate.getName());
try {
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
CloseableHttpClient httpclient = HttpClients.createDefault();
CloseableHttpResponse response = httpclient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
String json_string = EntityUtils.toString(response.getEntity());
JsonObject responseJson = JsonParser.parseString(json_string).getAsJsonObject();
System.out.println("Th document is - " + responseJson.toString());
} else {
System.out.println(response.getStatusLine().getStatusCode());
}
} catch (Exception e) {
System.out.println("The message is " + e.getMessage());
}
}