2013-06-08 2 views
1

J'écris une application JavaFX qui utilise WebView pour accéder à un site Web et extraire des données de ses pages. À un moment donné, je veux cliquer sur un lien qui ouvre une nouvelle fenêtre qui affiche un fichier PDF. Avec la chance de support PDF dans JavaFX je pense qu'une solution possible pourrait être de lire la réponse http pour ce PDF et de créer le formulaire PDF les données binaires.JavaFX - Créer un pdf à partir de données binaires

L'URL de la page PDF est dynamique, je n'ai donc pas le nom réel du fichier et je ne peux donc pas utiliser d'outils tiers pour générer le pdf.

Toutes les pensées seraient très appréciées.

Merci

Répondre

1

Lancement d'un PDF basées sur Swing Viewer

Voici un code extract d'un petit navigateur web (nommé le willow-browser) je l'ai écrit dans JavaFX:

webEngine.locationProperty().addListener(new ChangeListener<String>() { 
    @Override public void changed(ObservableValue<? extends String> observableValue, String oldLoc, String newLoc) { 
    if (newLoc.endsWith(".pdf")) { 
     try { 
     final PDFViewer pdfViewer = new PDFViewer(false); 
     pdfViewer.openFile(new URL(newLoc)); 
     } catch (Exception ex) { 
     // handle bad pdf url . . . most likely no action required 
     } 
    } 
    } 
} 

Le code fait l'utilisation d'une visionneuse PDF basée sur Swing 3rd party qu'elle lance pour charger l'URL. Étant donné que la visionneuse de fichiers PDF de Swing s'exécute dans une fenêtre séparée, il n'y a pas eu de problèmes d'intégration Swing/JavaFX autour de celle-ci - cela semble fonctionner. Pour le faire fonctionner, vous pouvez télécharger une copie de la source du navigateur de saule et la construire (l'exemple de fichier binaire hébergé sur le site n'inclut pas la visionneuse pdf, seules les versions sources le font). Idéalement, le code interroge le type de contenu http en plus de la chaîne uri pour déterminer que le fichier est un pdf, mais cela nécessite un peu d'accès au réseau de bas niveau qui est difficile à obtenir dans le cas de WebView . Si vous n'êtes pas soucieux d'être parfaitement précis dans la détection du contenu PDF sur de nombreux sites, il ne sera pas vraiment important si vous n'utilisez pas le type de contenu pour déterminer les fichiers PDF.

Il existe d'autres visualiseurs PDF autour desquels vous pouvez essayer si la visionneuse de fichiers PDF Swing ne vous fournit pas l'expérience que vous souhaitez, par ex. jpedalfx ou ICEpdf.

Lancer une visionneuse PDF natif

Si vous préférez, vous pouvez appeler HostServices.showDocument(uri) sur l'URL pdf et qui déclenchera pour ouvrir l'URL dans un navigateur web local, dont certains ont construit les téléspectateurs PDF ou sont configurer pour visualiser le pdf en utilisant le lecteur Acrobat.

Le code pour déterminer l'URL pour le pdf à afficher est le même dans ce cas que le code ci-dessus.

+0

Merci pour la réponse rapide. Mon problème est que l'URL du pdf est dynamique. Les pages Web auxquelles j'accède ont été créées à l'aide des pages ADF d'Oracle. Afin d'envoyer l'url au navigateur local, j'ai besoin de connaître l'URL qui n'est pas connue jusqu'à ce que vous appuyez sur le lien. Ce n'est même pas le href de l'étiquette dans le code HTML. Enfin l'actuall url n'a pas de .pdf à la fin. Pensez-vous que votre solution ci-dessus fonctionnera? En tout cas, je vais essayer plus tard et afficher mes résultats. –

+0

Cela peut s'avérer difficile pour vous, bonne chance. – jewelsea

+0

Merci, j'en aurai besoin –

Questions connexes