AEM Forms Document Security Java SDK には、別のユーザーの代わりにユーザーアカウントを使用してドキュメントを保護する API セットが用意されています。ドキュメントの編集権限を取得する必要はありません。これらの API は、ワークフロープロセスで使用することも、プログラム内でドキュメントサービスとして使用することもできます。新しく導入された API は以下のとおりです。
protectDocumentUse protectDocument API では、別のユーザーアカウントを使用する代わりに、ポリシーをドキュメントに適用することができます。
別のユーザーアカウント。ポリシーを適用するためのユーザーアカウントの権限は、ドキュメントの保護に制限されたままになります。ドキュメントを開いて表示するための権限が付与されることはありません。RMSecureDocumentResult protectDocument(Document inDoc, String documentName, String policySetName, String policyName, RMLocale locale, boolean bExactMatchForNames)
createLicenseUse createLicense API では、別のユーザーアカウントを使用する代わりに、ポリシーのライセンスを作成することができます。PublishLicenseDTO createLicense(String policyId, String documentName, boolean logSecureDocEvent)
protectDocumentWithCoverPageUse protectDocumentWithCoverPage API では、別のユーザーの代わりにポリシーを適用して、ドキュメントにカバーページを追加することができます。ポリシーを適用するためのユーザーアカウントの権限は、ドキュメントの保護に制限されたままになります。ドキュメントを開いて表示するための権限が付与されることはありません。RMSecureDocumentResult protectDocumentWithCoverPage(Document inDoc, String documentName, String policySetName, String policyName, Document coverDoc, boolean bExactMatchForNames)
次の手順を実行して、別のユーザーの代わりにドキュメントを保護します。ドキュメントの編集権限を取得する必要はありません。
ポリシーセットを作成します。例えば、PolicySet1 を作成します。
新規作成されたポリシーセットにポリシーを作成します。例えば、PolicySet1 に Policy1 を作成します。
Rights Managemen エンドユーザーの役割を持つユーザーを作成します。例えば、User1 を作成します。Policy1 を使用して、新しく作成されたユーザーに保護されたドキュメントを表示する権限を付与します。
新しい役割を作成します。例えば、Role1 を作成します。新しく作成された役割にサービスを起動する権限を付与します。新しく作成された役割でユーザーを作成します。例えば、User2 を作成します。User2 または管理者権限を使用して SDK 接続を作成し、protectDocument サービスを起動できます。
これで、ドキュメントを保護するための次のサンプルコードを実行できるようになりました。ドキュメントを編集する権限をユーザーに提供することなく、ドキュメントを保護することができます。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import com.adobe.edc.common.dto.PublishLicenseDTO;
import com.adobe.edc.sdk.SDKException;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
import com.adobe.livecycle.rightsmanagement.RMSecureDocumentResult;
import com.adobe.livecycle.rightsmanagement.client.DocumentManager;
import com.adobe.livecycle.rightsmanagement.client.RightsManagementClient;
import com.adobe.livecycle.rightsmanagement.client.RightsManagementClient2;
public class PublishAsProtectAPI {
private static final String unprotectedFileName = "C:\\unprotected.pdf";
private static final String protectedFileName = "C:\\protect.pdf";
private static final String coverFileName = "C:\\CoverPage.pdf";
private static final String POLICY_ID = "2EF66008-5E2D-1034-9B06-00000A292C18";
public static void main(String[] args) {
try {
Properties connectionProps = new Properties();
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT,"http://localhost:8080");
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss");
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME,"administrator");
connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD,"password");
// Create a ServiceClientFactory instance
ServiceClientFactory factory = ServiceClientFactory.createInstance(connectionProps);
testProtectDocument(factory);
testProtectDocumentWithCoverPage(factory);
testProtectDocumentJavaPPL(factory);
}
catch (Exception ex) {
ex.printStackTrace(); }
}
private static void testProtectDocument(ServiceClientFactory factory) throws FileNotFoundException, SDKException {
// Create a RightsManagementClient object
RightsManagementClient rmClient = new RightsManagementClient(factory);
// Create a Document Manager object
DocumentManager documentManager = rmClient.getDocumentManager();
//Reference a policy-protected PDF document from which to remove a policy
FileInputStream is = new FileInputStream(unprotectedFileName);
Document inPDF = new Document(is);
long startTime = System.currentTimeMillis();
//Remove a policy from the policy-protected PDF document
RMSecureDocumentResult securePDF = documentManager.protectDocument(inPDF, "test", "newPolicySet", "latest", "DefaultDom", "administrator", null, true);
System.out.println("Total Time taken for protectDocument = " + (System.currentTimeMillis() - startTime));
//Save the unsecured PDF document
File myFile = new File(protectedFileName);
securePDF.getProtectedDoc().copyToFile(myFile);
}
private static void testProtectDocumentWithCoverPage(ServiceClientFactory factory) throws FileNotFoundException, SDKException {
// Create a RightsManagementClient object
RightsManagementClient rmClient = new RightsManagementClient(factory);
// Create a Document Manager object
DocumentManager documentManager = rmClient.getDocumentManager();
//Reference a policy-protected PDF document from which to remove a policy
FileInputStream is = new FileInputStream(unprotectedFileName);
Document inPDF = new Document(is);
FileInputStream coverIS = new FileInputStream(coverFileName);
Document inCoverPDF = new Document(coverIS);
long startTime = System.currentTimeMillis();
//Remove a policy from the policy-protected PDF document
RMSecureDocumentResult securePDF = documentManager.protectDocumentWithCoverPage(inPDF, "test", "newPolicySet", "latestPolicy", inCoverPDF, true);
System.out.println("Total Time taken for Page0ProtectDocument = " + (System.currentTimeMillis() - startTime));
//Save the unsecured PDF document
File myFile = new File(protectedFileName);
securePDF.getProtectedDoc().copyToFile(myFile);
}
private static PublishLicenseDTO testProtectDocumentJavaPPL (ServiceClientFactory factory) throws SDKException, FileNotFoundException, IOException {
// Create a RightsManagementClient object
RightsManagementClient2 rmClient2 = new RightsManagementClient2(factory);
// Create a Document Manager object
DocumentManager documentManager = rmClient2.getDocumentManager();
long startTime = System.currentTimeMillis();
PublishLicenseDTO license = documentManager.createLicense(POLICY_ID, "Out.pdf", true);
System.out.println("Create License totalTime = " + (System.currentTimeMillis() - startTime));
startTime = System.currentTimeMillis();
// Reference a PDF document to which a policy is applied
InputStream inputFileStream = new FileInputStream(unprotectedFileName);
// Apply a policy to the PDF document
InputStream protectPDF = rmClient2.getRightsManagementEncryptionService().protectDocument(inputFileStream, license);
// Save the policy-protected PDF document
File myFile = new File(protectedFileName);
// write the inputStream to a FileOutputStream
FileOutputStream outputStream = new FileOutputStream(myFile);
int read = 0;
byte[] bytes = new byte[1024];
while ((read = protectPDF.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
System.out.println("protectPDFDocument totalTime = " + (System.currentTimeMillis() - startTime));
outputStream.close();
inputFileStream.close();
System.out.println("Document Protected Successfully");
return license;
}
}