Am 24.02.2016 um 00:27 schrieb Brzrk One:
Yea, I think that's it.
Comparing the input pdf to the loadNonSeq() output, I see objects that have the same content. This means that the loadNonSeq() output is encrypted - like the input - while the load() output is not. However, the loadNonSeq() output has no /Encrypt dictionary.

I am using this on both paths:
    StandardDecryptionMaterial sdm = new StandardDecryptionMaterial("");
    document.openProtection(sdm);

You shouldn't use this on loadNonSeq, or in 2.0 (it isn't available there anyway).

You only need it with load() in 1.8.


without error.
Is this a feature of loadNonSeq() in the face of AccessPermission.canExtractContent() == true?
Or did I do something wrong here?

You need openProtection() only with load() in 1.8 and only if the file is encrypted. (Yours is)

Tilman



On Tue, Feb 23, 2016 at 5:54 PM, Brzrk One <[email protected] <mailto:[email protected]>> wrote:

    Ah! A clue!

    Opening the load() output with PDFDebugger from 2.0RC3 complains
    of a Registry error:
       Feb 23, 2016 5:36:20 PM java.util.prefs.WindowsPreferences
    <init> WARNING:
       Could not open/create prefs root node Software\JavaSoft\Prefs
    at root 0x80000002.
       Windows RegCreateKeyEx(...) returned error code 5.

    Which I promptly ignored.

    Opening the loadNonSeq() output with PDFDebugger from 2.0RC3
    includes the same Registry error, plus this diagnostic:

    Feb 23, 2016 5:36:33 PM org.apache.pdfbox.filter.FlateFilter decode
        SEVERE: FlateFilter: stop reading corrupt stream due to a
    DataFormatException

    and the stack trace shown below in a dialog box whenever it
    attempts to display a Page object,
    each due to:
        java.util.zip.DataFormatException: unknown compression method

    The two output document structures are mostly the same, however
    for the loadNonSeq() output, the Info directory looks like it is
    still encoded:

    Inline image 1

    whereas, for the load() output, the Info directory looks decoded:
    Inline image 2

    Is this an decryption/re-encryption issue because of the /P setting?

    Here's the stack trace:

    java.lang.RuntimeException:
    java.util.concurrent.ExecutionException: java.io.IOException:
    java.util.zip.DataFormatException: unknown compression method
    
org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.done(PagePane.java:175)
    sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:95)
    Caused by: java.util.concurrent.ExecutionException:
    java.io.IOException: java.util.zip.DataFormatException: unknown
    compression method
    
org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.done(PagePane.java:164)
    sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:95)
    Caused by: java.io.IOException: java.util.zip.DataFormatException:
    unknown compression method
    org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:82)
    org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:69)
    org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:163)
    org.apache.pdfbox.pdmodel.PDPage.getContents(PDPage.java:148)
    org.apache.pdfbox.pdfparser.PDFStreamParser.<init>(PDFStreamParser.java:92)
    
org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:461)
    
org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:445)
    
org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
    org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:187)
    org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:208)
    org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:139)
    org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:68)
    
org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.doInBackground(PagePane.java:155)
    
org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.doInBackground(PagePane.java:138)
        java.lang.Thread.run(Thread.java:619)
    Caused by: java.util.zip.DataFormatException: unknown compression
    method
        java.util.zip.Inflater.inflateBytes(Native Method)
        java.util.zip.Inflater.inflate(Inflater.java:238)
        java.util.zip.Inflater.inflate(Inflater.java:256)
    org.apache.pdfbox.filter.FlateFilter.decompress(FlateFilter.java:104)
    org.apache.pdfbox.filter.FlateFilter.decode(FlateFilter.java:73)
    org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:69)
    org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:163)
    org.apache.pdfbox.pdmodel.PDPage.getContents(PDPage.java:148)
    org.apache.pdfbox.pdfparser.PDFStreamParser.<init>(PDFStreamParser.java:92)
    
org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:461)
    
org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:445)
    
org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
    org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:187)
    org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:208)
    org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:139)
    org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:68)
    
org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.doInBackground(PagePane.java:155)
    
org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.doInBackground(PagePane.java:138)
        java.lang.Thread.run(Thread.java:619)

    On Tue, Feb 23, 2016 at 5:30 PM, Brzrk One <[email protected]
    <mailto:[email protected]>> wrote:

        Well, I'm looking at the output of our application code, which
        is unfortunately both proprietary and much more complicated
        than the command line utilities.

        After loading this document with loadNonSeq(), getting the
        warning, and continuing to do our processing (mostly adding
        annotations), the output contains all blank pages.

        The same processing code with load() produces output with
        content on all the pages.

        On Tue, Feb 23, 2016 at 4:22 PM, Tilman Hausherr
        <[email protected] <mailto:[email protected]>> wrote:

            Am 23.02.2016 um 22:19 schrieb Brzrk One:

                I get all that. I just don't see where in loadNonSeq()
                it is refusing to
                copy content.


            Not at all. It is really just a warning when opening.

            The refusal is in the command line utility source.


            Tilman


                On Tue, Feb 23, 2016 at 3:40 PM, Tilman Hausherr
                <[email protected] <mailto:[email protected]>>
                wrote:

                    Am 23.02.2016 um 21:33 schrieb Brzrk One:

                        loadNonSeq() seems to respect it too?
                        sneaking in a bogus
                        AccessPermissions.canExtractContent() did not
                        alter
                        this.
                        What does load() do that loadNonSeq() does
                        not? (Or vice versa.)

                    They use different parsing strategies.
                    Additionally, a difference is that
                    loadNonSeq immediately decrypts, and brings up the
                    warning.


                    Tilman


                        On Tue, Feb 23, 2016 at 2:54 PM, Tilman
                        Hausherr <[email protected]
                        <mailto:[email protected]>>
                        wrote:

                        Am 23.02.2016 um 20:44 schrieb Brzrk One:

                            The file is:

                                
http://www.bmv.com.mx/docs-pub/infoifrs/infoifrs_588674_2015-01_1.pdf

                                The file is indeed protected against
                                text extraction. Our command line

                            utilities respect this. The methods (of
                            PDFTextStripper) ignore it, they
                            expect you to handle it. See in the
                            examples source code how to extract
                            text.

                            Tilman



                            On Tue, Feb 23, 2016 at 12:05 PM, Tilman
                            Hausherr <[email protected]
                            <mailto:[email protected]>

                                wrote:

                                Am 23.02.2016 um 17:53 schrieb Brzrk One:

                                    With pdfbox-1.8.11, using the
                                    bottom-up parser (loadNonSeq) on a
                                    document

                                        that has security
                                        ContentCopying: NotAllowed
                                        results in:

                                        
org.apache.pdfbox.pdfparser.NonSequentialPDFParser
                                        - PDF file
                                        'some_temp_file.pdf' does not
                                        allow extracting content

                                        And the output pages are all
                                        blank.

                                        The top-down parser (load) has
                                        no such issue.

                                        Is there a workaround?


                                        I looked in the source code,
                                        this warning comes only in the non

                                    sequential
                                    parser. There's a similar error
                                    message in the ExtractText command
                                    line
                                    utility ("You do not have
                                    permission to extract text").

                                    The best would be to upload the
                                    file somewhere.

                                    Tilman


                                    
---------------------------------------------------------------------
                                    To unsubscribe, e-mail:
                                    [email protected] 
<mailto:[email protected]>
                                    For additional commands, e-mail:
                                    [email protected]
                                    <mailto:[email protected]>



                                    
---------------------------------------------------------------------

                            To unsubscribe, e-mail:
                            [email protected]
                            <mailto:[email protected]>
                            For additional commands, e-mail:
                            [email protected]
                            <mailto:[email protected]>



                    
---------------------------------------------------------------------
                    To unsubscribe, e-mail:
                    [email protected]
                    <mailto:[email protected]>
                    For additional commands, e-mail:
                    [email protected]
                    <mailto:[email protected]>




            
---------------------------------------------------------------------
            To unsubscribe, e-mail:
            [email protected]
            <mailto:[email protected]>
            For additional commands, e-mail:
            [email protected]
            <mailto:[email protected]>





Reply via email to