Lire un fichier PDF au format bianire dans un WebBrowser

gppascal Messages postés 9 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 13 novembre 2012 - 10 nov. 2012 à 16:56
 GPMC - 15 nov. 2012 à 18:00
Bonjour,

Puis-je transmettre des données binaires d'un fichier de base de données dans un contrôle WebBrowser ?
Mon flux binaires est un fichier PDF.
Je peux convertir le fichier binaire en PDF sur un disque en local, mais ce n'est pas ce que je veux.

Merci d'avance.

7 réponses

MOi en fait cest le convertir en PDF sur le disk local que je recherche. Je bloque dessus. Mais ...
Pourquoi tu ne le convertis pas en local et apres tu utilises la fonction navigate du Webbrowser sur le fichier local ?
0
Utilisateur anonyme
13 nov. 2012 à 07:34
Bonjour,

Pourquoi ne pas convertir tes données binaires en une chaîne string et fournir celle-ci à la propriété DocumentText du WebBrowser ?
0
gppascal Messages postés 9 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 13 novembre 2012
13 nov. 2012 à 08:20
Bonjour,

C’était ma 2ième solution de convertir en local.

sena25fr si ça peut t’aider je joins le code que j’utilise.



Dans la table j'ai une colonne de type varbinary(MAX)

Public Sub TableauDeByteVersFicher(ByVal CheminFichier As String, ByVal TableauDeByte() As Byte)

Dim MonFileStream As New System.IO.FileStream(CheminFichier, System.IO.FileMode.Create)
MonFileStream.Write(TableauDeByte, 0, TableauDeByte.Length - 1)
MonFileStream.Close()

End Sub

Public Function FichierVersTableauDeByte(ByVal CheminFichier As String) As Byte()
Dim MonFichier As New System.IO.FileInfo(CheminFichier)
Dim MonFileStream As System.IO.FileStream = MonFichier.OpenRead()
Dim TableauDeBytes(MonFileStream.Length) As Byte

' On charge le fichier dans un tableau de byte
MonFileStream.Read(TableauDeBytes, 0, MonFileStream.Length)

' On ferme le stream
MonFileStream.Close()
Return TableauDeBytes

End Function



Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

If Me.TxtNom.Text = "" Then Exit Sub

Dim bureau As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Dim chemin As String = bureau & "\tmp" & Me.TxtNom.Text & ".pdf"

If File.Exists(chemin) Then
WebBrowser1.Navigate(chemin)
Exit Sub
End If

Using BD As New Testsqlserveur(ChaineDeConnexionMDF)
Dim Requete1 (From f In BD.Tablepdf Where f.Nom Me.TxtNom.Text Select f.Fichier).First
MesBytes = Requete1.ToArray
End Using

If MesBytes.Length > 0 Then
TableauDeByteVersFicher(chemin, MesBytes)
End If

WebBrowser1.Navigate(chemin)

End Sub
0
Merci Bcp gppascal. Ton truc m'est bcp plus clair. Bonne continuation.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gppascal Messages postés 9 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 13 novembre 2012
13 nov. 2012 à 15:52
bonjour banana32,

j'ai essayé de convertir en faisant: WebBrowser1.DocumentText = MesBytes(index).ToString

Mais ça ne marche pas
0
Utilisateur anonyme
14 nov. 2012 à 21:56
Après divers tests avec ce code :
Dim data() As Byte = IO.File.ReadAllBytes("monpdf.pdf")
Dim MonPdf As New System.Text.StringBuilder(Convert.ToBase64String(data))
WebBrowser1.DocumentText = "<object type=""application/pdf"" data=""data:application/pdf;base64," & MonPdf.ToString & """></object>"

J'en conclus que IE ne démarre pas le pluggin Adobe Reader et n'affiche donc pas le document. Par contre, ça marche avec des images ou autres fichiers.

Conclusion: tu vas devoir utiliser la solution du fichier en dur.
IO.File.WriteAllBytes("monpdf.pdf", data)
WebBrowser1.Navigate(Application.StartupPath & "\monpdf.pdf")
0
Merci banana32 d'avoir essayé.
0
Rejoignez-nous