2009-05-13 6 views
4

OK,Écrire un fichier PDF à partir d'un fichier binaire dans la base de données

J'ai une base de données SQL 2005 avec un fichier PDF stocké. La colonne utilise le type d'image. Ainsi, lorsque le PDF reçoit des magasins, il s'agit d'un tableau d'octets [].

Alors, voici la partie difficile. Je peux l'obtenir pour stocker les données, mais je ne suis pas sûr de savoir comment faire pour ramener le tableau byte [] au format PDF et l'afficher sur la page Web.

J'utilise un outil de 3ème partie pour générer le PDF, ce qui fonctionne très bien.

Le code je pour générer le byte [] tableau est la suivante:

Doc document = new Doc(); 
byte[] myArray = document.GetData(); 

insérer ensuite l'octet de tableau [] dans la base de données.

Quand je reçois le tableau arrière de la base de données que je fais ceci:

public byte[] GetPDF(parameters) 
{ 
    return DAL.GetPDF(parameters) 
} 

Ce retourne un tableau d'octets valide [] comme il est censé le faire.

Maintenant, le seul problème est d'écrire le PDF sur le site Web et de le faire afficher sur le site Web, je ne suis pas sûr de savoir comment le faire ou par où commencer.

+0

Bon, après avoir regardé les réponses 2 sont correctes. Lequel dois-je choisir comme bonne réponse? Je suis nouveau à ceci et ne veux offenser personne ... –

+2

C'est votre choix vraiment. Mais je choisirais celui qui est le plus efficace pour vous et le code le plus efficace. – CodeLikeBeaker

+0

choisissez-moi, lol! Je plaisante – DaDa

Répondre

3
 Response.ContentType = "application/pdf"; 
     byte[] bytes = YourBinaryContent; 

     using (BinaryWriter writer = new BinaryWriter(context.Response.OutputStream)) 
     { 
      writer.Write(bytes, 0, bytes.Length); 
     } 
+0

okay je vais essayer cela –

+0

Celui-ci n'a pas fonctionné pour moi ... contexte lance une erreur, est-ce une faute de frappe? –

+0

contexte est un HttpContext passant au gestionnaire qui affiche votre fichier PDF. Vous pouvez le supprimer quand même – DaDa

1

Vous devez définir le Response.ContentType sur "application/pdf", puis appeler la méthode Response.BinaryWrite en transmettant les données d'octet.

2

C'est assez simple. En fait, je l'ai fait il y a un mois. Nous avons dû stocker le PDF dans la base de données, puis l'écrire lorsque le client a demandé à voir son document.

Ce que vous devez faire est sur votre page web ajoutez le code suivant:

byte[] myarray = BusinessLayer.GetPDF(parameters) 

Response.Clear(); 
Response.ContentType = "application/pdf"; 
Response.BinaryWrite(myarray); 

Voir si cela fonctionne pour toi.

+0

okay je vais essayer cela –

+0

celui-ci a travaillé, mais je regarde les autres réponses aussi –

Questions connexes