Ajouter un pdf à un pdf avec SharpPDF

Ajouter un pdf à un pdf avec SharpPDF - C#/.NET managed - Programmation

Marsh Posté le 07-09-2010 à 14:25:00    

Bonjour,
 
J'ai un fichier pdf qui est stocké en base, ensuite j'ai un outil qui genere des factures PDF.
 
J'aurais besoin d'ajouter à la fin de ces factures le fichier pdf qui est dans ma base de données, avez vous une piste sur comment je peux faire ça ?
 
(Pour générer mes facture en pdf j'utilise SharpPDF)
 
Merci.


---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
Reply

Marsh Posté le 07-09-2010 à 14:25:00   

Reply

Marsh Posté le 07-09-2010 à 21:27:11    

comprend pas. Genre tu as une version binaire d'un PDF dans ta base, tu as un PDF que tu génères à la volée par SharpPDF et tu souhaiterais insérer à la fin de celui-ci le contenu de ton autre PDF ?
 
Dans ce cas, tu peux l'ouvrir avec sharp pdf cet autre pdf ? et en importer le contenu à la fin de ton fichier en construction ?
 
Tu ne nous donnes aucune info sur ce que tu as déjà tenté, intuitivement si j'ai bien compris ton problème ce que je dis au dessus c'est la premiere chose qui vient à l'esprit en terme de principe...


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 08-09-2010 à 11:45:30    

J'ai un fichier pdf dans ma BDD qui est encodé dans un champ Text.
 
Dans mon application je génère des facture avec SharpPDF ce que je voudrais c'est ajouter le PDF qui est stocké dans ma BDD à la fin de mes facture générées.
 
Le problème c'est que je ne vois pas comment faire ça... tu l'ouvres comment le PDF avec SharpPDF, je ne vois rien là dessus dans la doc.


Message édité par manu f le 08-09-2010 à 11:46:29

---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
Reply

Marsh Posté le 08-09-2010 à 17:33:58    

Le problème c'est que je vais mettre trop de temps pour tout recoder avec un autre framework.
 
Si quelqu'un à une solution je suis preneur.


---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
Reply

Marsh Posté le 09-09-2010 à 09:58:01    

Ouais, ça n'est pas élégant du tout mais techniquement tant que la génération du pdf initial et l'édition du second sont dissociées c'est parfaitement possible !
itextsharp permet l'ouverture et l'édition d'un pdf existant, on doit aussi pouvoir importer des segments d'un autre pdf.
http://kuujinbo.info/iTextInAction [...] =StampText (ça n'est qu'un exemple d'ouverture de fichier et d'écriture dedans, pas de ce que tu veux faire)


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 09-09-2010 à 10:10:36    

c'est parce qu'au lieu de blaguer ici tu devrais plutôt trouver des trucs pour faire remonter le topic en question, il est à l'abandon depuis 15j :na: :ange:


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 09-09-2010 à 10:41:14    

Genre :o
J'en avais bien un à proposer, je lance ça là bas. Et on arrête de polluer ici :d


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 13-09-2010 à 17:18:26    

J'envisage de lire et d'extraire le contenu de mon fichier pdf qui est stocker en base.  
Puis d'ajouter ce contenu (que j'aurais stocker dans un string) à la fin de chaque facture généré.
 
Voilà ce que j'ai écris :

Code :
  1. protected string readPDF(int id, bool doc)
  2.     {
  3. ...
  4.         string connectionstring = ConfigurationManager.ConnectionStrings["AppConnectionString"].ToString();
  5.         if (connectionstring == null)
  6.             throw (new ***WebArgumentException("La ConnexionString AppConnectionString n'est pas renseignée.";));
  7.         SqlConnection sconn = new SqlConnection(connectionstring);
  8.         SqlCommand sComm = new SqlCommand(req, sconn);
  9.         sComm.CommandType = CommandType.Text;
  10.         sComm.Parameters.Add("@id", SqlDbType.Int).Value = id.ToString();
  11.         sconn.Open();
  12.         sComm.ExecuteNonQuery();
  13.         string fichier = " ";
  14.         SqlDataReader sr = sComm.ExecuteReader();
  15.         if (sr.Read())
  16.         {
  17.             fichier = (string)sr["Fichier"];
  18.             fichier = ***WebTools.Base64Decode(fichier);
  19.         }
  20.         sr.Close();
  21.         sComm.Dispose();
  22.         sconn.Close();
  23.         return fichier;
  24.     }


L'appel de cette méthode : (qui fonctionne correctement)

Code :
  1. string contentPDF = readPDF(1, true);
  2.             myPage.addText(contentPDF, 10, currentY, myDoc.getFontReference("Helvetica";), 8, pdfColor.LightGray);


Le problème c'est que ça me balance un

Citation :

La référence d'objet n'est pas définie à une instance d'un objet


J'ai testé ma méthode en mettant en dur un return "test fichier" et à la fin de ma facture j'ai bien "test fichier".  
 
J'en conclue donc que le problème vient du contenu de ma variable fichier et pas de son appel.
 
Avez vous une idée afin de résoudre mon problème ?
 
Note :
Mon fichier PDF est encodé dans un champ TEXT dans une base SqlServer 2005


Message édité par manu f le 13-09-2010 à 17:20:18

---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
Reply

Marsh Posté le 14-09-2010 à 10:07:15    

Désolé je ne connais pas SharpPDF, mais je connais la structure interne des fichiers PDF, et donc, pour infos, chaque fichier PDF a au moins une table d'index interne, et c'est à cause de cela qu'il est difficile de concaténer deux fichiers PDF, car il faut obligatoirement recréer l'index commun d'une manière ou d'une autre. Donc la solution est d'importer le PDF, mais en décomposant tous ses éléments, ce qui ne peut, peut-être, pas se faire avec SharpPDF, je ne sais pas, puis de recomposer un nouveau PDF. Si ce n'est pas possible avec SharpPDF, alors il faut utiliser d'autres outils.

Reply

Marsh Posté le 19-09-2010 à 11:30:52    

moi j'utilise iTextSharp pour concaténer des PDF. c'est gratuit et ça marche très bien.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

Marsh Posté le 19-09-2010 à 11:30:52   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed