pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tolen Miller <tolenmil...@msn.com>
Subject Re: Cannot load pre existing PDF to access fields
Date Wed, 26 Aug 2015 23:35:44 GMT
forgot stack trace...

*Exception in thread "AgentThread: JavaAgent"
java.security.AccessControlException: Access denied
(java.lang.RuntimePermission createSecurityManager)*
* at java.security.AccessController.throwACE(AccessController.java:100)*
* at
java.security.AccessController.checkPermission(AccessController.java:174)*
* at java.lang.SecurityManager.checkPermission(SecurityManager.java:544)*
* at
COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.java:1449)*
* at
COM.ibm.JEmpower.applet.AppletSecurity.checkRuntimePermission(AppletSecurity.java:1311)*
* at
COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1611)*
* at
COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1464)*
* at java.lang.SecurityManager.<init>(SecurityManager.java:294)*
* at JavaAgent$MySecurityManager.<init>(JavaAgent.java:159)*
* at JavaAgent$MySecurityManager.<init>(JavaAgent.java:159)*
* at JavaAgent.NotesMain(JavaAgent.java:36)*
* at lotus.domino.AgentBase.runNotes(Unknown Source)*
* at lotus.domino.NotesThread.run(Unknown Source)*

On Wed, Aug 26, 2015 at 4:35 PM, Tolen Miller <tolenmiller@msn.com> wrote:

> Well, I'm not sure that will work either:
>
> On Wed, Aug 26, 2015 at 4:17 PM, Roberto Nibali <rnibali@gmail.com> wrote:
>
>> Hi
>>
>> You use Notes/Domino, which is quiet a challenge when it comes to
>> application security. The Java API of Notes/Domino contains two different
>> SecurityManagers - one for agents and one for servlets. The
>> SecurityManager
>> for agents is COM.ibm.JEmpower.applet.AppletSecurity and the
>> SecurityManager for servlers is lotus.notes.AgentSecurityManager. Both
>> inherit directly from java.lang.SecurityManager. Make sure you have the
>> appropriate settings and talk to the administrator of this node. Last but
>> not least, I suppose you have a support contract with IBM.
>>
>> If you can fiddle around with the JVM you'd like to invoke, add your own
>> grant policy file: -Djava.security.policy=applet.policy
>>
>> However, I doubt Lotus will let you do this, and most probably you'll hit
>> a
>> classloader issue. With some luck you could hijack the SecurityManager as
>> follows:
>>
>> private class MySecurityManager extends SecurityManager {
>>     @Override
>>     public void checkPermission(Permission perm) {
>>         return;
>>     }}
>>
>>
>> At the start of your Applet, you do the following:
>>
>> SecurityManager sm = new
>> MySecurityManager();System.setSecurityManager(sm);
>>
>>
>> Good luck
>>
>> Roberto
>>
>> On Thu, Aug 27, 2015 at 12:08 AM, Tolen Miller <tolenmiller@msn.com>
>> wrote:
>>
>> > Hello again,
>> >
>> > I was able to get the PrintFields example working, so thanks for that.
>> I
>> > then applied what I learned to my situation and everything seemed to be
>> > going well, but now I have run into a roadblock:
>> > *java.lang.RuntimeException: java.security.AccessControlException:
>> Access
>> > denied (java.lang.reflect.ReflectPermission suppressAccessChecks)*
>> > * at
>> > org.apache.pdfbox.pdmodel.font.PDType1CFont.load(PDType1CFont.java:411)*
>> > * at
>> >
>> org.apache.pdfbox.pdmodel.font.PDType1CFont.<init>(PDType1CFont.java:102)*
>> > * at
>> > org.apache.pdfbox.pdmodel.font.PDType1Font.<init>(PDType1Font.java:162)*
>> > * at
>> >
>> >
>> org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:92)*
>> > * at
>> org.apache.pdfbox.pdmodel.PDResources.getFonts(PDResources.java:213)*
>> > * at
>> >
>> >
>> org.apache.pdfbox.pdmodel.interactive.form.PDAppearance.getFontAndUpdateResources(PDAppearance.java:820)*
>> > * at
>> >
>> >
>> org.apache.pdfbox.pdmodel.interactive.form.PDAppearance.setAppearanceValue(PDAppearance.java:316)*
>> > * at
>> >
>> >
>> org.apache.pdfbox.pdmodel.interactive.form.PDVariableText.setValue(PDVariableText.java:131)*
>> > * at JavaAgent.NotesMain(JavaAgent.java:69)*
>> > * at lotus.domino.AgentBase.runNotes(Unknown Source)*
>> > * at lotus.domino.NotesThread.run(Unknown Source)*
>> > *Caused by: java.security.AccessControlException: Access denied
>> > (java.lang.reflect.ReflectPermission suppressAccessChecks)*
>> > * at java.security.AccessController.throwACE(AccessController.java:100)*
>> > * at
>> >
>> java.security.AccessController.checkPermission(AccessController.java:174)*
>> > * at
>> java.lang.SecurityManager.checkPermission(SecurityManager.java:544)*
>> > * at
>> >
>> >
>> COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.java:1449)*
>> > * at
>> >
>> >
>> COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1617)*
>> > * at
>> >
>> >
>> COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1464)*
>> > * at
>> >
>> >
>> java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:118)*
>> > * at
>> > org.apache.pdfbox.pdmodel.font.PDType1CFont.load(PDType1CFont.java:406)*
>> > * ... 10 more*
>> >
>> > This occurs just as I am calling PDField.setValue() and assigning a
>> value.
>> > I checked the java.policy file and the location where the PDFBox JAR is
>> > stored has "AllPermission". I also ensured that my PDF has no security.
>> > Any thoughts on what else to look for?
>> >
>> >
>> >
>> >
>> > On Wed, Aug 26, 2015 at 2:15 AM, Roberto Nibali <rnibali@gmail.com>
>> wrote:
>> >
>> > > Hi
>> > >
>> > > On Wed, Aug 26, 2015 at 9:27 AM, Maruan Sahyoun <
>> sahyoun@fileaffairs.de>
>> > > wrote:
>> > >
>> > > > Hi,
>> > > >
>> > > > > Am 26.08.2015 um 06:00 schrieb Tolen Miller <tolenmiller@msn.com
>> >:
>> > > > >
>> > > > > I uploaded my PDF again, if someone wants to see if they can
get
>> all
>> > of
>> > > > the
>> > > > > fields to return: http://1drv.ms/1PRKZsI
>> > > > >
>> > > > > After looking at the sample provided by Maruan, I noticed that
I
>> was
>> > > not
>> > > > > passing in a File object, when calling the PDDocument.load()
>> method.
>> > > > Doing
>> > > > > so, I now get the same result from Maruan's code (in eclipse).
>> > > > >
>> > > > > Now I am unsure how to get *all* of the fields from the
>> PDAcroForm.
>> > I
>> > > am
>> > > > > trying to get a collection of the fields, so I can loop through
>> them.
>> > > > When
>> > > > > I add this code:
>> > > > >
>> > > > > List<PDField> pdfFields = form.getFields();
>> > > > > for (PDField field : pdfFields) {
>> > > > > System.out.println("PDF Field Full Name: ".concat(field
>> > > > > .getFullyQualifiedName()));
>> > > > > }
>> > > > >
>> > > >
>> > > > as there is only one 'root' field you have to get it's kids and
>> process
>> > > > the field tree down. Take a look at
>> > > > org.apache.pdfbox.examples.fdf.PrintFields of how to do that.
>> > > >
>> > > >
>> > > Having spent the last two months intensively with form fields, here
>> is my
>> > > current code to dump the fields:
>> > >
>> > > private void executeDumpFields(String srcDocName) throws IOException {
>> > >     PDDocument srcDoc = null;
>> > >     try {
>> > >         srcDoc = PDDocument.load(new File(srcDocName));
>> > >
>> > >
>> >
>> srcDoc.getDocumentCatalog().getAcroForm().getFields().forEach(this::dumpField);
>> > >         srcDoc.close();
>> > >     } catch (Exception e) {
>> > >         logerr(e.getMessage());
>> > >     } finally {
>> > >         if (srcDoc != null) {
>> > >             srcDoc.close();
>> > >         }
>> > >     }
>> > > }
>> > >
>> > > private void dumpField(PDField srcField) {
>> > >     if (srcField instanceof PDNonTerminalField) {
>> > >         ((PDNonTerminalField)
>> > > srcField).getChildren().forEach(this::dumpField);
>> > >     } else if (!(srcField instanceof PDSignatureField)) {
>> > >         System.out.printf("fqName=%s type=%s%n",
>> > > srcField.getFullyQualifiedName(),
>> > > srcField.getClass().getSimpleName());
>> > >     }
>> > > }
>> > >
>> > > Maybe you can use some of it. Just call the executeDumpFields(...)
>> with
>> > the
>> > > appropriate PDF name as a string and go from there. Not understanding
>> the
>> > > PDF standard and how the dictionary trees are built up inside PDF, I
>> had
>> > a
>> > > hard time initially understanding why I need to kind of recursively to
>> > > through the PDField entries.
>> > >
>> > > Cheers
>> > > Roberto
>> > >
>> >
>>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message