Expand my Community achievements bar.

Radically easy to access on brand approved content for distribution and omnichannel performant delivery. AEM Assets Content Hub and Dynamic Media with OpenAPI capabilities is now GA.
SOLVED

Assemble Documents with READ_ONLY permissions set

Avatar

Former Community Member

Greetings,

We receive a boatload of documents from different sources, and have to package them together.  Adobe Assembler service seemed the obvious choice, but we've run into one problem in particular.


Many of the documents we receive have Read Only security that is password protected.  When I try to run those through Assembler, it fails and I receive the error message further below in the logs.

Notice, it says Package operation failed due to permissions for PDF document "0"

We don't have access to these passwords and never will, so what can I do??  Do I have to use a third-party tool to package documents that have read-only permissions?  Because previously we were able to package these just fine with a third party PDF Creator.  We don't plan to modify anything in the document... just need to package a bunch of them together.  Any suggestions??

Any suggestions or advice is much appreciated,

Thanks!!

GS

2009-12-11 11:15:29,308 ERROR [com.adobe.livecycle.assembler.AssemblerServiceImpl] ALC-ASM-S00-002: Failed to execute the DDX - error messages provided.
com.adobe.livecycle.assembler.client.ProcessingException: ALC-ASM-S00-002: Failed to execute the DDX - error messages provided.
at com.adobe.livecycle.assembler.AssemblerServiceImpl.makeResult(AssemblerServiceI mpl.java:828)
at com.adobe.livecycle.assembler.AssemblerServiceImpl.execute(AssemblerServiceImpl .java:467)
at com.adobe.livecycle.assembler.AssemblerServiceImpl.invoke(AssemblerServiceImpl. java:408)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvok erImpl.java:118)
at com.adobe.idp.dsc.interceptor.impl.InvocationInterceptor.intercept(InvocationIn terceptor.java:140)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestI nterceptorChainImpl.java:60)
at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor$1.doInTransact ion(TransactionInterceptor.java:74)
at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.exe cute(EjbTransactionCMTAdapterBean.java:342)
at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionCMTAdapterBean.doS upports(EjbTransactionCMTAdapterBean.java:212)
at sun.reflect.GeneratedMethodAccessor298.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.invocation.Invocation.performCall(Invocation.java:345)
at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSe ssionContainer.java:214)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedC onnectionInterceptor.java:149)
at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessi onInstanceInterceptor.java:154)
at org.jboss.webservice.server.ServiceEndpointInterceptor.invoke(ServiceEndpointIn terceptor.java:54)
at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationIntercepto r.java:48)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.ja va:106)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.jav a:363)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:166)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:153)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderIn terceptor.java:122)
at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624)
at org.jboss.ejb.Container.invoke(Container.java:873)
at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory. java:415)
at org.jboss.ejb.plugins.local.StatelessSessionProxy.invoke(StatelessSessionProxy. java:88)
at $Proxy165.doSupports(Unknown Source)
at com.adobe.idp.dsc.transaction.impl.ejb.EjbTransactionProvider.execute(EjbTransa ctionProvider.java:104)
at com.adobe.idp.dsc.transaction.interceptor.TransactionInterceptor.intercept(Tran sactionInterceptor.java:72)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestI nterceptorChainImpl.java:60)
at com.adobe.idp.dsc.interceptor.impl.InvocationStrategyInterceptor.intercept(Invo cationStrategyInterceptor.java:55)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestI nterceptorChainImpl.java:60)
at com.adobe.idp.dsc.interceptor.impl.InvalidStateInterceptor.intercept(InvalidSta teInterceptor.java:37)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestI nterceptorChainImpl.java:60)
at com.adobe.idp.dsc.interceptor.impl.AuthorizationInterceptor.intercept(Authoriza tionInterceptor.java:102)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestI nterceptorChainImpl.java:60)
at com.adobe.idp.dsc.interceptor.impl.JMXInterceptor.intercept(JMXInterceptor.java :48)
at com.adobe.idp.dsc.interceptor.impl.RequestInterceptorChainImpl.proceed(RequestI nterceptorChainImpl.java:60)
at com.adobe.idp.dsc.engine.impl.ServiceEngineImpl.invoke(ServiceEngineImpl.java:1 15)
at com.adobe.idp.dsc.routing.Router.routeRequest(Router.java:118)
at com.adobe.idp.dsc.provider.impl.soap.axis.AdobeAxisServiceProvider.invokeMethod (AdobeAxisServiceProvider.java:222)
at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327 )
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil terChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain .java:173)
at com.adobe.idp.dsc.provider.impl.soap.axis.InvocationFilter.doFilter(InvocationF ilter.java:43)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil terChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain .java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java: 81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil terChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain .java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve. java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociati onValve.java:159)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:10 7)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnecti on(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:5 27)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread. java:112)
at java.lang.Thread.run(Thread.java:619)
Caused by: com.adobe.internal.pdfm.assembly.AssemblyException: PDFM_S02013: The "appendDocument" operation failed on "1".
at com.adobe.internal.pdfm.assembly.DocAssembler.appendDocument(DocAssembler.java: 769)
at com.adobe.internal.pdfm.assembly.DocAssembler.assemble(DocAssembler.java:185)
at com.adobe.internal.ddxm.task.pdf.AssemblePDF.execute(AssemblePDF.java:130)
at com.adobe.internal.ddxm.blueprint.BluePrint.execute(BluePrint.java:275)
at com.adobe.internal.ddxm.ddx.Node.execute(Node.java:373)
at com.adobe.internal.ddxm.Executive.execute(Executive.java:270)
at com.adobe.internal.ddxm.Executive.execute(Executive.java:221)
at com.adobe.livecycle.assembler.AssemblerServiceImpl.execute(AssemblerServiceImpl .java:465)
... 78 more
Caused by: com.adobe.internal.pdfm.packagefiles.PackageFilesException: PDFM_S22004: Package operation failed due to permissions for PDF document "0"
at com.adobe.internal.pdfm.packages.PackageService.checkPackageFilesPermissions(Pa ckageService.java:2777)
at com.adobe.internal.pdfm.packages.PackageService.aggregatePackageSchemaAndDispla yOrder(PackageService.java:1973)
at com.adobe.internal.pdfm.packages.PackageService.aggregatePackage(PackageService .java:1629)
at com.adobe.internal.pdfm.assembly.DocAssembler.appendDocument(DocAssembler.java: 667)
... 85 more
Caused by: com.adobe.internal.pdfm.util.PDFMPermissionException: PDFM_S00014: DOC_MODIFY permission is required for this operation.
at com.adobe.internal.pdfm.util.PDFMPermissionsManager.assertPermitted(PDFMPermiss ionsManager.java:100)
at com.adobe.internal.pdfm.packages.PackageService.checkPackageFilesPermissions(Pa ckageService.java:2775)
... 88 more

1 Accepted Solution

Avatar

Correct answer by
Level 2

You cannot assemble multiple protected PDF documents into a simple PDF document unless you have the source documents' passwords. But you can assemble those protected PDF documents into a PDF package. When Assembler creates a PDF package, it doesn't open the package files so it doesn't need the password.

The following DDX expression creates a PDF package with a cover page(single1) and 2 package files. Those package files can be protected. If single1 is protected, you have to provide its password. Also, if you omit single1, then Assembler uses a default cover page.

<DDX>

<PDF result="newPackage">
    <PDF source="single1"/>
    <PackageFiles>
        <PDF source="pkg1.pdf"/>
        <PDF source="pkg2.pdf"/>
    </PackageFiles>
</PDF>

</DDX>

The downside is that when you try to open a secure file in the resultant PDF package, you have to provide the password.

View solution in original post

2 Replies

Avatar

Correct answer by
Level 2

You cannot assemble multiple protected PDF documents into a simple PDF document unless you have the source documents' passwords. But you can assemble those protected PDF documents into a PDF package. When Assembler creates a PDF package, it doesn't open the package files so it doesn't need the password.

The following DDX expression creates a PDF package with a cover page(single1) and 2 package files. Those package files can be protected. If single1 is protected, you have to provide its password. Also, if you omit single1, then Assembler uses a default cover page.

<DDX>

<PDF result="newPackage">
    <PDF source="single1"/>
    <PackageFiles>
        <PDF source="pkg1.pdf"/>
        <PDF source="pkg2.pdf"/>
    </PackageFiles>
</PDF>

</DDX>

The downside is that when you try to open a secure file in the resultant PDF package, you have to provide the password.

Avatar

Former Community Member

Thanks Kathy for the reply.

I did find this and try it out, although our end-users are expecting a single flat PDF with all of the content because that is what they have always been given.  Until Assembler, we never even knew that this wasn't desired behavior because every other 3rd party product out there makes this so simple.

I totally understand the concept and reasons why Adobe is doing this, but at the same time - I feel like it makes the Adobe Assembler inferior to the 3rd party applications in this respect because they can all do this.  It would be really nice if this could be reconsidered at least for creating a PDF out of documents that you have no intention of modifying.  The document is not password protected to open (it simply has a password on DOC_MODIFY, so it can be read by anyone but not modified without a password). Anyone could take and copy the read-only content out of the document to assemble into another doc however they wanted anyway, unless they use the Adobe Assembler service...

Regards,

GS