Sounds like the MDP stuff... here some code from the examples subproject

    /**
     * Get the access permissions granted for this document in the DocMDP transform parameters      * dictionary. Details are described in the table "Entries in the DocMDP transform parameters
     * dictionary" in the PDF specification.
     *
     * @param doc document.
     * @return the permission value. 0 means no DocMDP transform parameters dictionary exists. Other      * return values are 1, 2 or 3. 2 is also returned if the DocMDP transform parameters dictionary      * is found but did not contain a /P entry, or if the value is outside the valid range.
     */
    public static int getMDPPermission(PDDocument doc)
    {
        COSDictionary permsDict = doc.getDocumentCatalog().getCOSObject()
                .getCOSDictionary(COSName.PERMS);
        if (permsDict != null)
        {
            COSDictionary signatureDict = permsDict.getCOSDictionary(COSName.DOCMDP);
            if (signatureDict != null)
            {
                COSArray refArray = signatureDict.getCOSArray(COSName.REFERENCE);
                if (refArray != null)
                {
                    for (int i = 0; i < refArray.size(); ++i)
                    {
                        COSBase base = refArray.getObject(i);
                        if (base instanceof COSDictionary)
                        {
                            COSDictionary sigRefDict = (COSDictionary) base;                             if (COSName.DOCMDP.equals(sigRefDict.getDictionaryObject(COSName.TRANSFORM_METHOD)))
                            {
                                base = sigRefDict.getDictionaryObject(COSName.TRANSFORM_PARAMS);
                                if (base instanceof COSDictionary)
                                {
                                    COSDictionary transformDict = (COSDictionary) base;                                     int accessPermissions = transformDict.getInt(COSName.P, 2);                                     if (accessPermissions < 1 || accessPermissions > 3)
                                    {
                                        accessPermissions = 2;
                                    }
                                    return accessPermissions;
                                }
                            }
                        }
                    }
                }
            }
        }
        return 0;
    }

Tilman

Am 04.04.2022 um 15:50 schrieb Roberto Minoletti:
Hello,

how can we obtain the Document Restriction Summary from a PDF using PDFBox?

We can actually manage without any issues the Permissions properties but not
the Restrictions.

To be more specific the problem is that we have to sign a document in of a
document management process but in case of the document is previously signed
and blocked by the owner we need to detect it before to add a second
signature to avoid to broke the previous signature.

We have seen into the document restrictions that there is a parameter named
"signature" that can be "allowed" or "not allowed" and we need to be able to
read this value using PDFbox from pdf before to add the digital signature.

It seems that it is a common problem and I've found for example the same
question here by other person:

https://community.oracle.com/tech/developers/discussion/4495150/access-permi
ssions-not-reflecting-on-pdf-document-restriction-summary-using-pdfbox

but not able to find any answers.

Can someone help me to find the right function to get and parse
restrictions?

Thank you in advance

Roberto




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: users-h...@pdfbox.apache.org

Reply via email to