public static void Test_PdfExportDeflatedStream_01(string pdfFile, int idObject, string streamFile) { _tr.WriteLine("export stream object {0} of pdf file \"{1}\" to \"{2}\"", idObject, pdfFile, streamFile); PB_Pdf.PdfReader pr = null; Writer w = null; try { pr = new PB_Pdf.PdfReader(pdfFile); IPdfObject obj = ReadPdfObject(pr, idObject, "Object"); w = new Writer(streamFile, FileMode.Create); if (obj.deflatedStream != null) { w.Write(obj.deflatedStream); } } finally { if (pr != null) { pr.Close(); } if (w != null) { w.Close(); } } }
public static void Test_GetPdfText_01(String file) { _tr.WriteLine("read pdf file \"{0}\"", file); PB_Pdf.PdfReader pr = new PB_Pdf.PdfReader(file); try { IPdfObject obj = ReadPdfObject(pr, 1138, "Object"); } finally { pr.Close(); } }
public static IPdfObject ReadPdfObject(PB_Pdf.PdfReader pr, int id, string name) { _tr.WriteLine(); //int id = ((PdfValueObject)(pr.Trailer.values["Root"].value)).id; _tr.WriteLine("read {0} object {1}", name, id); IPdfObject o = pr.ReadObject(id); _tr.WriteLine("{0} object {1}", name, id); PrintPdfObject(o); if (o.source != null && logSource) { _tr.WriteLine("Source {0} object {1}", name, id); _tr.WriteLine(o.source); } return(o); }
public static void Test_PdfExportDeflatedStream_02(String pdfFile, int objectId, string streamFile) { Writer w = null; _tr.WriteLine("export stream object {0} pdf file \"{1}\" to \"{2}\"", objectId, pdfFile, streamFile); PB_Pdf.PdfReader pr = new PB_Pdf.PdfReader(pdfFile); try { IPdfObject obj = ReadPdfObject(pr, objectId, "Object"); if (obj.deflatedStream == null) { _tr.WriteLine("no stream"); return; } _tr.WriteLine("read data"); //IPdfInstruction[] instructions = PdfDataReader.PdfReadAll(obj.deflatedStream); PdfDataReader pdr = new PdfDataReader(obj.deflatedStream); //pdr.Trace += new TraceDelegate(_tr.WriteLine); IPdfInstruction[] instructions = pdr.ReadAll(); _tr.WriteLine("{0} instructions", instructions.Length); //var q = from instruction in instructions select instruction.opeString; //foreach (string opeString in q.Distinct().OrderBy(opeString => opeString)) //{ // _tr.WriteLine(opeString); //} w = new Writer(streamFile, FileMode.Create); foreach (IPdfInstruction instruction in instructions) { //_tr.WriteLine(instruction); //w.WriteLine(instruction.ToString()); instruction.Export(w); } } finally { if (w != null) { w.Close(); } pr.Close(); } }
public static void Test_GetPdfText_08(String file) { PB_Pdf.PdfWriter pw = null; string file2 = zpath.PathSetFileName(file, Path.GetFileNameWithoutExtension(file) + "_new"); _tr.WriteLine("read pdf file \"{0}\"", file); _tr.WriteLine("save pdf to file \"{0}\"", file2); PB_Pdf.PdfReader pr = new PB_Pdf.PdfReader(file); pr.Trace += new TraceDelegate(_tr.WriteLine); try { pw = new PB_Pdf.PdfWriter(file2, FileMode.Create); pw.reader = pr; IPdfObject info = ReadPdfObject(pr, pr.Trailer["Info"].value.valueObjectId, "Info"); pw.WriteObject(info, "Info"); IPdfObject root = ReadPdfObject(pr, pr.Trailer["Root"].value.valueObjectId, "Root"); pw.WriteObject(root, "Root"); IPdfObject pages = ReadPdfObject(pr, root.value["Pages"].value.valueObjectId, "Pages"); pages.value["Kids"].value.arrayValues = new IPdfValue[] { pages.value["Kids"].value.arrayValues[0] }; pages.value["Count"].value.valueInt = 1; pw.WriteObject(pages); IPdfObject page1 = ReadPdfObject(pr, pages.value["Kids"].value[0].valueObjectId, "Page 1"); pw.WriteObject(page1); IPdfObject page1Content = ReadPdfObject(pr, page1.value["Contents"].value.valueObjectId, "Contents page 1"); page1Content.value.objectValues.Remove("Filter"); page1Content.stream = page1Content.deflatedStream; page1Content.value.objectValues["Length"].value.valueInt = page1Content.stream.Length; pw.WriteObject(page1Content); IPdfObject page1Ressource = ReadPdfObject(pr, page1.value["Resources"].value.valueObjectId, "Resources page 1"); Dictionary<string, PdfNValue> objectValues = new Dictionary<string, PdfNValue>(); objectValues["TPL1"] = page1Ressource.value["XObject"].value["TPL1"]; page1Ressource.value["XObject"].value.objectValues = objectValues; pw.WriteObject(page1Ressource); IPdfObject page1Ressource_01 = ReadPdfObject(pr, page1Ressource.value["XObject"].value["TPL1"].value.valueObjectId, "Resources page 1 /TPL1"); page1Ressource_01.value.objectValues.Remove("Filter"); page1Ressource_01.stream = page1Ressource_01.deflatedStream; page1Ressource_01.value.objectValues["Length"].value.valueInt = page1Ressource_01.stream.Length; pw.WriteObjectWithChilds(page1Ressource_01); //IPdfObject page1Ressource_ProcSet = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["ProcSet"].value.valueObjectId, "Resources page 1 /TPL1 ProcSet"); //IPdfObject page1Ressource_Font_01 = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["Font"].value["F23"].value.valueObjectId, "Resources page 1 /TPL1 Font F23"); //IPdfObject page1Ressource_Font_01_Widths = ReadPdfObject(pr, page1Ressource_Font_01.value["Widths"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 Widths"); //IPdfObject page1Ressource_Font_01_Encoding = ReadPdfObject(pr, page1Ressource_Font_01.value["Encoding"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 Encoding"); //IPdfObject page1Ressource_Font_01_FontDescriptor = ReadPdfObject(pr, page1Ressource_Font_01.value["FontDescriptor"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 FontDescriptor"); //IPdfObject page1Ressource_Font_01_FontDescriptor_FontFile3 = ReadPdfObject(pr, page1Ressource_Font_01_FontDescriptor.value["FontFile3"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 FontDescriptor FontFile3"); //IPdfObject page1Ressource_Font_01_ToUnicode = ReadPdfObject(pr, page1Ressource_Font_01.value["Widths"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 ToUnicode"); //IPdfObject page1Ressource_Img_01 = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["XObject"].value["img8"].value.valueObjectId, "Resources page 1 /TPL1 XObject img8"); //IPdfObject page1Ressource_Img_01_Length = ReadPdfObject(pr, page1Ressource_Img_01.value["Length"].value.valueObjectId, "Resources page 1 /TPL1 XObject img8 Length"); //IPdfObject page1Ressource_OPMON = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["ExtGState"].value["OPMON"].value.valueObjectId, "Resources page 1 /TPL1 ExtGState OPMON"); } finally { pr.Close(); if (pw != null) pw.Close(); } }
//public static void Test_GetPdfText_01() //{ // string file = @"c:\pib\media\print\Le monde\_quotidien\Le monde - 2012-12\Le monde - 2012-12-06 - no 21113.pdf"; // _tr.WriteLine("read pdf file \"{0}\"", file); // string s = Test_GetPdfText_01(file); // _tr.WriteLine(s); // //PdfTextExtractor.GetTextFromPage(); // //ITextExtractionStrategy // // iTextSharp.text.pdf.parser.LocationTextExtractionStrategy //} public static void Test_GetPdfText_07(String file) { _tr.WriteLine("read pdf file \"{0}\"", file); PB_Pdf.PdfReader pr = new PB_Pdf.PdfReader(file); pr.KeepObjectSource = true; try { //_tr.WriteLine(); //_tr.WriteLine("read xref position"); //pr.ReadXrefPosition(); //_tr.WriteLine("xref table position : {0}", pr.XrefPosition.zToHex()); //_tr.WriteLine(); //_tr.WriteLine("read xref headers"); //pr.ReadXrefHeaders(); //_tr.WriteLine("trailer position : {0}", pr.TrailerPosition.zToHex()); //_tr.WriteLine("objects number : {0}", pr.ObjectsNumber); //foreach (PdfXrefHeader header in pr.XrefHeaders) //{ // _tr.WriteLine("xref header : pos {0} id {1} nb {2}", header.filePosition.zToHex(), header.objectId, header.objectNb); //} //_tr.WriteLine(); //_tr.WriteLine("read trailer"); //pr.ReadTrailer(); _tr.WriteLine("trailer"); //PrintPdfObject(pr.Trailer); PrintPdfTrailer(pr.Trailer); //if (pr.Trailer.source != null) //{ // _tr.WriteLine("Source trailer"); // _tr.WriteLine(pr.Trailer.source); //} //_tr.WriteLine(); //_tr.WriteLine("read xref"); //pr.ReadXref(); //int i = 0; //foreach (PdfXref xref in pr.Xref.Values) //{ // _tr.WriteLine("xref : id {0,5} pos {1} generation {2}", xref.objectId, xref.filePosition.zToHex(), xref.generationNumber); // if (++i == 10) break; //} //IPdfObject info = ReadPdfObject(pr, pr.Trailer["Info"].valueObjectId, "Info"); IPdfObject info = ReadPdfObject(pr, pr.Trailer["Info"].value.valueObjectId, "Info"); IPdfObject root = ReadPdfObject(pr, pr.Trailer["Root"].value.valueObjectId, "Root"); IPdfObject pages = ReadPdfObject(pr, root.value["Pages"].value.valueObjectId, "Pages"); IPdfObject page1 = ReadPdfObject(pr, pages.value["Kids"].value[0].valueObjectId, "Page 1"); IPdfObject page1Content = ReadPdfObject(pr, page1.value["Contents"].value.valueObjectId, "Contents page 1"); IPdfObject page1Ressource = ReadPdfObject(pr, page1.value["Resources"].value.valueObjectId, "Resources page 1"); //IPdfObject page1Ressource_01 = ReadPdfObject(pr, 59, "Contents page 1 (2)"); IPdfObject page1Ressource_01 = ReadPdfObject(pr, page1Ressource.value["XObject"].value["TPL1"].value.valueObjectId, "Resources page 1 /TPL1"); IPdfObject page1Ressource_ProcSet = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["ProcSet"].value.valueObjectId, "Resources page 1 /TPL1 ProcSet"); IPdfObject page1Ressource_Font_01 = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["Font"].value["F23"].value.valueObjectId, "Resources page 1 /TPL1 Font F23"); IPdfObject page1Ressource_Font_01_Widths = ReadPdfObject(pr, page1Ressource_Font_01.value["Widths"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 Widths"); IPdfObject page1Ressource_Font_01_Encoding = ReadPdfObject(pr, page1Ressource_Font_01.value["Encoding"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 Encoding"); IPdfObject page1Ressource_Font_01_FontDescriptor = ReadPdfObject(pr, page1Ressource_Font_01.value["FontDescriptor"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 FontDescriptor"); IPdfObject page1Ressource_Font_01_FontDescriptor_FontFile3 = ReadPdfObject(pr, page1Ressource_Font_01_FontDescriptor.value["FontFile3"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 FontDescriptor FontFile3"); IPdfObject page1Ressource_Font_01_ToUnicode = ReadPdfObject(pr, page1Ressource_Font_01.value["Widths"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 ToUnicode"); IPdfObject page1Ressource_Img_01 = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["XObject"].value["img8"].value.valueObjectId, "Resources page 1 /TPL1 XObject img8"); IPdfObject page1Ressource_Img_01_Length = ReadPdfObject(pr, page1Ressource_Img_01.value["Length"].value.valueObjectId, "Resources page 1 /TPL1 XObject img8 Length"); IPdfObject page1Ressource_OPMON = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["ExtGState"].value["OPMON"].value.valueObjectId, "Resources page 1 /TPL1 ExtGState OPMON"); //_tr.WriteLine("stream as string :"); //_tr.WriteLine(page1Ressource_01.deflatedStream.zzToString()); //_tr.WriteLine(); //IPdfObject obj = ReadPdfObject(pr, 1043, "Object 1043"); } finally { pr.Close(); } }
public static void Test_PdfImportStream_01(string inputPdfFile, string outputPdfFile, string streamFile) { _tr.WriteLine("import stream for object TPL1 of pdf file \"{0}\" from \"{1}\" and save pdf to \"{2}\"", inputPdfFile, streamFile, outputPdfFile); PB_Pdf.PdfReader pr = null; Reader r = null; PB_Pdf.PdfWriter pw = null; try { pr = new PB_Pdf.PdfReader(inputPdfFile); //IPdfObject obj = ReadPdfObject(pr, idObject, "Object"); r = new Reader(streamFile); //obj.stream = r.ReadBytes((int)r.Length); //PdfNValue length = obj.value["Length"]; //if (length == null || !length.value.isInt()) throw new PBException("error wrong /Length of object {0}", idObject); //length.value.valueInt = obj.stream.Length; pw = new PB_Pdf.PdfWriter(outputPdfFile, FileMode.Create); pw.reader = pr; IPdfObject info = ReadPdfObject(pr, pr.Trailer["Info"].value.valueObjectId, "Info"); pw.WriteObject(info, "Info"); IPdfObject root = ReadPdfObject(pr, pr.Trailer["Root"].value.valueObjectId, "Root"); pw.WriteObject(root, "Root"); IPdfObject pages = ReadPdfObject(pr, root.value["Pages"].value.valueObjectId, "Pages"); pw.WriteObject(pages); IPdfObject page1 = ReadPdfObject(pr, pages.value["Kids"].value[0].valueObjectId, "Page 1"); pw.WriteObject(page1); IPdfObject page1Content = ReadPdfObject(pr, page1.value["Contents"].value.valueObjectId, "Contents page 1"); pw.WriteObject(page1Content); IPdfObject page1Ressource = ReadPdfObject(pr, page1.value["Resources"].value.valueObjectId, "Resources page 1"); pw.WriteObject(page1Ressource); IPdfObject page1Ressource_01 = ReadPdfObject(pr, page1Ressource.value["XObject"].value["TPL1"].value.valueObjectId, "Resources page 1 /TPL1"); // import stream from file page1Ressource_01.stream = r.ReadBytes((int)r.Length); PdfNValue length = page1Ressource_01.value["Length"]; if (length == null || !length.value.isInt()) throw new PBException("error wrong /Length of object {0}", page1Ressource_01.id); length.value.valueInt = page1Ressource_01.stream.Length; pw.WriteObjectWithChilds(page1Ressource_01); } finally { if (pr != null) pr.Close(); if (r != null) r.Close(); if (pw != null) pw.Close(); } }
public static void Test_PdfExportDeflatedStream_01(string pdfFile, int idObject, string streamFile) { _tr.WriteLine("export stream object {0} of pdf file \"{1}\" to \"{2}\"", idObject, pdfFile, streamFile); PB_Pdf.PdfReader pr = null; Writer w = null; try { pr = new PB_Pdf.PdfReader(pdfFile); IPdfObject obj = ReadPdfObject(pr, idObject, "Object"); w = new Writer(streamFile, FileMode.Create); if (obj.deflatedStream != null) w.Write(obj.deflatedStream); } finally { if (pr != null) pr.Close(); if (w != null) w.Close(); } }
public static void Test_PdfExportDeflatedStream_02(String pdfFile, int objectId, string streamFile) { Writer w = null; _tr.WriteLine("export stream object {0} pdf file \"{1}\" to \"{2}\"", objectId, pdfFile, streamFile); PB_Pdf.PdfReader pr = new PB_Pdf.PdfReader(pdfFile); try { IPdfObject obj = ReadPdfObject(pr, objectId, "Object"); if (obj.deflatedStream == null) { _tr.WriteLine("no stream"); return; } _tr.WriteLine("read data"); //IPdfInstruction[] instructions = PdfDataReader.PdfReadAll(obj.deflatedStream); PdfDataReader pdr = new PdfDataReader(obj.deflatedStream); //pdr.Trace += new TraceDelegate(_tr.WriteLine); IPdfInstruction[] instructions = pdr.ReadAll(); _tr.WriteLine("{0} instructions", instructions.Length); //var q = from instruction in instructions select instruction.opeString; //foreach (string opeString in q.Distinct().OrderBy(opeString => opeString)) //{ // _tr.WriteLine(opeString); //} w = new Writer(streamFile, FileMode.Create); foreach (IPdfInstruction instruction in instructions) { //_tr.WriteLine(instruction); //w.WriteLine(instruction.ToString()); instruction.Export(w); } } finally { if (w != null) w.Close(); pr.Close(); } }
public static void Test_GetPdfText_08(String file) { PB_Pdf.PdfWriter pw = null; string file2 = zpath.PathSetFileName(file, Path.GetFileNameWithoutExtension(file) + "_new"); _tr.WriteLine("read pdf file \"{0}\"", file); _tr.WriteLine("save pdf to file \"{0}\"", file2); PB_Pdf.PdfReader pr = new PB_Pdf.PdfReader(file); pr.Trace += new TraceDelegate(_tr.WriteLine); try { pw = new PB_Pdf.PdfWriter(file2, FileMode.Create); pw.reader = pr; IPdfObject info = ReadPdfObject(pr, pr.Trailer["Info"].value.valueObjectId, "Info"); pw.WriteObject(info, "Info"); IPdfObject root = ReadPdfObject(pr, pr.Trailer["Root"].value.valueObjectId, "Root"); pw.WriteObject(root, "Root"); IPdfObject pages = ReadPdfObject(pr, root.value["Pages"].value.valueObjectId, "Pages"); pages.value["Kids"].value.arrayValues = new IPdfValue[] { pages.value["Kids"].value.arrayValues[0] }; pages.value["Count"].value.valueInt = 1; pw.WriteObject(pages); IPdfObject page1 = ReadPdfObject(pr, pages.value["Kids"].value[0].valueObjectId, "Page 1"); pw.WriteObject(page1); IPdfObject page1Content = ReadPdfObject(pr, page1.value["Contents"].value.valueObjectId, "Contents page 1"); page1Content.value.objectValues.Remove("Filter"); page1Content.stream = page1Content.deflatedStream; page1Content.value.objectValues["Length"].value.valueInt = page1Content.stream.Length; pw.WriteObject(page1Content); IPdfObject page1Ressource = ReadPdfObject(pr, page1.value["Resources"].value.valueObjectId, "Resources page 1"); Dictionary <string, PdfNValue> objectValues = new Dictionary <string, PdfNValue>(); objectValues["TPL1"] = page1Ressource.value["XObject"].value["TPL1"]; page1Ressource.value["XObject"].value.objectValues = objectValues; pw.WriteObject(page1Ressource); IPdfObject page1Ressource_01 = ReadPdfObject(pr, page1Ressource.value["XObject"].value["TPL1"].value.valueObjectId, "Resources page 1 /TPL1"); page1Ressource_01.value.objectValues.Remove("Filter"); page1Ressource_01.stream = page1Ressource_01.deflatedStream; page1Ressource_01.value.objectValues["Length"].value.valueInt = page1Ressource_01.stream.Length; pw.WriteObjectWithChilds(page1Ressource_01); //IPdfObject page1Ressource_ProcSet = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["ProcSet"].value.valueObjectId, "Resources page 1 /TPL1 ProcSet"); //IPdfObject page1Ressource_Font_01 = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["Font"].value["F23"].value.valueObjectId, "Resources page 1 /TPL1 Font F23"); //IPdfObject page1Ressource_Font_01_Widths = ReadPdfObject(pr, page1Ressource_Font_01.value["Widths"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 Widths"); //IPdfObject page1Ressource_Font_01_Encoding = ReadPdfObject(pr, page1Ressource_Font_01.value["Encoding"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 Encoding"); //IPdfObject page1Ressource_Font_01_FontDescriptor = ReadPdfObject(pr, page1Ressource_Font_01.value["FontDescriptor"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 FontDescriptor"); //IPdfObject page1Ressource_Font_01_FontDescriptor_FontFile3 = ReadPdfObject(pr, page1Ressource_Font_01_FontDescriptor.value["FontFile3"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 FontDescriptor FontFile3"); //IPdfObject page1Ressource_Font_01_ToUnicode = ReadPdfObject(pr, page1Ressource_Font_01.value["Widths"].value.valueObjectId, "Resources page 1 /TPL1 Font F23 ToUnicode"); //IPdfObject page1Ressource_Img_01 = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["XObject"].value["img8"].value.valueObjectId, "Resources page 1 /TPL1 XObject img8"); //IPdfObject page1Ressource_Img_01_Length = ReadPdfObject(pr, page1Ressource_Img_01.value["Length"].value.valueObjectId, "Resources page 1 /TPL1 XObject img8 Length"); //IPdfObject page1Ressource_OPMON = ReadPdfObject(pr, page1Ressource_01.value["Resources"].value["ExtGState"].value["OPMON"].value.valueObjectId, "Resources page 1 /TPL1 ExtGState OPMON"); } finally { pr.Close(); if (pw != null) { pw.Close(); } } }
public static void Test_PdfImportStream_01(string inputPdfFile, string outputPdfFile, string streamFile) { _tr.WriteLine("import stream for object TPL1 of pdf file \"{0}\" from \"{1}\" and save pdf to \"{2}\"", inputPdfFile, streamFile, outputPdfFile); PB_Pdf.PdfReader pr = null; Reader r = null; PB_Pdf.PdfWriter pw = null; try { pr = new PB_Pdf.PdfReader(inputPdfFile); //IPdfObject obj = ReadPdfObject(pr, idObject, "Object"); r = new Reader(streamFile); //obj.stream = r.ReadBytes((int)r.Length); //PdfNValue length = obj.value["Length"]; //if (length == null || !length.value.isInt()) throw new PBException("error wrong /Length of object {0}", idObject); //length.value.valueInt = obj.stream.Length; pw = new PB_Pdf.PdfWriter(outputPdfFile, FileMode.Create); pw.reader = pr; IPdfObject info = ReadPdfObject(pr, pr.Trailer["Info"].value.valueObjectId, "Info"); pw.WriteObject(info, "Info"); IPdfObject root = ReadPdfObject(pr, pr.Trailer["Root"].value.valueObjectId, "Root"); pw.WriteObject(root, "Root"); IPdfObject pages = ReadPdfObject(pr, root.value["Pages"].value.valueObjectId, "Pages"); pw.WriteObject(pages); IPdfObject page1 = ReadPdfObject(pr, pages.value["Kids"].value[0].valueObjectId, "Page 1"); pw.WriteObject(page1); IPdfObject page1Content = ReadPdfObject(pr, page1.value["Contents"].value.valueObjectId, "Contents page 1"); pw.WriteObject(page1Content); IPdfObject page1Ressource = ReadPdfObject(pr, page1.value["Resources"].value.valueObjectId, "Resources page 1"); pw.WriteObject(page1Ressource); IPdfObject page1Ressource_01 = ReadPdfObject(pr, page1Ressource.value["XObject"].value["TPL1"].value.valueObjectId, "Resources page 1 /TPL1"); // import stream from file page1Ressource_01.stream = r.ReadBytes((int)r.Length); PdfNValue length = page1Ressource_01.value["Length"]; if (length == null || !length.value.isInt()) { throw new PBException("error wrong /Length of object {0}", page1Ressource_01.id); } length.value.valueInt = page1Ressource_01.stream.Length; pw.WriteObjectWithChilds(page1Ressource_01); } finally { if (pr != null) { pr.Close(); } if (r != null) { r.Close(); } if (pw != null) { pw.Close(); } } }