iTextSharp Erstellung eines pdf aus einer Liste von byte-arrays
Ich habe eine Liste von byte [], was ich möchte verketten in ein byte [], die die endgültige PDf-Datei.
Auf dem "page = "kopieren".GetImportedPage(new PdfReader(p), i); " ich bin immer ein "object reference not set to an instance Fehler.
Ich habe keine Ahnung, was Los ist, hab ich schon überprüft jedes Objekt und es gibt keine null.
Irgendwelche Ideen zu diesem oder einem anderen Stück code, das könnte der trick?!
Habe ich diese Methode:
BEARBEITEN
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;
}
Stack Trace:
[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
vielen Dank für Ihre Zeit!
InformationsquelleAutor der Frage valin077 | 2010-10-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es herausgefunden, nur damit alle Interessenten können die Lösung gefunden zu haben:
hier ist es:
Hoffe, das hilft!
InformationsquelleAutor der Antwort valin077
Dies funktioniert:
verwendet iTextSharp-LGPL 4.1.6:
InformationsquelleAutor der Antwort Nina
Nicht sicher, ob dies wird lösen es für Sie, aber versuchen Sie, die Initialisierung GetImportedPage beginnend bei Seite 1, nicht null, sondern usng
int i = 1
in deiner for-Schleife. Wie diese:InformationsquelleAutor der Antwort Jay Riggs
Suchen, obwohl die itextsharp code ist es möglich, dass es nicht immer gut mit mehrere Leser auf den gleichen Inhalt.
Ich schlage vor, Sie versuchen
anstatt eine neue zu erstellen Leser jede Seite, die Sie versuchen zu Lesen.
UPDATE: ich weiß nicht, ob das hilft, aber
Ich kopiert und eingefügt den code und bekomme ich eine NullReferenceException-aber nur auf dieser Linie
Das ist seltsam, denn das ist nach immer, wo Sie ihn.+
Wenn man schlechte Inhalte in der Liste, die ich war in der Lage zu produzieren, die Fehlende PDF-header, Trailer Nicht gefunden etc., also ich glaube nicht, dass es einen Unterschied im Inhalt von p
Ich mit der version 5.0.4 mit dem source-code-version gebaut, in VS 2008. Der client ist vs 2010. Vielleicht ist diese Rechnung für die Differenz.
InformationsquelleAutor der Antwort Conrad Frix
Hatte ich zunächst die obige Antwort und die PDF ' s waren sehr groß.. ich dachte, es würde hilfreich sein, wieder zu kommen, und bieten diese Verbindung, welche vollständig gelöst wird dieses Problem zusammen mit der GROßEN PDF-Problem für mich.
https://stackoverflow.com/a/6752769
InformationsquelleAutor der Antwort Mike Wallace