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

Interfaces Graphiques en Java Discussion :

Un browser embarqu� lisant les PDF


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre averti
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2016
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2016
    Messages : 31
    Par d�faut Un browser embarqu� lisant les PDF
    Bonjour � tous,
    Ce post est la suite du post https://www.developpez.net/forums/d2...fichier-local/ .
    Je suis toujours sur mon projet de faire un �cran de veille qui affiche un site internet.
    Petite modification cependant, j'ai r�ussi � faire en sorte que je n'appel plus un fichier local incluant un script et d'autres infos mais j'appel une page du style "www.toto.com/id", donc plus de probl�me de cookie en local.
    Tout va pour le mieux dans le meilleur des mondes jusqu'� ce que je navigue sur les diff�rents spots de pub envoy�s : une vid�o se lance pour chaque page (pas de probl�me) et certains spots inclus des boutons pour visualiser notamment les mentions l�gales. Or, cette page affiche juste un document PDF dans un iframe je pense.

    Mon probl�me est que le WebView de JavaFx ne poss�de pas de module PDF et je n'ai rien trouv� sur comment lui en ajouter un.
    J'ai trouv� comment afficher un document PDF via PDF.js mais il me semble que cela ne peut se faire que si on mets � dispo une page, pas quand on l'appel :
    -si je mets � dispo une page a.html qui embarque un pdf, je peux choisir d'afficher ce document via le reader en js.
    -par contre, si j'appel une adresse mais que le cr�ateur n'a rien fait de sp�cial, il n'y a pas moyen de signaler au browser d'utiliser ce reader.

    Bref je suis encore une fois bloqu� avec cette fonctionnalit� et je commence � penser que cr�ateur d'�cran de veille est un vrai m�tier.
    Au secours !!!

  2. #2
    Mod�rateur
    Avatar de joel.drigo
    Homme Profil pro
    Ing�nieur R&D - D�veloppeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D - D�veloppeur Java
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par d�faut
    Salut,


    Tu pourrais simplement, comme tu as fait pour ton mini serveur web pour les pages locale, faire un proxy, ou utiliser ce serveur web, pour transformer les liens vers pdf en une page qui affiche le pdf via pdf.js, ou patcher les liens.

    Il me semble que viewerjs le fait tout seul, en modifiant juste le lien (on ne passe pas par du js pour ouvrir le pdf). Il te suffirait donc de patcher les href <a> (par un script dans la page, ou en Java dans le proxy via JSoup).
    L'expression "�a marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le probl�me.
    La plupart des r�ponses � vos questions sont d�j� dans les FAQs ou les Tutoriels, ou peut-�tre dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement pos�e et r�dig�e et vous aurez plus de chances de r�ponses adapt�es et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'�diteur de messages).
    Nouveau sur le forum ? Consultez Les R�gles du Club.

  3. #3
    Membre extr�mement actif Avatar de ddoumeche
    Homme Profil pro
    Ing�nieur recherche et d�veloppement
    Inscrit en
    Octobre 2007
    Messages
    1 711
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activit� : Ing�nieur recherche et d�veloppement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 711
    Par d�faut
    Bonjour,

    il faut �ventuellement consid�rer l'utilisation d'un vrai client web comme moteur de rendu dans ton application, comme Chromium si les suggestions pr�c�dentes ne marchent pas.
    https://medium.com/@daniel.bischoff/...f-72f67a677db6

    Cordialement

  4. #4
    R�dacteur/Mod�rateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Ao�t 2005
    Messages
    6 900
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : Nouvelle-Cal�donie

    Informations professionnelles :
    Activit� : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par d�faut
    Voir Displaying pdf in JavaFX sur StackOverflow qui offre divers solutions dont une reposant sur pdf.js.

    EDIT - si on extrait le contenu de la distribution du viewer dans un package webview.pdf (sans modifier l'arborescence du contenu), on peut charger la visionneuse avec le PDF d'exemple fourni via le code suivant :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    package webview.pdf;
     
    import javafx.application.Application;
    import javafx.application.Platform;
    import javafx.scene.Scene;
    import javafx.scene.layout.StackPane;
    import javafx.scene.web.WebView;
    import javafx.stage.Stage;
     
    import java.net.URL;
    import java.util.Optional;
     
    public final class Main extends Application {
        public static void main(String... args) {
            launch(args);
        }
     
        private WebView webView;
     
        @Override
        public void start(final Stage stage) throws Exception {
            webView = new WebView();
            final var root = new StackPane(webView);
            root.setPrefSize(600, 600);
            final var scene = new Scene(root);
            stage.setTitle("Test");
            stage.setScene(scene);
            stage.show();
            Platform.runLater(this::loadViewer);
        }
     
        private void loadViewer() {
            Optional.ofNullable(getClass().getResource("web/viewer.html"))
                    .map(URL::toExternalForm)
                    .ifPresent(webView.getEngine()::load);
        }
    }
    Merci de penser au tag quand une r�ponse a �t� apport�e � votre question. Aucune r�ponse ne sera donn�e � des messages priv�s portant sur des questions d'ordre technique. Les forums sont l� pour que vous y postiez publiquement vos probl�mes.

    suivez mon blog sur D�veloppez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre averti
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2016
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2016
    Messages : 31
    Par d�faut
    Bon d�j� d�sol� de ne pas vous avoir r�pondu mais j'ai �t� tr�s occup� ces derniers temps.
    Merci pour vos trois r�ponses.

    @joel.drigo Ta solution me semble correcte en th�orie. Par contre, pour la mettre en pratique, �a me semble complexe : jamais fait de proxy et je ne ma�trise pas vraiment ce fonctionnement.

    @ddoumeche J'y ai d�j� pens� et j'ai r�ussi � int�grer Chromium en remplacement de WebView. Par contre, rien ne fonctionne sauf les PDF : les vid�os ne se lisent pas, les liens sont cass�s ... Ce n'est pas vraiment plus efficace du coup ^^. De plus, JCEF (de m�moire c'est bien celui-l� que j'ai int�gr�) est extr�mement compliqu� � mettre en place.

    @bouye La solution me parait OK mais il y a un probl�me : le runlater charge le loader apr�s le chargement de la page. Or cette derni�re ne contient pas forc�ment des PDF, c'est bien �a le probl�me. Donc au chargement, � la place d'une vid�o, j'ai un loader pdf vide ^^.

    Bon je chipote car en fait, ce qu'il me faut c'est un mixe des solutions de joel.drigo et de bouye : interpr�ter le code de la page pour trapper le chargement d'un PDF et int�grer le viewer.html � la place. Pour ce faire, je vais regarder du cot� des proxy comme indiqu� plus haut. Je vais tacher de trouver des tutos et si je n'y arrive pas, je regarderais avec les evenements du genre VIEWER_NOT_FOUND ou autre.

  6. #6
    Mod�rateur
    Avatar de joel.drigo
    Homme Profil pro
    Ing�nieur R&D - D�veloppeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D - D�veloppeur Java
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par d�faut
    Quand je parle de proxy, c'est simplement un serveur interm�diaire par lequel toutes tes requ�tes locales vont passer, ce qui va te permettre d'en patcher le contenu.
    Au lieu d'attaquer une url directement, elle passe par cette application qui va faire la requ�te r�elle (appeler l'URL r�elle) r�cup�rer le r�sultat, le parser, le patcher et l'envoyer en r�ponse de la requ�te du navigateur. Ce qui veut dire �videmment en th�orie de patcher tous les "chemins" : url dans le html, dans les headers, les css, etc, pour que le navigateur passe toujours par le proxy, pour que tout soit patch�. Mais tu peux proc�der partiellement : le but c'est surtout d'intercepter du html qui contient des balise <a> qui contiennent des liens vers des pdf, de mani�re � quand on clicke sur le lien dans le navigateur, ou qu'il y ait un traitement qui provoque le lancement de ce lien, �a affiche un viewer.js au lieu de passer par le renderer natif du navigateur.

    Mais il y a peut �tre une solution beaucoup plus simple, mais non Java : faire un plugin pour le navigateur qui fait cette interception dans le navigateur, � la source, pour rediriger les requ�tes directes de pdf vers une page qui prend une url de pdf en param�tre et appel pdf.js ou viewer.js au choix. C'est un domaine que je connais que vaguement mais �a doit �tre possible.
    L'expression "�a marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le probl�me.
    La plupart des r�ponses � vos questions sont d�j� dans les FAQs ou les Tutoriels, ou peut-�tre dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement pos�e et r�dig�e et vous aurez plus de chances de r�ponses adapt�es et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'�diteur de messages).
    Nouveau sur le forum ? Consultez Les R�gles du Club.

  7. #7
    R�dacteur/Mod�rateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Ao�t 2005
    Messages
    6 900
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : Nouvelle-Cal�donie

    Informations professionnelles :
    Activit� : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par d�faut
    @Jbwils Quelle video ? Ceci est l'exemple fonctionnel de base qui charge le PDF fourni dans la distribution de viewer.js. Il va de soit que si tu veux charger un PDF lambda quelconque tu dois faire des am�nagements de code ce qui inclus entre autre :
    • �viter le chargement du fichier par d�faut (son nom est hardcod� dans les param�tres par d�faut dans viewer.js il me semble)
    • Localiser la fonction JavaScript qui permet de charger le fichier.
    • Installer un pont entre Java et Javascript
    • Rajouter le code Java permettant de s�lectionner le fichier PDF sur le disque (si c'est bien la ta probl�matique) ou de la source appropri�e (web, etc. )
    • Via le pont, demander a WebView de charger ce fichier dans viewer.js ou viewer.html


    De m�me qu'il faudra r�fl�chir sur comment proc�der pour certaines fonctionnalit�s qui peuvent �tre support�es dans un navigateur standalone (ex: Chrome, FireFox, etc.) mais pas forcement dans un tel environnement (ex: impression, sauvegarde du fichier PDF, etc.)

    EDIT - ah ok j'avais mal lu le message initial. C'est un peu plus complexe qu'une simple visionneuse donc. Hum... il te faut quand meme localiser dans le code de viewer.js ce qui permet de charger un PDF quelconque et ensuite voir comment invoquer ca avec les boutons de ta video. Cette video et ces boutons sont aussi du contenu web ou ca s'affiche directement dans Java ?
    Merci de penser au tag quand une r�ponse a �t� apport�e � votre question. Aucune r�ponse ne sera donn�e � des messages priv�s portant sur des questions d'ordre technique. Les forums sont l� pour que vous y postiez publiquement vos probl�mes.

    suivez mon blog sur D�veloppez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Membre averti
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2016
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2016
    Messages : 31
    Par d�faut
    Effectivement Bouye, c'est plus complexe qu'une simple visionneuse.
    J'ai r�solu mon probl�me : le site que j'appel va installer pdf.js afin que les visiteurs affichent la page, m�me si le browser ne poss�de pas de module PDF.
    Au final, c'est le plus sur pour eux �galement.

    En tout cas, merci pour cette discussion et ces �changes, techniques certes, mais tr�s sympas.
    Je reste persuad� que mettre un proxy est viable mais � condition de pouvoir traper tous les appels aux PDF : tous les appels doivent �tre fait de la m�me mani�re.
    Ensuite, isoler le code chargeant le PDF et l'appeler.
    Pas mal de travail au final mais compl�tement faisable pour ceux qui rencontreraient le m�me probl�me que moi. Courage � vous, vous en aurez quand m�me besoin ^^.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [FPDF] Sauvegarder les pdfs g�n�r�s dans un r�p�rtoire
    Par houdazcom dans le forum Biblioth�ques et frameworks
    R�ponses: 3
    Dernier message: 12/08/2009, 18h16
  2. Properties embarqu�es dans les artifacts
    Par Saloucious dans le forum Maven
    R�ponses: 0
    Dernier message: 14/11/2007, 16h41
  3. Convertir les fichers Excel en pdf et imprimer les pdf
    Par nautygirl dans le forum Macros et VBA Excel
    R�ponses: 5
    Dernier message: 18/10/2007, 19h28
  4. Reports des erreurs dans les PDF
    Par Arnaud F. dans le forum Traduction LDD3
    R�ponses: 0
    Dernier message: 20/07/2007, 22h49

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