Utilisation de l’API DocAssurance
Le service DocAssurance permet d’effectuer diverses opérations de signature ou de chiffrement numériques avec des documents PDF, tels que la signature, la certification, l’ajout de champs de signature, le chiffrement, le décryptage, etc.
Cet article vous fournit des fragments de code Java pour vous aider à commencer à utiliser l’API. Le fragment de code utilise le jeton d’accès. Cet article explique les étapes nécessaires pour générer le jeton d’accès
Cette fonctionnalité est disponible dans le cadre du programme d’adoption précoce. Vous pouvez écrire à aem-forms-ea@adobe.com à partir de votre ID de courrier électronique officiel pour rejoindre le programme d’adoption précoce et demander l’accès à cette fonctionnalité
Conditions préalables
- Expérience avec AEM Forms Cloud Service
- Expérience dans l’utilisation des composants HTTP Apache
- Accès à l’environnement du Cloud Service AEM Forms
Document Inspect
Utilisez l’API d’inspection pour récupérer le type de sécurité sur un document de PDF donné. Le fragment de code suivant devrait vous aider à démarrer.
...
File fileToInspect = new File("path_to_your_pdf_file)";
HttpPost httpPost = new HttpPost("<your_aem_forms_instance>/adobe/forms/document/assure/inspect");
httpPost.addHeader("Authorization", "Bearer " + accessToken);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
byte[] fileContent = FileUtils.readFileToByteArray(fileToInspect);
builder.addBinaryBody("document", fileContent, ContentType.create("application/pdf"), "BenefitOverview.pdf");
try
{
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
CloseableHttpClient httpclient = HttpClients.createDefault();
CloseableHttpResponse response = httpclient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200)
{
String json = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
log.info("The mode of encryption is " + JsonParser.parseString(json).getAsJsonObject().get("mode").getAsString());
}
}
catch (Exception e)
{
log.error(e.getMessage());
}
...
Chiffrer le document
Utilisez l’API Encrypt pour chiffrer les documents pdf avec un mot de passe. L’exemple de fragment de code suivant chiffre un PDF donné.
...
File fileToEncrypt = new File("path_to_your_pdf_file");
HttpPost httpPost = new HttpPost(postURL);
httpPost.addHeader("Authorization", "Bearer " + accessToken ");
MultipartEntityBuilder builder = MultipartEntityBuilder.create(); byte[] fileContent = FileUtils.readFileToByteArray(fileToEncrypt); builder.addBinaryBody("document", fileContent, ContentType.create("application/pdf"), "BenefitOverview.pdf");
String config = "{\"mode\":\"ENCRYPT_WITH_PASSWORD\",\"params\":{\"openPassword\":\"adobe\",\"permPassword\":\"systems\",\"permissions\":[\"ALL_PERM\"]}}";
builder.addTextBody("config", config, ContentType.APPLICATION_JSON);
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 encryptedFile = new File("c:\\aem_forms_cs_api\\encrypted.pdf");
FileOutputStream outputStream = new FileOutputStream(encryptedFile);
outputStream.write(bytes);
outputStream.close();
}
}
catch (Exception e)
{
log.error(e.getMessage());
}
...
Ajout d’un champ de signature au format pdf
Utilisez l’API Signfield pour ajouter une signature au PDF fourni. L’exemple de fragment de code suivant ajoute un champ de signature appelé SignHere à la page 4 du document.
...
File pdfFile = new File(pdfFile1.getPath());
HttpPost httpPost = new HttpPost(postURL);
httpPost.addHeader("Authorization", "Bearer "+accessToken);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
byte[] fileContent = FileUtils.readFileToByteArray(pdfFile);
builder.addBinaryBody("document", fileContent, ContentType.create("application/pdf"), "BenefitOverview.pdf");
builder.addTextBody("field", "SignHere", ContentType.TEXT_PLAIN);
String rectangle = "{\"lowerLeftX\":1,\"lowerLeftY\":40,\"width\":100,\"height\":100}";
builder.addTextBody("rectangle", rectangle, ContentType.APPLICATION_JSON);
Supprimer le chiffrement
Utilisez l’opération PUT sur l’API de chiffrement pour supprimer le chiffrement du PDF fourni. Le fragment de code Java suivant devrait vous aider à démarrer.
...
File fileToDecrypt = new File("path_to_your_pdf_file");
HttpPut httpPut = new HttpPut(putURL);
httpPut.addHeader("Authorization", "Bearer " + accessToken);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
byte[] fileContent = FileUtils.readFileToByteArray(fileToDecrypt);
builder.addBinaryBody("document", fileContent, ContentType.create("application/pdf"), "BenefitOverview.pdf");
builder.addTextBody("config", "systems", ContentType.TEXT_PLAIN);
try {
HttpEntity entity = builder.build();
httpPut.setEntity(entity);
CloseableHttpClient httpclient = HttpClients.createDefault();
CloseableHttpResponse response = httpclient.execute(httpPut);
if (response.getStatusLine().getStatusCode() == 200) {
InputStream generatedPDF = response.getEntity().getContent();
byte[] bytes = IOUtils.toByteArray(generatedPDF);
File encryptionRemoved = new File("c:\\aem_forms_cs_api\\encryption_removed.pdf");
FileOutputStream outputStream = new FileOutputStream(encryptionRemoved);
outputStream.write(bytes);
outputStream.close();
httpclient.close();
}
} catch (Exception e) {
log.error(e.getMessage());
}
...
Collection Postman
Une collection Postman de l'API peut être téléchargée ici à des fins de test. Vous pouvez utiliser le type d’authentification Authentification de base ou Jeton porteur pour appeler l’API.