Tôi đã có một danh sách các byte [] mà tôi muốn nối vào một byte [] sẽ là PDf cuối cùng.Tạo iTextSharp một pdf từ danh sách các mảng byte
Trên "page = copy.GetImportedPage (PdfReader mới (p), i);" tôi nhận được một "tài liệu tham khảo đối tượng không được đặt để một lỗi dụ
tôi đã không có manh mối về những gì. xảy ra, tôi đã kiểm tra tất cả các đối tượng và không có vô
Bất kỳ ý tưởng về vấn đề này, hoặc một đoạn mã mà có thể làm các trick ?!
tôi đã có phương pháp này:.
EDIT
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
nhờ thời gian của bạn!
bạn có thể đăng stack trace –
tôi đã thêm stacktrace. Cảm ơn vì đã dành thời gian cho tôi! – valin077
Chỉ là một điều nhỏ nhặt để chỉ ra. Bởi vì GetImportedPage không phải là 0 dựa, bạn phải bắt đầu i val của bạn tại 1. Chỉ cần chắc chắn rằng bây giờ giá trị trang của bạn (NumberOfPages) cho phép bạn để có được tất cả các dữ liệu của bạn. Ngay bây giờ bạn dường như đang thiếu trang cuối cùng của bất kỳ tài liệu PDF nào. – Crag