public virtual void PrimitivesStringTest() { String filename = "primitivesStringTest.pdf"; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + filename)); for (int i = 0; i < PageCount; i++) { PdfPage page = pdfDoc.AddNewPage(); PdfArray array = GeneratePdfArrayWithStrings(null, false); page.GetPdfObject().Put(TestArray, array); array.Flush(); page.Flush(); } pdfDoc.Close(); }
public virtual void SimplePagesTest() { String filename = "simplePagesTest.pdf"; int pageCount = 111; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + filename)); for (int i = 0; i < pageCount; i++) { PdfPage page = pdfDoc.AddNewPage(); page.GetPdfObject().Put(PageNum, new PdfNumber(i + 1)); page.Flush(); } pdfDoc.Close(); VerifyPagesOrder(destinationFolder + filename, pageCount); }
public virtual void UseObjectForMultipleTimes4() { PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + "useObjectForMultipleTimes4.pdf")); PdfDictionary helloWorld = (PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc); helloWorld.Put(new PdfName("Hello"), new PdfString("World")); PdfPage page = pdfDoc.AddNewPage(); page.GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld); page.Flush(); pdfDoc.GetCatalog().GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld); helloWorld.Flush(); pdfDoc.Close(); ValidateUseObjectForMultipleTimesTest(destinationFolder + "useObjectForMultipleTimes4.pdf"); }
public virtual void UseObjectForMultipleTimes1() { FileStream fos = new FileStream(destinationFolder + "useObjectForMultipleTimes1.pdf", FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument pdfDoc = new PdfDocument(writer); PdfDictionary helloWorld = ((PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc)); helloWorld.Put(new PdfName("Hello"), new PdfString("World")); PdfPage page = pdfDoc.AddNewPage(); page.GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld); page.Flush(); pdfDoc.GetCatalog().GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld); pdfDoc.Close(); ValidateUseObjectForMultipleTimesTest(destinationFolder + "useObjectForMultipleTimes1.pdf"); }
public virtual void ReversePagesTest() { String filename = "reversePagesTest.pdf"; int pageCount = 111; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + filename)); for (int i = pageCount; i > 0; i--) { PdfPage page = new PdfPage(pdfDoc, pdfDoc.GetDefaultPageSize()); pdfDoc.AddPage(1, page); page.GetPdfObject().Put(PageNum, new PdfNumber(i)); page.Flush(); } pdfDoc.Close(); VerifyPagesOrder(destinationFolder + filename, pageCount); }
private void RunCustomXmpTest(String name, String xmp) { String outPath = destinationFolder + name + ".pdf"; String cmpPath = sourceFolder + "cmp_" + name + ".pdf"; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outPath)); PdfPage page = pdfDoc.AddNewPage(); page.Flush(); pdfDoc.SetXmpMetadata(xmp.GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1)); pdfDoc.Close(); CompareTool compareTool = new CompareTool(); NUnit.Framework.Assert.IsNull(compareTool.CompareByContent(outPath, cmpPath, destinationFolder, "diff_" + name + "_")); NUnit.Framework.Assert.IsNull(compareTool.CompareDocumentInfo(outPath, cmpPath)); }
public virtual void CopyObject6() { FileStream fos = new FileStream(destinationFolder + "copyObject6_1.pdf", FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument pdfDoc = new PdfDocument(writer); PdfDictionary helloWorld = ((PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc)); helloWorld.Put(new PdfName("Hello"), new PdfString("World")); PdfPage page = pdfDoc.AddNewPage(); page.GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld); pdfDoc.Close(); pdfDoc = new PdfDocument(new PdfReader(destinationFolder + "copyObject6_1.pdf")); helloWorld = (PdfDictionary)pdfDoc.GetPage(1).GetPdfObject().Get(new PdfName("HelloWorld")); PdfDocument pdfDoc1 = new PdfDocument(new PdfWriter(new FileStream(destinationFolder + "copyObject6_2.pdf" , FileMode.Create))); PdfPage page1 = pdfDoc1.AddNewPage(); page1.GetPdfObject().Put(new PdfName("HelloWorldCopy1"), ((PdfDictionary)helloWorld.CopyTo(pdfDoc1))); page1.GetPdfObject().Put(new PdfName("HelloWorldCopy2"), ((PdfDictionary)helloWorld.CopyTo(pdfDoc1, true)) ); page1.GetPdfObject().Put(new PdfName("HelloWorldCopy3"), ((PdfDictionary)helloWorld.CopyTo(pdfDoc1, false) )); page1.Flush(); pdfDoc.Close(); pdfDoc1.Close(); PdfReader reader = new PdfReader(destinationFolder + "copyObject6_2.pdf"); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); PdfObject obj1 = pdfDocument.GetPage(1).GetPdfObject().Get(new PdfName("HelloWorldCopy1")); PdfIndirectReference ref1 = obj1.GetIndirectReference(); NUnit.Framework.Assert.AreEqual(6, ref1.objNr); NUnit.Framework.Assert.AreEqual(0, ref1.genNr); PdfObject obj2 = pdfDocument.GetPage(1).GetPdfObject().Get(new PdfName("HelloWorldCopy2")); PdfIndirectReference ref2 = obj2.GetIndirectReference(); NUnit.Framework.Assert.AreEqual(7, ref2.GetObjNumber()); NUnit.Framework.Assert.AreEqual(0, ref2.GetGenNumber()); PdfObject obj3 = pdfDocument.GetPage(1).GetPdfObject().Get(new PdfName("HelloWorldCopy3")); PdfIndirectReference ref3 = obj3.GetIndirectReference(); NUnit.Framework.Assert.AreEqual(7, ref3.GetObjNumber()); NUnit.Framework.Assert.AreEqual(0, ref3.GetGenNumber()); reader.Close(); }
public virtual void PrimitivesIntNumberTest() { String filename = "primitivesIntNumberTest.pdf"; FileStream fos = new FileStream(destinationFolder + filename, FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument pdfDoc = new PdfDocument(writer); for (int i = 0; i < PageCount; i++) { PdfPage page = pdfDoc.AddNewPage(); PdfArray array = GeneratePdfArrayWithIntNumbers(null, false); page.GetPdfObject().Put(TestArray, array); array.Flush(); page.Flush(); } pdfDoc.Close(); }
public virtual void CopyObject3() { { FileStream fos1 = new FileStream(destinationFolder + "copyObject3_1.pdf", FileMode.Create); PdfWriter writer1 = new PdfWriter(fos1); PdfDocument pdfDoc1 = new PdfDocument(writer1); PdfPage page1 = pdfDoc1.AddNewPage(); page1.Flush(); PdfDictionary catalog1 = pdfDoc1.GetCatalog().GetPdfObject(); PdfArray arr1 = ((PdfArray) new PdfArray().MakeIndirect(pdfDoc1)); PdfArray arr2 = ((PdfArray) new PdfArray().MakeIndirect(pdfDoc1)); arr1.Add(arr2); PdfDictionary dic1 = ((PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc1)); arr2.Add(dic1); PdfDictionary dic2 = ((PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc1)); dic1.Put(new PdfName("dic2"), dic2); PdfName arr1Name = new PdfName("arr1"); dic2.Put(arr1Name, arr1); catalog1.Put(arr1Name, arr1); pdfDoc1.Close(); PdfDocument pdfDoc1R = new PdfDocument(new PdfReader(destinationFolder + "copyObject3_1.pdf")); arr1 = (PdfArray)pdfDoc1R.GetCatalog().GetPdfObject().Get(arr1Name); FileStream fos2 = new FileStream(destinationFolder + "copyObject3_2.pdf", FileMode.Create); PdfWriter writer2 = new PdfWriter(fos2); PdfDocument pdfDoc2 = new PdfDocument(writer2); PdfPage page2 = pdfDoc2.AddNewPage(); page2.Flush(); PdfDictionary catalog2 = pdfDoc2.GetCatalog().GetPdfObject(); catalog2.Put(arr1Name, ((PdfArray)arr1.CopyTo(pdfDoc2))); pdfDoc1R.Close(); pdfDoc2.Close(); } { PdfReader reader = new PdfReader(destinationFolder + "copyObject3_2.pdf"); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); PdfDictionary catalog = pdfDocument.GetCatalog().GetPdfObject(); PdfArray arr1 = catalog.GetAsArray(new PdfName("arr1")); PdfArray arr2 = arr1.GetAsArray(0); PdfDictionary dic1 = arr2.GetAsDictionary(0); PdfDictionary dic2 = dic1.GetAsDictionary(new PdfName("dic2")); NUnit.Framework.Assert.AreEqual(arr1, dic2.GetAsArray(new PdfName("arr1"))); reader.Close(); } }
public virtual void CreateDocumentFromImages2() { String destinationDocument = destinationFolder + "documentFromImages2.pdf"; FileStream fos = new FileStream(destinationDocument, FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument document = new PdfDocument(writer); ImageData image = ImageDataFactory.Create(sourceFolder + "itext.jpg"); PdfPage page = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page); canvas.AddImage(image, 50, 500, 100, true); canvas.AddImage(image, 200, 500, 100, false).Flush(); canvas.Release(); page.Flush(); document.Close(); NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationDocument, sourceFolder + "cmp_documentFromImages2.pdf" , destinationFolder, "diff_")); }
public virtual void FlushingPageResourcesMadeIndependent() { String inputFile = sourceFolder + "100pagesSharedResDict.pdf"; String outputFile = destinationFolder + "flushingPageResourcesMadeIndependent.pdf"; PdfDocument pdf = new PdfDocument(new PdfReader(inputFile), new PdfWriter(outputFile)); int numOfAddedXObjectsPerPage = 10; for (int i = 1; i <= pdf.GetNumberOfPages(); ++i) { PdfPage sourcePage = pdf.GetPage(i); PdfDictionary res = sourcePage.GetPdfObject().GetAsDictionary(PdfName.Resources); PdfDictionary resClone = new PdfDictionary(); // clone dictionary manually to ensure this object is direct and is flushed together with the page foreach (KeyValuePair <PdfName, PdfObject> e in res.EntrySet()) { resClone.Put(e.Key, e.Value.Clone()); } sourcePage.GetPdfObject().Put(PdfName.Resources, resClone); PdfCanvas pdfCanvas = new PdfCanvas(sourcePage); pdfCanvas.SaveState(); for (int j = 0; j < numOfAddedXObjectsPerPage; ++j) { PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.Create(sourceFolder + "simple.jpg")); pdfCanvas.AddXObject(xObject, new Rectangle(36, 720 - j * 150, 20, 20)); xObject.MakeIndirect(pdf).Flush(); } pdfCanvas.RestoreState(); pdfCanvas.Release(); sourcePage.Flush(); } VerifyFlushedObjectsNum(pdf, 1416, 1400, 0); pdf.Close(); PrintOutputPdfNameAndDir(outputFile); PdfDocument result = new PdfDocument(new PdfReader(outputFile)); PdfObject page15Res = result.GetPage(15).GetPdfObject().Get(PdfName.Resources, false); PdfObject page34Res = result.GetPage(34).GetPdfObject().Get(PdfName.Resources, false); NUnit.Framework.Assert.IsTrue(page15Res.IsDictionary()); NUnit.Framework.Assert.AreEqual(numOfAddedXObjectsPerPage, ((PdfDictionary)page15Res).GetAsDictionary(PdfName .XObject).Size()); NUnit.Framework.Assert.IsTrue(page34Res.IsDictionary()); NUnit.Framework.Assert.AreNotEqual(page15Res, page34Res); result.Close(); }
public virtual void EgsTest1() { String destinationDocument = destinationFolder + "egsTest1.pdf"; FileStream fos = new FileStream(destinationDocument, FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument document = new PdfDocument(writer); //Create page and canvas PdfPage page = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page); //Create ExtGState and fill it with line width and font PdfExtGState egs = new PdfExtGState(); egs.GetPdfObject().Put(PdfName.LW, new PdfNumber(5)); PdfArray font = new PdfArray(); PdfFont pdfFont = PdfFontFactory.CreateFont(FontConstants.COURIER); pdfFont.Flush(); font.Add(pdfFont.GetPdfObject()); font.Add(new PdfNumber(24)); egs.GetPdfObject().Put(PdfName.Font, font); //Write ExtGState canvas.SetExtGState(egs); //Write text to check that font from ExtGState is applied canvas.BeginText(); canvas.MoveText(50, 600); canvas.ShowText("Courier, 24pt"); canvas.EndText(); //Draw line to check if ine width is applied canvas.MoveTo(50, 500); canvas.LineTo(300, 500); canvas.Stroke(); //Write text again to check that font from page resources and font from ExtGState is the same. canvas.BeginText(); canvas.SetFontAndSize(pdfFont, 36); canvas.MoveText(50, 400); canvas.ShowText("Courier, 36pt"); canvas.EndText(); canvas.Release(); page.Flush(); document.Close(); NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationDocument, sourceFolder + "cmp_egsTest1.pdf" , destinationFolder, "diff_")); }
public virtual void Copying2() { FileStream fos1 = new FileStream(destinationFolder + "copying2_1.pdf", FileMode.Create); PdfWriter writer1 = new PdfWriter(fos1); PdfDocument pdfDoc1 = new PdfDocument(writer1); for (int i = 0; i < 10; i++) { PdfPage page1 = pdfDoc1.AddNewPage(); page1.GetContentStream(0).GetOutputStream().Write(ByteUtils.GetIsoBytes("%page " + (i + 1).ToString() + "\n" )); page1.Flush(); } pdfDoc1.Close(); FileStream fis1 = new FileStream(destinationFolder + "copying2_1.pdf", FileMode.Open, FileAccess.Read); PdfReader reader1 = new PdfReader(fis1); pdfDoc1 = new PdfDocument(reader1); FileStream fos2 = new FileStream(destinationFolder + "copying2_2.pdf", FileMode.Create); PdfWriter writer2 = new PdfWriter(fos2); PdfDocument pdfDoc2 = new PdfDocument(writer2); for (int i_1 = 0; i_1 < 10; i_1++) { if (i_1 % 2 == 0) { pdfDoc2.AddPage(pdfDoc1.GetPage(i_1 + 1).CopyTo(pdfDoc2)); } } pdfDoc2.Close(); pdfDoc1.Close(); PdfReader reader = new PdfReader(destinationFolder + "copying2_2.pdf"); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); for (int i_2 = 0; i_2 < 5; i_2++) { byte[] bytes = pdfDocument.GetPage(i_2 + 1).GetContentBytes(); NUnit.Framework.Assert.AreEqual("%page " + (i_2 * 2 + 1).ToString() + "\n", iText.IO.Util.JavaUtil.GetStringForBytes (bytes)); } reader.Close(); }
public virtual void CopyObject4() { FileStream fos1 = new FileStream(destinationFolder + "copyObject4_1.pdf", FileMode.Create); PdfWriter writer1 = new PdfWriter(fos1); PdfDocument pdfDoc1 = new PdfDocument(writer1); PdfPage page1 = pdfDoc1.AddNewPage(); page1.Flush(); PdfDictionary catalog1 = pdfDoc1.GetCatalog().GetPdfObject(); PdfStream stream1 = ((PdfStream) new PdfStream().MakeIndirect(pdfDoc1)); List <PdfObject> tmpArray = new List <PdfObject>(3); tmpArray.Add(new PdfNumber(1)); tmpArray.Add(new PdfNumber(2)); tmpArray.Add(new PdfNumber(3)); stream1.GetOutputStream().Write(new PdfArray(tmpArray)); catalog1.Put(new PdfName("stream"), stream1); pdfDoc1.Close(); PdfDocument pdfDoc1R = new PdfDocument(new PdfReader(destinationFolder + "copyObject4_1.pdf")); stream1 = (PdfStream)pdfDoc1R.GetCatalog().GetPdfObject().Get(new PdfName("stream")); FileStream fos2 = new FileStream(destinationFolder + "copyObject4_2.pdf", FileMode.Create); PdfWriter writer2 = new PdfWriter(fos2); PdfDocument pdfDoc2 = new PdfDocument(writer2); PdfPage page2 = pdfDoc2.AddNewPage(); page2.Flush(); PdfDictionary catalog2 = pdfDoc2.GetCatalog().GetPdfObject(); catalog2.Put(new PdfName("stream"), ((PdfStream)stream1.CopyTo(pdfDoc2))); pdfDoc1R.Close(); pdfDoc2.Close(); PdfReader reader = new PdfReader(destinationFolder + "copyObject4_2.pdf"); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); PdfDictionary catalog = pdfDocument.GetCatalog().GetPdfObject(); PdfStream stream = (PdfStream)catalog.GetAsStream(new PdfName("stream")); byte[] bytes = stream.GetBytes(); NUnit.Framework.Assert.AreEqual(ByteUtils.GetIsoBytes("[1 2 3]"), bytes); reader.Close(); }
public virtual void TestExcessiveXrefEntriesForCopyXObject() { PdfDocument inputPdf = new PdfDocument(new PdfReader(sourceFolder + "input500.pdf")); PdfDocument outputPdf = new PdfDocument(new PdfWriter(destinationFolder + "output500.pdf")); float scaleX = 595f / 612f; float scaleY = 842f / 792f; for (int i = 1; i <= inputPdf.GetNumberOfPages(); ++i) { PdfPage sourcePage = inputPdf.GetPage(i); PdfFormXObject pageCopy = sourcePage.CopyAsFormXObject(outputPdf); PdfPage page = outputPdf.AddNewPage(PageSize.A4); PdfCanvas outputCanvas = new PdfCanvas(page); outputCanvas.AddXObject(pageCopy, scaleX, 0, 0, scaleY, 0, 0); page.Flush(); } outputPdf.Close(); inputPdf.Close(); NUnit.Framework.Assert.IsNotNull(outputPdf.GetXref()); NUnit.Framework.Assert.AreEqual(500, outputPdf.GetXref().Size() - inputPdf.GetXref().Size()); }
public virtual void AddFlushedPageTest() { PdfWriter writer = new PdfWriter(new MemoryStream()); PdfDocument pdfDoc = new PdfDocument(writer); PdfPage page = pdfDoc.AddNewPage(); bool error = false; try { page.Flush(); pdfDoc.RemovePage(page); pdfDoc.AddPage(page); pdfDoc.Close(); } catch (PdfException e) { if (PdfException.FlushedPageCannotBeAddedOrInserted.Equals(e.Message)) { error = true; } } NUnit.Framework.Assert.IsTrue(error); }
public virtual void StructElemTest07() { PdfWriter writer = new PdfWriter(destinationFolder + "structElemTest07.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); PdfStructElem doc = document.GetStructTreeRoot().AddKid(new PdfStructElem(document, PdfName.Document)); PdfPage page = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page); canvas.BeginText(); canvas.SetFontAndSize(PdfFontFactory.CreateFont(StandardFonts.COURIER), 24); canvas.SetTextMatrix(1, 0, 0, 1, 32, 512); PdfStructElem paragraph = doc.AddKid(new PdfStructElem(document, PdfName.P)); PdfStructElem span1 = paragraph.AddKid(new PdfStructElem(document, PdfName.Span, page)); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrNumber(page, span1)))); canvas.ShowText("Hello "); canvas.CloseTag(); PdfStructElem span2 = paragraph.AddKid(new PdfStructElem(document, new PdfName("Chunk"), page)); canvas.OpenTag(new CanvasTag(span2.AddKid(new PdfMcrNumber(page, span2)))); canvas.ShowText("World"); canvas.CloseTag(); canvas.EndText(); canvas.Release(); PdfNamespace @namespace = new PdfNamespace("http://www.w3.org/1999/xhtml"); span1.SetNamespace(@namespace); span1.AddRef(span2); span1.SetPhoneticAlphabet(PdfName.ipa); span1.SetPhoneme(new PdfString("Heeeelllloooooo")); @namespace.AddNamespaceRoleMapping(StandardRoles.SPAN, StandardRoles.SPAN); document.GetStructTreeRoot().AddNamespace(@namespace); page.Flush(); document.Close(); CompareResult("structElemTest07.pdf", "cmp_structElemTest07.pdf", "diff_structElem_07_"); }
public virtual void RemoveFlushedPage() { String filename = "removeFlushedPage.pdf"; int pageCount = 10; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + filename)); PdfPage removedPage = pdfDoc.AddNewPage(); int removedPageObjectNumber = removedPage.GetPdfObject().GetIndirectReference().GetObjNumber(); removedPage.Flush(); pdfDoc.RemovePage(removedPage); for (int i = 0; i < pageCount; i++) { PdfPage page = pdfDoc.AddNewPage(); page.GetPdfObject().Put(PageNum, new PdfNumber(i + 1)); page.Flush(); } NUnit.Framework.Assert.IsTrue(pdfDoc.RemovePage(pdfDoc.GetPage(pageCount)), "Remove last page"); NUnit.Framework.Assert.IsFalse(pdfDoc.GetXref().Get(removedPageObjectNumber).CheckState(PdfObject.FREE), "Free reference" ); pdfDoc.Close(); VerifyPagesOrder(destinationFolder + filename, pageCount - 1); }
public virtual void CreateDocumentWithForms() { String destinationDocument = destinationFolder + "documentWithForms1.pdf"; FileStream fos = new FileStream(destinationDocument, FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument document = new PdfDocument(writer); //Create form XObject and flush to document. PdfFormXObject form = new PdfFormXObject(new Rectangle(0, 0, 50, 50)); PdfCanvas canvas = new PdfCanvas(form, document); canvas.Rectangle(10, 10, 30, 30); canvas.Fill(); canvas.Release(); form.Flush(); //Create page1 and add forms to the page. PdfPage page1 = document.AddNewPage(); canvas = new PdfCanvas(page1); canvas.AddXObject(form, 0, 0).AddXObject(form, 50, 0).AddXObject(form, 0, 50).AddXObject(form, 50, 50); canvas.Release(); //Create form from the page1 and flush it. form = new PdfFormXObject(page1); form.Flush(); //Now page1 can be flushed. It's not needed anymore. page1.Flush(); //Create page2 and add forms to the page. PdfPage page2 = document.AddNewPage(); canvas = new PdfCanvas(page2); canvas.AddXObject(form, 0, 0); canvas.AddXObject(form, 0, 200); canvas.AddXObject(form, 200, 0); canvas.AddXObject(form, 200, 200); canvas.Release(); page2.Flush(); document.Close(); NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationDocument, sourceFolder + "cmp_documentWithForms1.pdf" , destinationFolder, "diff_")); }
public virtual void CreateDocumentFromImages1() { String destinationDocument = destinationFolder + "documentFromImages1.pdf"; FileStream fos = new FileStream(destinationDocument, FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument document = new PdfDocument(writer); PdfImageXObject[] images = new PdfImageXObject[4]; for (int i = 0; i < 4; i++) { images[i] = new PdfImageXObject(ImageDataFactory.Create(PdfXObjectTest.images[i])); images[i].SetLayer(new PdfLayer("layer" + i, document)); if (i % 2 == 0) { images[i].Flush(); } } for (int i_1 = 0; i_1 < 4; i_1++) { PdfPage page = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page); canvas.AddXObject(images[i_1], PageSize.Default); page.Flush(); } PdfPage page_1 = document.AddNewPage(); PdfCanvas canvas_1 = new PdfCanvas(page_1); canvas_1.AddXObject(images[0], 0, 0, 200); canvas_1.AddXObject(images[1], 300, 0, 200); canvas_1.AddXObject(images[2], 0, 300, 200); canvas_1.AddXObject(images[3], 300, 300, 200); canvas_1.Release(); page_1.Flush(); document.Close(); NUnit.Framework.Assert.IsTrue(new FileInfo(destinationDocument).Length < 20 * 1024 * 1024); NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationDocument, sourceFolder + "cmp_documentFromImages1.pdf" , destinationFolder, "diff_")); }
public virtual void CreatePdfStreamByInputStream() { String filename = destinationFolder + "createPdfStreamByInputStream.pdf"; FileStream fos = new FileStream(filename, FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument document = new PdfDocument(writer); document.GetDocumentInfo().SetAuthor("Alexander Chingarev").SetCreator("iText 6").SetTitle("Empty iText 6 Document" ); PdfPage page = document.AddNewPage(); page.Flush(); String streamContent = "Some text content with strange symbols ∞²"; PdfStream stream = new PdfStream(document, new MemoryStream(streamContent.GetBytes())); stream.Flush(); int streamIndirectNumber = stream.GetIndirectReference().GetObjNumber(); document.Close(); // com.itextpdf.text.pdf.PdfReader reader = new PdfReader(filename); // Assert.assertEquals("Rebuilt", false, reader.isRebuilt()); // Assert.assertNotNull(reader.getPageN(1)); // String date = reader.getDocumentInfo().get("CreationDate"); // Calendar cl = com.itextpdf.text.pdf.PdfDate.decode(date); // long diff = new GregorianCalendar().getTimeInMillis() - cl.getTimeInMillis(); // String message = "Unexpected creation date. Different from now is " + (float)diff/1000 + "s"; // Assert.assertTrue(message, diff < 5000); // reader.close(); PdfReader reader6 = new PdfReader(filename); document = new PdfDocument(reader6); NUnit.Framework.Assert.AreEqual(false, reader6.HasRebuiltXref(), "Rebuilt"); NUnit.Framework.Assert.AreEqual(false, reader6.HasFixedXref(), "Fixed"); PdfStream pdfStream = (PdfStream)document.GetXref().Get(streamIndirectNumber).GetRefersTo(); NUnit.Framework.Assert.AreEqual(streamContent.GetBytes(), pdfStream.GetBytes(), "Stream by InputStream"); document.Close(); }
public virtual void TagStructureFlushingTest06() { PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureFlushingTest06.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); PdfPage page1 = document.AddNewPage(); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.SetPageForTagging(page1); PdfCanvas canvas = new PdfCanvas(page1); tagPointer.AddTag(StandardRoles.DIV); tagPointer.AddTag(StandardRoles.P); canvas.BeginText(); PdfFont standardFont = PdfFontFactory.CreateFont(StandardFonts.COURIER); canvas.SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512); tagPointer.AddTag(StandardRoles.SPAN); WaitingTagsManager waitingTagsManager = document.GetTagStructureContext().GetWaitingTagsManager(); Object associatedObj = new Object(); waitingTagsManager.AssignWaitingState(tagPointer, associatedObj); canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag(); canvas.SetFontAndSize(standardFont, 30).OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag(); canvas.EndText().Release(); page1.Flush(); tagPointer.RelocateKid(0, new TagTreePointer(document).MoveToKid(StandardRoles.DIV).SetNextNewKidIndex(0). AddTag(StandardRoles.P)); tagPointer.RemoveTag(); waitingTagsManager.RemoveWaitingState(associatedObj); document.GetTagStructureContext().FlushPageTags(page1); document.GetStructTreeRoot().CreateParentTreeEntryForPage(page1); document.Close(); CompareResult("tagStructureFlushingTest06.pdf", "cmp_tagStructureFlushingTest06.pdf", "diffFlushing06_"); }
public virtual void CreateEmptyDocument() { PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + "emptyDocument.pdf")); pdfDoc.GetDocumentInfo().SetAuthor("Alexander Chingarev").SetCreator("iText 6").SetTitle("Empty iText 6 Document" ); PdfPage page = pdfDoc.AddNewPage(); page.Flush(); pdfDoc.Close(); PdfReader reader = new PdfReader(destinationFolder + "emptyDocument.pdf"); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); NUnit.Framework.Assert.IsNotNull(pdfDocument.GetPage(1)); String date = pdfDocument.GetDocumentInfo().GetPdfObject().GetAsString(PdfName.CreationDate).GetValue(); DateTime cl = PdfDate.Decode(date); double diff = DateTimeUtil.GetUtcMillisFromEpoch(null) - DateTimeUtil.GetUtcMillisFromEpoch(cl); String message = "Unexpected creation date. Different from now is " + (float)diff / 1000 + "s"; NUnit.Framework.Assert.IsTrue(diff < 5000, message); pdfDocument.Close(); }
public virtual void CreateEmptyDocumentWithAbcXmp() { MemoryStream fos = new MemoryStream(); PdfWriter writer = new PdfWriter(fos); PdfDocument pdfDoc = new PdfDocument(writer); pdfDoc.GetDocumentInfo().SetAuthor("Alexander Chingarev").SetCreator("iText 7").SetTitle("Empty iText 7 Document" ); pdfDoc.GetDocumentInfo().GetPdfObject().Remove(PdfName.CreationDate); pdfDoc.GetDocumentInfo().GetPdfObject().Remove(PdfName.ModDate); PdfPage page = pdfDoc.AddNewPage(); page.Flush(); pdfDoc.SetXmpMetadata("abc".GetBytes()); pdfDoc.Close(); PdfReader reader = new PdfReader(new MemoryStream(fos.ToArray())); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); NUnit.Framework.Assert.AreEqual("abc".GetBytes(), pdfDocument.GetXmpMetadata()); NUnit.Framework.Assert.IsNotNull(pdfDocument.GetPage(1)); reader.Close(); }
public virtual void Copying1() { FileStream fos1 = new FileStream(destinationFolder + "copying1_1.pdf", FileMode.Create); PdfWriter writer1 = new PdfWriter(fos1); PdfDocument pdfDoc1 = new PdfDocument(writer1); pdfDoc1.GetDocumentInfo().SetAuthor("Alexander Chingarev").SetCreator("iText 6").SetTitle("Empty iText 6 Document" ); pdfDoc1.GetCatalog().Put(new PdfName("a"), ((PdfName) new PdfName("b").MakeIndirect(pdfDoc1))); PdfPage page1 = pdfDoc1.AddNewPage(); page1.Flush(); pdfDoc1.Close(); FileStream fis1 = new FileStream(destinationFolder + "copying1_1.pdf", FileMode.Open, FileAccess.Read); PdfReader reader1 = new PdfReader(fis1); pdfDoc1 = new PdfDocument(reader1); FileStream fos2 = new FileStream(destinationFolder + "copying1_2.pdf", FileMode.Create); PdfWriter writer2 = new PdfWriter(fos2); PdfDocument pdfDoc2 = new PdfDocument(writer2); pdfDoc2.AddNewPage(); pdfDoc2.GetDocumentInfo().GetPdfObject().Put(new PdfName("a"), pdfDoc1.GetCatalog().GetPdfObject().Get(new PdfName("a")).CopyTo(pdfDoc2)); pdfDoc2.Close(); pdfDoc1.Close(); PdfReader reader = new PdfReader(destinationFolder + "copying1_2.pdf"); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); PdfDictionary trailer = pdfDocument.GetTrailer(); PdfDictionary info = trailer.GetAsDictionary(PdfName.Info); PdfName b = info.GetAsName(new PdfName("a")); NUnit.Framework.Assert.AreEqual("/b", b.ToString()); reader.Close(); }
public virtual void CreateEmptyDocumentWithXmp() { String filename = "emptyDocumentWithXmp.pdf"; FileStream fos = new FileStream(destinationFolder + filename, FileMode.Create); PdfWriter writer = new PdfWriter(fos, new WriterProperties().AddXmpMetadata()); PdfDocument pdfDoc = new PdfDocument(writer); pdfDoc.GetDocumentInfo().SetAuthor("Alexander Chingarev").SetCreator("iText 7").SetTitle("Empty iText 7 Document" ); pdfDoc.GetDocumentInfo().GetPdfObject().Remove(PdfName.CreationDate); pdfDoc.GetDocumentInfo().GetPdfObject().Remove(PdfName.ModDate); PdfPage page = pdfDoc.AddNewPage(); page.Flush(); pdfDoc.Close(); PdfReader reader = new PdfReader(destinationFolder + filename); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); NUnit.Framework.Assert.AreEqual(ReadFile(sourceFolder + "emptyDocumentWithXmp.xml").Length, pdfDocument.GetXmpMetadata ().Length); NUnit.Framework.Assert.IsNotNull(reader.pdfDocument.GetPage(1)); reader.Close(); }
public virtual void CopyObject5() { FileStream fos1 = new FileStream(destinationFolder + "copyObject5_1.pdf", FileMode.Create); PdfWriter writer1 = new PdfWriter(fos1); PdfDocument pdfDoc1 = new PdfDocument(writer1); PdfPage page1 = pdfDoc1.AddNewPage(); page1.GetContentStream(0).GetOutputStream().Write(ByteUtils.GetIsoBytes("%Page_1")); page1.Flush(); pdfDoc1.Close(); PdfDocument pdfDoc1R = new PdfDocument(new PdfReader(destinationFolder + "copyObject5_1.pdf")); page1 = pdfDoc1R.GetPage(1); FileStream fos2 = new FileStream(destinationFolder + "copyObject5_2.pdf", FileMode.Create); PdfWriter writer2 = new PdfWriter(fos2); PdfDocument pdfDoc2 = new PdfDocument(writer2); PdfPage page2 = page1.CopyTo(pdfDoc2); pdfDoc2.AddPage(page2); page2.Flush(); page2 = pdfDoc2.AddNewPage(); page2.GetContentStream(0).GetOutputStream().Write(ByteUtils.GetIsoBytes("%Page_2")); page2.Flush(); pdfDoc1R.Close(); pdfDoc2.Close(); PdfReader reader = new PdfReader(destinationFolder + "copyObject5_2.pdf"); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); NUnit.Framework.Assert.AreEqual(8, reader.trailer.GetAsNumber(PdfName.Size).IntValue()); byte[] bytes = pdfDocument.GetPage(1).GetContentBytes(); NUnit.Framework.Assert.AreEqual(ByteUtils.GetIsoBytes("%Page_1"), bytes); bytes = pdfDocument.GetPage(2).GetContentBytes(); NUnit.Framework.Assert.AreEqual(ByteUtils.GetIsoBytes("%Page_2"), bytes); reader.Close(); }
public virtual void TagTreePointerTest01() { FileStream fos = new FileStream(destinationFolder + "tagTreePointerTest01.pdf", FileMode.Create); PdfWriter writer = new PdfWriter(fos).SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); PdfPage page1 = document.AddNewPage(); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.SetPageForTagging(page1); PdfCanvas canvas = new PdfCanvas(page1); PdfFont standardFont = PdfFontFactory.CreateFont(StandardFonts.COURIER); canvas.BeginText().SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512); tagPointer.AddTag(StandardRoles.P).AddTag(StandardRoles.SPAN); canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag(); canvas.SetFontAndSize(standardFont, 30).OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag(); tagPointer.MoveToParent().MoveToParent(); canvas.EndText().Release(); PdfPage page2 = document.AddNewPage(); tagPointer.SetPageForTagging(page2); canvas = new PdfCanvas(page2); canvas.BeginText().SetFontAndSize(PdfFontFactory.CreateFont(StandardFonts.HELVETICA), 24).SetTextMatrix(1, 0, 0, 1, 32, 512); tagPointer.AddTag(StandardRoles.P).AddTag(StandardRoles.SPAN); canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag(); tagPointer.MoveToParent().AddTag(StandardRoles.SPAN); canvas.OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag(); canvas.EndText().Release(); page1.Flush(); page2.Flush(); document.Close(); CompareResult("tagTreePointerTest01.pdf", "cmp_tagTreePointerTest01.pdf", "diff01_"); }
public virtual void Copying2() { PdfDocument pdfDoc1 = new PdfDocument(new PdfWriter(destinationFolder + "copying2_1.pdf")); for (int i = 0; i < 10; i++) { PdfPage page1 = pdfDoc1.AddNewPage(); page1.GetContentStream(0).GetOutputStream().Write(ByteUtils.GetIsoBytes("%page " + (i + 1).ToString() + "\n" )); page1.Flush(); } pdfDoc1.Close(); pdfDoc1 = new PdfDocument(new PdfReader(destinationFolder + "copying2_1.pdf")); PdfDocument pdfDoc2 = new PdfDocument(new PdfWriter(destinationFolder + "copying2_2.pdf")); for (int i = 0; i < 10; i++) { if (i % 2 == 0) { pdfDoc2.AddPage(pdfDoc1.GetPage(i + 1).CopyTo(pdfDoc2)); } } pdfDoc2.Close(); pdfDoc1.Close(); PdfReader reader = new PdfReader(destinationFolder + "copying2_2.pdf"); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); for (int i = 0; i < 5; i++) { byte[] bytes = pdfDocument.GetPage(i + 1).GetContentBytes(); NUnit.Framework.Assert.AreEqual("%page " + (i * 2 + 1).ToString() + "\n", iText.IO.Util.JavaUtil.GetStringForBytes (bytes)); } pdfDocument.Close(); }
public virtual void CopyObject2() { FileStream fos1 = new FileStream(destinationFolder + "copyObject2_1.pdf", FileMode.Create); PdfWriter writer1 = new PdfWriter(fos1); PdfDocument pdfDoc1 = new PdfDocument(writer1); PdfPage page1 = pdfDoc1.AddNewPage(); page1.Flush(); PdfDictionary catalog1 = pdfDoc1.GetCatalog().GetPdfObject(); PdfName aDirectName = new PdfName("aDirect"); PdfArray aDirect = ((PdfArray) new PdfArray().MakeIndirect(pdfDoc1)); List <PdfObject> tmpArray = new List <PdfObject>(2); tmpArray.Add(new PdfNumber(1)); tmpArray.Add(((PdfNumber) new PdfNumber(2).MakeIndirect(pdfDoc1))); aDirect.Add(new PdfArray(tmpArray)); aDirect.Add(new PdfBoolean(true)); SortedDictionary <PdfName, PdfObject> tmpMap = new SortedDictionary <PdfName, PdfObject>(); tmpMap[new PdfName("one")] = new PdfNumber(1); tmpMap[new PdfName("two")] = ((PdfNumber) new PdfNumber(2).MakeIndirect(pdfDoc1)); aDirect.Add(new PdfDictionary(tmpMap)); aDirect.Add(new PdfName("name")); aDirect.Add(((PdfNull) new PdfNull().MakeIndirect(pdfDoc1))); aDirect.Add(new PdfNumber(100)); aDirect.Add(new PdfString("string")); catalog1.Put(aDirectName, aDirect); pdfDoc1.Close(); PdfDocument pdfDoc1R = new PdfDocument(new PdfReader(destinationFolder + "copyObject2_1.pdf")); aDirect = (PdfArray)pdfDoc1R.GetCatalog().GetPdfObject().Get(aDirectName); FileStream fos2 = new FileStream(destinationFolder + "copyObject2_2.pdf", FileMode.Create); PdfWriter writer2 = new PdfWriter(fos2); PdfDocument pdfDoc2 = new PdfDocument(writer2); PdfPage page2 = pdfDoc2.AddNewPage(); page2.Flush(); PdfDictionary catalog2 = pdfDoc2.GetCatalog().GetPdfObject(); catalog2.Put(aDirectName, ((PdfArray)aDirect.CopyTo(pdfDoc2))); pdfDoc1R.Close(); pdfDoc2.Close(); PdfReader reader = new PdfReader(destinationFolder + "copyObject2_2.pdf"); PdfDocument pdfDocument = new PdfDocument(reader); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); PdfDictionary catalog = pdfDocument.GetCatalog().GetPdfObject(); PdfArray a = catalog.GetAsArray(new PdfName("aDirect")); NUnit.Framework.Assert.IsNotNull(a); NUnit.Framework.Assert.AreEqual(1, ((PdfNumber)((PdfArray)a.Get(0)).Get(0)).IntValue()); NUnit.Framework.Assert.AreEqual(2, ((PdfArray)a.Get(0)).GetAsNumber(1).IntValue()); NUnit.Framework.Assert.AreEqual(true, ((PdfBoolean)a.Get(1)).GetValue()); NUnit.Framework.Assert.AreEqual(1, ((PdfNumber)((PdfDictionary)a.Get(2)).Get(new PdfName("one"))).IntValue ()); NUnit.Framework.Assert.AreEqual(2, ((PdfDictionary)a.Get(2)).GetAsNumber(new PdfName("two")).IntValue()); NUnit.Framework.Assert.AreEqual(new PdfName("name"), a.Get(3)); NUnit.Framework.Assert.IsTrue(a.Get(4).IsNull()); NUnit.Framework.Assert.AreEqual(100, ((PdfNumber)a.Get(5)).IntValue()); NUnit.Framework.Assert.AreEqual("string", ((PdfString)a.Get(6)).ToUnicodeString()); reader.Close(); }