iTextSharp création d'un pdf à partir d'une liste de tableaux d'octets
J'ai une liste de byte[] que je voudrais concaténer en un seul byte[] qui sera le PDf final.
Sur la "page = copie.GetImportedPage(nouveau PdfReader(p), i); " je suis un "objet de référence non définie à une instance d'erreur.
J'ai aucune idée de ce qu'il se passe, j'ai déjà vérifié chaque objet et il n'y a pas la valeur null.
Toutes les idées sur ce, ou un autre morceau de code qui pourrait rendre le truc?!
J'ai cette méthode:
MODIFIER
public static byte[] concatAndAddContent(List<byte[]> pdf)
{
byte [] todos;
using(MemoryStream ms = new MemoryStream())
{
Document doc = new Document();
doc.Open();
PdfCopy copy = new PdfCopy(doc, ms);
PdfCopyFields copy2 = new PdfCopyFields(ms);
PdfReader reader;
foreach (byte[] p in pdf)
{
reader = new PdfReader(p);
int pages = reader.NumberOfPages;
//loop over document pages
for (int i = 1; i < pages; i++)
{
PdfImportedPage page = copy.GetImportedPage(reader, i);
PdfCopy.PageStamp stamp = copy.CreatePageStamp(page);
PdfContentByte cb = stamp.GetUnderContent();
cb.SaveState();
stamp.AlterContents();
copy.AddPage(page);
}
}
doc.Close();
todos = ms.GetBuffer();
ms.Flush();
ms.Dispose();
}
return todos;
}
Trace De La Pile:
[NullReferenceException: Object reference not set to an instance of an object.]
iTextSharp.text.pdf.PdfImportedPage..ctor(PdfReaderInstance readerInstance, PdfWriter writer, Int32 pageNumber) +45
iTextSharp.text.pdf.PdfReaderInstance.GetImportedPage(Int32 pageNumber) +175
iTextSharp.text.pdf.PdfCopy.GetImportedPage(PdfReader reader, Int32 pageNumber) +256
SAM.Web.Classes.UtileriasReportes.concatAndAddContent(List`1 pdf) in \Classes\UtileriasReportes.cs:199
SAM.Web.Classes.UtileriasReportes.ObtenReporteOdt(Int32 ordenTrabajoID, Boolean caratula, Boolean juntas, Boolean cortes, Boolean materiales, Boolean resumenMateriales)
in D:\MIMOSS\Desarrollo\SAM 2.0\Desarrollo\WebSolution\SAM.Web\Classes\UtileriasReportes.cs:168
SAM.Web.Produccion.PopupImpresionOdt.btnImprimir_Click(Object sender, EventArgs e) in \PopupImpresionOdt.aspx.cs:44
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
merci pour votre temps!
source d'informationauteur valin077
Vous devez vous connecter pour publier un commentaire.
J'ai pensé à elle, juste pour que toute personne peut avoir la solution:
ici, il est:
Espère que ça aide!
Cela fonctionne:
utilisé iTextSharp-LGPL 4.1.6:
Ne sais pas si cela va résoudre le problème pour vous, mais essayez de l'initialisation GetImportedPage à partir de la page 1, pas nul, mais en utilisant
int i = 1
dans votre boucle for. Comme ceci:Regarder à travers la itextsharp code il est possible qu'il ne fonctionne pas toujours bien avec plusieurs lecteurs sur le même contenu.
Je vous suggère d'essayer
plutôt que de créer un nouveau lecteur pour chaque page que vous essayez de lire.
Mise à JOUR: je ne sais pas si l'aide mais
J'ai copié et collé votre code et j'obtiens une exception NullReferenceException mais seulement sur cette ligne
Qui est étrange, car c'est après l'endroit où vous obtenez.+
Lors du passage en mauvais contenu dans la Liste, j'ai été en mesure de produire Manquant PDF-tête, Remorque Pas trouvé, etc., donc, je ne pense pas que son une différence dans le contenu de p
J'utilise la version 5.0.4 avec le code source de la version intégrée dans VS 2008. Le client est par rapport à 2010. Peut-être ces derniers représentent la différence.
J'avais d'abord utilisé la réponse ci-dessus et les PDF ont été de très gros.. j'ai pensé qu'il serait utile de revenir et d'offrir ce lien, qui a complètement résolu ce problème avec le fichier PDF problème pour moi.
https://stackoverflow.com/a/6752769