IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Lecture d'un simple PDF en local avec la librairie pdfjs


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 76
    Points : 58
    Points
    58
    Par défaut Lecture d'un simple PDF en local avec la librairie pdfjs
    Salut à tous,

    Je cherche à mettre en place un visualiseur de PDF dans une application Electron.js. Pour cela j'essaie d'utiliser la librairie pdf.js.
    Néanmoins tous ce que j'essaie de faire ce solde pour des erreurs et je n'arrive pas bien à comprendre ce que je dois fournir ou comment le fournir à pdf.js afin de pouvoir visualiser un pdf.

    Des ressources existent sur internet mais ce base toutes sur le fait que la ressource PDF provient d'un upload user ou d'un appel asynchrone vers une ressource externe. Alors que dans mon cas, je possède déjà le pdf en local.
    Ainsi je ne peux pas travailler avec des fetch() ou autre input file.

    Existe t-il des personnes ayant déjà utilisé cette librairie pouvant m'éclairer sur comment procéder pour visualiser un pdf.
    Entre les ArrayBuffer, Base64, URLformatted et autres blob, j'ai du mal à saisir comment procéder pour fournir l'information que la librairie à besoin.

    Dans mon exemple j'essaie de visualiser le fichier helloworld.pdf que j'ai récupérer dans l'exemple officiel du site de la librairie pdf.js (donc fichier non corrompu ou autres bizarrerie)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    const utils = new Utils()
     
    let fileObject = utils.fileToBase64('/Users/xxxxx/xxxx/test/helloworld.pdf')
    let blobObject  = utils.base64ToBlob(fileObject)
     
    this.path = fileObject
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe height="100%" width="100%" :src="'pdfjs/web/viewer.html?file='+path"></iframe>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    fileToBase64(filepath)
    {
        let file = fs.readFileSync(filepath, 'utf8') 
        return btoa(unescape(encodeURIComponent(file)))
    }
     
    getFileObject(filepath)
    {
        return fs.readFileSync(filepath, 'utf8')
    }
    Il s'agit d'un exemple basique mis en place mais j'ai essayer vraiment beaucoup de choses. Il se vraiment très long et décourageant pour mes futurs lecteurs de tous les énumérés.


    Ce bout de code me génère l'erreur suivante :

    cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js?!./src/views/modal/ViewerPDF.vue?vue&type=script&lang=js&:94 Blob {size: 678, type: "application/pdf"}

    15:31:38.380 viewer.js:1801 http://localhost:8080 (console.log(origin))

    15:31:38.380 viewer.js:1802 http://localhost:8080 (console.log(viewerOrigin))

    15:31:38.448 pdf.worker.js:1033 Warning: getHexString - ignoring invalid character: 33

    15:31:38.448 pdf.worker.js:1033 Warning: getHexString - ignoring invalid character: 79

    15:31:38.449 pdf.worker.js:1033 Warning: getHexString - ignoring additional invalid characters.

    15:31:38.449 pdf.worker.js:1033 Warning: getHexString - ignoring invalid character: 104

    15:31:38.449 pdf.worker.js:1033 Warning: getHexString - ignoring invalid character: 109

    15:31:38.452 pdf.worker.js:1033 Warning: getHexString - ignoring additional invalid characters.

    15:31:38.452 pdf.worker.js:1033 Warning: getHexString - ignoring invalid character: 104

    15:31:38.453 pdf.worker.js:1033 Warning: Indexing all PDF objects

    15:31:38.454 viewer.html:1 Uncaught (in promise) InvalidPDFException {message: "Invalid PDF structure.", name: "InvalidPDFException"}

    Mais d'après cet exemple simple auriez-vous des conseils à me donner ou des pistes à envisager pour réussir à visualiser ce simple PDF ?

    Je crois que je ne me suis jamais autant pris la tête sur l'utilisation d'une librairie que pdf.js....


    Merci d'avance à tous pour vos précieux éclairages

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 400
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 400
    Points : 15 764
    Points
    15 764
    Par défaut
    est ce que votre message concerne NodeJS ? si c'est le cas, demandez à un modérateur de mettre votre message dans ce forum :
    https://www.developpez.net/forums/f2...script/nodejs/

Discussions similaires

  1. sniffer en local avec ethereal
    Par ashram dans le forum Développement
    Réponses: 9
    Dernier message: 31/01/2007, 16h07
  2. [Sécurité] probleme d'acces en reseau local avec OPENDIR()
    Par babycracker dans le forum Langage
    Réponses: 3
    Dernier message: 28/09/2005, 13h51
  3. Reseau local avec Freebox
    Par doudine dans le forum Développement
    Réponses: 5
    Dernier message: 26/09/2005, 22h22
  4. Plantage requete SQL simple sous Delphi7/ADO avec Access
    Par tomy29 dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/08/2005, 11h09
  5. Configurer un réseau local avec 3 pc Win xp
    Par stkam dans le forum Développement
    Réponses: 3
    Dernier message: 26/02/2004, 19h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo