begin process at 2010 02 10 09:20:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

Probleme PDFBox


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme PDFBox

mardi 30 octobre 2007 à 12:05:32 | Probleme PDFBox

tof008

Membre Club

Bonjour,

J'utilise la librairie PDFBox pour ouvrir un document PDF. Ce document s'ouvre avec un mot de passe. J'utilise le code suivant pour ouvrir le document et le décrypter à l'aide du mot de passe.
JE recois l'erreur suivante lorsque j'essaie de l'ouvrir (alors que le mot de passe marche quand  je j'essaie d'ouvrir le fichier normalement) :

Exception in thread "main" org.pdfbox.exceptions.CryptographyException: Error: The supplied password does not match either the owner or user password in the document.
 at org.pdfbox.pdmodel.encryption.StandardSecurityHandler.decryptDocument(StandardSecurityHandler.java:230)
 at testPDF.ExtractText.main(ExtractText.java:216)


J'espere que quelqu'un pourra me dépanner parce que j'ai vraiment beaucoup de mal à comprendre !

Merci d'avance

Voila le code que j'utilise (qui est le code présenté dans le zip de PDFBox... )

package testPDF;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.MalformedURLException;
import java.net.URL;

import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.pdmodel.encryption.AccessPermission;
import org.pdfbox.pdmodel.encryption.SecurityHandler;
import org.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
import org.pdfbox.util.PDFText2HTML;
import org.pdfbox.util.PDFTextStripper;
import org.pdfbox.cos.COSName;

public class ExtractText
{
    /**
     * This is the default encoding of the text to be output.
     */
    public static final String DEFAULT_ENCODING =
        null;
        //"ISO-8859-1";
        //"ISO-8859-6"; //arabic
        //"US-ASCII";
        //"UTF-8";
        //"UTF-16";
        //"UTF-16BE";
        //"UTF-16LE";


    private static final String PASSWORD = "-password";
    private static final String ENCODING = "-encoding";
    private static final String CONSOLE = "-console";
    private static final String START_PAGE = "-startPage";
    private static final String END_PAGE = "-endPage";
    private static final String SORT = "-sort";
    private static final String HTML = "-html";  // jjb - added simple HTML output

    /**
     * private constructor.
    */
    private ExtractText()
    {
        //static class
    }

    /**
     * Infamous main method.
     *
     * @param args Command line arguments, should be one and a reference to a file.
     *
     * @throws Exception If there is an error parsing the document.
     */
    public static void main( String[] args ) throws Exception
    {
        boolean toConsole = false;
        boolean toHTML = false;
        boolean sort = false;
        String password = "aaaaaaaaaa";
        String encoding = "UTF-8";
        String pdfFile = "FichierPDF.pdf";
        String textFile = "fichierText.txt";
        int startPage = 1;
        int endPage = Integer.MAX_VALUE;
        for( int i=0; i<args.length; i++ )
        {
            if( args[i].equals( PASSWORD ) )
            {
                i++;
                if( i >= args.length )
                {
                    usage();
                }
                password = args[i];
            }
            else if( args[i].equals( ENCODING ) )
            {
                i++;
                if( i >= args.length )
                {
                    usage();
                }
                encoding = args[i];
            }
            else if( args[i].equals( START_PAGE ) )
            {
                i++;
                if( i >= args.length )
                {
                    usage();
                }
                startPage = Integer.parseInt( args[i] );
            }
            else if( args[i].equals( HTML ) )
            {
                toHTML = true;
            }
            else if( args[i].equals( SORT ) )
            {
                sort = true;
            }
            else if( args[i].equals( END_PAGE ) )
            {
                i++;
                if( i >= args.length )
                {
                    usage();
                }
                endPage = Integer.parseInt( args[i] );
            }
            else if( args[i].equals( CONSOLE ) )
            {
                toConsole = true;
            }
            else
            {
                if( pdfFile == null )
                {
                    pdfFile = args[i];
                }
                else
                {
                    textFile = args[i];
                }
            }
        }

        if( pdfFile == null )
        {
            usage();
        }
        else
        {

            Writer output = null;
            PDDocument document = null;
            try
            {
                try
                {
                    //basically try to load it from a url first and if the URL
                    //is not recognized then try to load it from the file system.
                    URL url = new URL( pdfFile );
                    document = PDDocument.load( url );
                    String fileName = url.getFile();
                    if( textFile == null && fileName.length() >4 )
                    {
                        File outputFile =
                            new File( fileName.substring( 0, fileName.length() -4 ) + ".txt" );
                        textFile = outputFile.getName();
                    }
                }
                catch( MalformedURLException e )
                {
                    document = PDDocument.load( pdfFile );
                    if( textFile == null && pdfFile.length() >4 )
                    {
                        textFile = pdfFile.substring( 0, pdfFile.length() -4 ) + ".txt";
                    }
                }
   
                //document.print();
                if( document.isEncrypted() )
                {
                 System.out.println(password);
                    StandardDecryptionMaterial sdm = new StandardDecryptionMaterial( password );                   
                    document.openProtection( sdm );
                   
                    //System.out.println(sdm.getPassword());
                    //document.decrypt(password);
                    System.out.println(document.getSecurityHandler());
                    SecurityHandler sc = document.getSecurityHandler();
                    AccessPermission ap =sc.getCurrentAccessPermission();
                    System.out.println(document.getCurrentAccessPermission());
                    //AccessPermission ap = document.getCurrentAccessPermission();
                    if(ap != null){
                    if( ! ap.canExtractContent() )
                    {
                        throw new IOException( "You do not have permission to extract text" );
                    }
                    }
                }
                if( toConsole )
                {
                    output = new OutputStreamWriter( System.out );
                }
                else
                {
                    if( encoding != null )
                    {
                        output = new OutputStreamWriter(
                            new FileOutputStream( textFile ), encoding );
                    }
                    else
                    {
                        //use default encoding
                        output = new OutputStreamWriter(
                            new FileOutputStream( textFile ) );
                    }
                }
   
                PDFTextStripper stripper = null;
                if(toHTML)
                {
                   stripper = new PDFText2HTML();
                }
                else
                {
                   stripper = new PDFTextStripper();
                }
                stripper.setSortByPosition( sort );
                stripper.setStartPage( startPage );
                stripper.setEndPage( endPage );
                stripper.writeText( document, output );
            }
            finally
            {
                if( output != null )
                {
                    output.close();
                }
                if( document != null )
                {
                    document.close();
                }
            }
        }
    }

    /**
     * This will print the usage requirements and exit.
     */
    private static void usage()
    {
        System.err.println( "Usage: java org.pdfbox.ExtractText [OPTIONS] <PDF file> [Text File]\n" +
            "  -password  <password>        Password to decrypt document\n" +
            "  -encoding  <output encoding> (ISO-8859-1,UTF-16BE,UTF-16LE,...)\n" +
            "  -console                     Send text to console instead of file\n" +
            "  -html                        Output in HTML format instead of raw text\n" +
            "  -sort                        Sort the text before writing\n" +
            "  -startPage <number>          The first page to start extraction(1 based)\n" +
            "  -endPage <number>            The last page to extract(inclusive)\n" +
            "  <PDF file>                   The PDF document to use\n" +
            "  [Text File]                  The file to write the text to\n"
            );
        System.exit( 1 );
    }
}


 

                           Noubliez pas de lire le REGLEMENT 



Cette discussion est classée dans : document, import, args, pdfbox, if


Répondre à ce message

Sujets en rapport avec ce message

convertir les tableaux html en XML [ par asle ] salut, j'ai le code suivant qui permet d'extraire un tableau html et le transformer en xml: import org.htmlparser.*; import org.htmlparser.util.*; i Le problemed'un JEditorPane [ par chebil ] Bonjourj'ai un probleme avec le JEditorPane:je cherche a  afficher la page html dont le code source est le suivant //"<A href="http://www.w3.org/TR/ht Saisie semi automatique [ par keket ] Bien le bonjour. Je viens vous voir aujourd'hui car j'ai un petit soucis de compréhension avec un code que je n'arrive pas très bien a cerner. Le but recuperer chaque tableau html dans une matrice [ par asle ] salut tout le monde, j'ai un programme qui permet d'extraire un tableau html et le convertir en xml voici le code: Code Java : [code=java] import org. probleme affichage applet dans page html [ par Hamz01 ] Salut tous le monde, j'ai un petit souci d'affichage de mon appelet sur une page html en effet ce dernier n'apparait pas entierement sur la page mer parseur html [ par bassoumbassoum ] Bonjour,j'ai éssayé un code pour parser un fichier html, j'ai réussit de sortir toutes les balises c'est mon codes:#import java.io.Serializable;import parcourir fichier xml externe [ par wissam12 ] Bonjour,j'ai un problème et j'ai besoin de l'aide.je veux parcourir un fichier xml externe(url:exemple "http://www.menara.ma/rss/actualites.xml") avec ecrire un champ dans deux fichiers différents [ par yarpal ] Bonjour à tous, Ci dessous la Classe que j'ai écrit. Le but est d'extraire certains champs d'un grand tableau sachant qu'un des champs doit se retrouv


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales