public virtual void TagStructureRemovingTest03() { PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureRemovingTest03.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); PdfPage page = document.AddNewPage(); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.SetPageForTagging(page); PdfCanvas canvas = new PdfCanvas(page); tagPointer.AddTag(PdfName.P); IAccessibleElement paragraphElement = tagPointer.GetConnectedElement(true); PdfFont standardFont = PdfFontFactory.CreateFont(FontConstants.COURIER); canvas.BeginText().SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512); tagPointer.AddTag(PdfName.Span); canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag(); canvas.SetFontAndSize(standardFont, 30).OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag() .EndText(); tagPointer.MoveToParent().MoveToParent(); document.RemovePage(1); PdfPage newPage = document.AddNewPage(); canvas = new PdfCanvas(newPage); tagPointer.SetPageForTagging(newPage); tagPointer.MoveToTag(paragraphElement).AddTag(PdfName.Span); canvas.OpenTag(tagPointer.GetTagReference()).BeginText().SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512).ShowText("Hello.").EndText().CloseTag(); document.Close(); CompareResult("tagStructureRemovingTest03.pdf", "cmp_tagStructureRemovingTest03.pdf", "diffRemoving03_"); }
public virtual void TagTreePointerTest06() { PdfReader reader = new PdfReader(sourceFolder + "taggedDocument.pdf"); PdfWriter writer = new PdfWriter(destinationFolder + "tagTreePointerTest06.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(reader, writer); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.SetRole(StandardRoles.PART); NUnit.Framework.Assert.AreEqual(tagPointer.GetRole(), "Part"); tagPointer.MoveToKid(StandardRoles.TABLE).GetProperties().SetLanguage("en-US"); tagPointer.MoveToKid(StandardRoles.P); String actualText1 = "Some looong latin text"; tagPointer.GetProperties().SetActualText(actualText1); WaitingTagsManager waitingTagsManager = document.GetTagStructureContext().GetWaitingTagsManager(); // assertNull(waitingTagsManager.getAssociatedObject(tagPointer)); Object associatedObj = new Object(); waitingTagsManager.AssignWaitingState(tagPointer, associatedObj); tagPointer.MoveToRoot().MoveToKid(StandardRoles.TABLE).MoveToKid(1, StandardRoles.TR).GetProperties().SetActualText ("More latin text"); waitingTagsManager.TryMovePointerToWaitingTag(tagPointer, associatedObj); tagPointer.SetRole(StandardRoles.DIV); tagPointer.GetProperties().SetLanguage("en-Us"); NUnit.Framework.Assert.AreEqual(tagPointer.GetProperties().GetActualText(), actualText1); document.Close(); CompareResult("tagTreePointerTest06.pdf", "cmp_tagTreePointerTest06.pdf", "diff06_"); }
public virtual void StructElemTest08() { PdfWriter writer = new PdfWriter(destinationFolder + "structElemTest08.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); PdfStructTreeRoot doc = document.GetStructTreeRoot(); PdfPage firstPage = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(firstPage); 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, firstPage)); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrNumber(firstPage, span1)))); canvas.ShowText("Hello "); canvas.CloseTag(); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrDictionary(firstPage, span1)))); canvas.ShowText("World"); canvas.CloseTag(); canvas.EndText(); canvas.Release(); PdfPage secondPage = document.AddNewPage(); // on flushing, the Document tag is not added firstPage.Flush(); secondPage.Flush(); document.Close(); CompareResult("structElemTest08.pdf", "cmp_structElemTest08.pdf", "diff_structElem_08_"); }
public virtual void TagStructureFlushingTest01() { PdfReader reader = new PdfReader(sourceFolder + "taggedDocument.pdf"); PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureFlushingTest01.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(reader, writer); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.MoveToKid(StandardRoles.TABLE).MoveToKid(2, StandardRoles.TR).FlushTag(); tagPointer.MoveToKid(3, StandardRoles.TR).MoveToKid(StandardRoles.TD).FlushTag(); tagPointer.MoveToParent().FlushTag(); String exceptionMessage = null; try { tagPointer.FlushTag(); } catch (PdfException e) { exceptionMessage = e.Message; } document.Close(); NUnit.Framework.Assert.AreEqual(PdfException.CannotFlushDocumentRootTagBeforeDocumentIsClosed, exceptionMessage ); CompareResult("tagStructureFlushingTest01.pdf", "taggedDocument.pdf", "diffFlushing01_"); }
public virtual void StructElemTest06() { PdfWriter writer = new PdfWriter(destinationFolder + "structElemTest06.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), 14); 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))).AddProperty(PdfName.Lang, new PdfString ("en-US")).AddProperty(PdfName.ActualText, new PdfString("The actual text is: Text with property list" ))); canvas.ShowText("Text with property list"); canvas.CloseTag(); canvas.EndText(); canvas.Release(); document.Close(); CompareResult("structElemTest06.pdf", "cmp_structElemTest06.pdf", "diff_structElem_06_"); }
public virtual void StructElemTest02() { PdfWriter writer = new PdfWriter(destinationFolder + "structElemTest02.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); document.GetStructTreeRoot().GetRoleMap().Put(new PdfName("Chunk"), PdfName.Span); 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(); page.Flush(); document.Close(); CompareResult("structElemTest02.pdf", "cmp_structElemTest02.pdf", "diff_structElem_02_"); }
/// <exception cref="iText.Kernel.XMP.XMPException"/> /// <exception cref="System.IO.IOException"/> /// <exception cref="System.Exception"/> public virtual void EncryptWithPassword(String filename, int encryptionType, int compression) { String outFileName = destinationFolder + filename; int permissions = EncryptionConstants.ALLOW_SCREENREADERS; PdfWriter writer = new PdfWriter(outFileName, new WriterProperties().SetStandardEncryption(USER, OWNER, permissions , encryptionType).AddXmpMetadata()); writer.SetCompressionLevel(compression); PdfDocument document = new PdfDocument(writer); document.GetDocumentInfo().SetAuthor(author).SetCreator(creator); PdfPage page = document.AddNewPage(); String textContent = "Hello world!"; WriteTextBytesOnPageContent(page, textContent); page.Flush(); document.Close(); CheckDecryptedWithPasswordContent(filename, OWNER, textContent); CheckDecryptedWithPasswordContent(filename, USER, textContent); CompareTool compareTool = new CompareTool().EnableEncryptionCompare(); String compareResult = compareTool.CompareByContent(outFileName, sourceFolder + "cmp_" + filename, destinationFolder , "diff_", USER, USER); if (compareResult != null) { NUnit.Framework.Assert.Fail(compareResult); } CheckEncryptedWithPasswordDocumentStamping(filename, OWNER); CheckEncryptedWithPasswordDocumentAppending(filename, OWNER); }
/// <exception cref="iText.Kernel.XMP.XMPException"/> /// <exception cref="System.IO.IOException"/> /// <exception cref="System.Exception"/> /// <exception cref="Org.BouncyCastle.Security.GeneralSecurityException"/> public virtual void EncryptWithCertificate(String filename, int encryptionType, int compression) { String outFileName = destinationFolder + filename; int permissions = EncryptionConstants.ALLOW_SCREENREADERS; X509Certificate cert = GetPublicCertificate(CERT); PdfWriter writer = new PdfWriter(outFileName, new WriterProperties().SetPublicKeyEncryption(new X509Certificate [] { cert }, new int[] { permissions }, encryptionType).AddXmpMetadata()); writer.SetCompressionLevel(compression); PdfDocument document = new PdfDocument(writer); document.GetDocumentInfo().SetAuthor(author).SetCreator(creator); PdfPage page = document.AddNewPage(); String textContent = "Hello world!"; WriteTextBytesOnPageContent(page, textContent); page.Flush(); document.Close(); CheckDecryptedWithCertificateContent(filename, cert, textContent); CompareTool compareTool = new CompareTool().EnableEncryptionCompare(); compareTool.GetOutReaderProperties().SetPublicKeySecurityParams(cert, GetPrivateKey()); compareTool.GetCmpReaderProperties().SetPublicKeySecurityParams(cert, GetPrivateKey()); String compareResult = compareTool.CompareByContent(outFileName, sourceFolder + "cmp_" + filename, destinationFolder , "diff_"); if (compareResult != null) { NUnit.Framework.Assert.Fail(compareResult); } CheckEncryptedWithCertificateDocumentStamping(filename, cert); CheckEncryptedWithCertificateDocumentAppending(filename, cert); }
/// <exception cref="iText.Kernel.XMP.XMPException"/> /// <exception cref="System.IO.IOException"/> /// <exception cref="System.Exception"/> public virtual void EncryptWithPassword(String filename, int encryptionType, int compression) { String outFileName = destinationFolder + filename; int permissions = EncryptionConstants.ALLOW_SCREENREADERS; PdfWriter writer = new PdfWriter(new FileStream(outFileName, FileMode.Create), new WriterProperties().SetStandardEncryption (USER, OWNER, permissions, encryptionType).AddXmpMetadata()); writer.SetCompressionLevel(compression); PdfDocument document = new PdfDocument(writer); document.GetDocumentInfo().SetAuthor(author).SetCreator(creator); PdfPage page = document.AddNewPage(); page.GetFirstContentStream().GetOutputStream().WriteBytes(("q\n" + "BT\n" + "36 706 Td\n" + "0 0 Td\n" + "/F1 24 Tf\n" + "(Hello world!)Tj\n" + "0 0 Td\n" + "ET\n" + "Q ").GetBytes()); page.GetResources().AddFont(document, PdfFontFactory.CreateFont(FontConstants.HELVETICA)); page.Flush(); document.Close(); CompareTool compareTool = new CompareTool().EnableEncryptionCompare(); String compareResult = compareTool.CompareByContent(outFileName, sourceFolder + "cmp_" + filename, destinationFolder , "diff_", USER, USER); if (compareResult != null) { NUnit.Framework.Assert.Fail(compareResult); } CheckDecryptedContent(filename, OWNER, "(Hello world!)"); CheckDecryptedContent(filename, USER, "(Hello world!)"); CheckDocumentStamping(filename, OWNER); CheckDocumentAppending(filename, OWNER); }
public virtual void TagStructureRemovingTest02() { PdfReader reader = new PdfReader(sourceFolder + "taggedDocument.pdf"); PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureRemovingTest02.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(reader, writer); PdfPage firstPage = document.GetPage(1); PdfPage secondPage = document.GetPage(2); document.RemovePage(firstPage); document.RemovePage(secondPage); PdfPage page = document.AddNewPage(); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.SetPageForTagging(page); PdfCanvas canvas = new PdfCanvas(page); tagPointer.AddTag(StandardRoles.P); PdfFont standardFont = PdfFontFactory.CreateFont(StandardFonts.COURIER); canvas.BeginText().SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512); tagPointer.AddTag(StandardRoles.SPAN); canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag(); canvas.SetFontAndSize(standardFont, 30).OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag() .EndText(); document.Close(); CompareResult("tagStructureRemovingTest02.pdf", "cmp_tagStructureRemovingTest02.pdf", "diffRemoving02_"); }
public virtual void TagTreePointerTest02() { FileStream fos = new FileStream(destinationFolder + "tagTreePointerTest02.pdf", FileMode.Create); PdfWriter writer = new PdfWriter(fos); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); PdfPage page = document.AddNewPage(); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.SetPageForTagging(page); PdfCanvas canvas = new PdfCanvas(page); canvas.BeginText(); PdfFont standardFont = PdfFontFactory.CreateFont(StandardFonts.COURIER); canvas.SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512); PdfStructureAttributes attributes = new PdfStructureAttributes("random attributes"); attributes.AddTextAttribute("hello", "world"); tagPointer.AddTag(StandardRoles.P).AddTag(StandardRoles.SPAN).GetProperties().SetActualText("Actual text for span is: Hello World" ).SetLanguage("en-GB").AddAttributes(attributes); canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag(); canvas.SetFontAndSize(standardFont, 30).OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag(); canvas.EndText().Release(); page.Flush(); document.Close(); CompareResult("tagTreePointerTest02.pdf", "cmp_tagTreePointerTest02.pdf", "diff02_"); }
public virtual void TagTreePointerTest06() { PdfReader reader = new PdfReader(sourceFolder + "taggedDocument.pdf"); PdfWriter writer = new PdfWriter(destinationFolder + "tagTreePointerTest06.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(reader, writer); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.SetRole(PdfName.Part); NUnit.Framework.Assert.AreEqual(tagPointer.GetRole().GetValue(), "Part"); tagPointer.MoveToKid(PdfName.Table).GetProperties().SetLanguage("en-US"); tagPointer.MoveToKid(PdfName.TR).MoveToKid(PdfName.TD).MoveToKid(PdfName.P); String actualText1 = "Some looong latin text"; tagPointer.GetProperties().SetActualText(actualText1); NUnit.Framework.Assert.IsNull(tagPointer.GetConnectedElement(false)); IAccessibleElement connectedElement = tagPointer.GetConnectedElement(true); tagPointer.MoveToRoot().MoveToKid(PdfName.Table).MoveToKid(1, PdfName.TR).GetProperties().SetActualText("More latin text" ); connectedElement.SetRole(PdfName.Div); connectedElement.GetAccessibilityProperties().SetLanguage("en-Us"); NUnit.Framework.Assert.AreEqual(connectedElement.GetAccessibilityProperties().GetActualText(), actualText1 ); document.Close(); CompareResult("tagTreePointerTest06.pdf", "cmp_tagTreePointerTest06.pdf", "diff06_"); }
public virtual void StructElemTest03() { PdfWriter writer = new PdfWriter(destinationFolder + "structElemTest03.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); document.GetStructTreeRoot().GetRoleMap().Put(new PdfName("Chunk"), PdfName.Span); PdfStructElem doc = document.GetStructTreeRoot().AddKid(new PdfStructElem(document, PdfName.Document)); PdfPage page1 = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page1); 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, page1)); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrNumber(page1, span1)))); canvas.ShowText("Hello "); canvas.CloseTag(); PdfStructElem span2 = paragraph.AddKid(new PdfStructElem(document, new PdfName("Chunk"), page1)); canvas.OpenTag(new CanvasTag(span2.AddKid(new PdfMcrNumber(page1, span2)))); canvas.ShowText("World"); canvas.CloseTag(); canvas.EndText(); canvas.Release(); PdfPage page2 = document.AddNewPage(); canvas = new PdfCanvas(page2); canvas.BeginText(); canvas.SetFontAndSize(PdfFontFactory.CreateFont(StandardFonts.HELVETICA), 24); canvas.SetTextMatrix(1, 0, 0, 1, 32, 512); paragraph = doc.AddKid(new PdfStructElem(document, PdfName.P)); span1 = paragraph.AddKid(new PdfStructElem(document, PdfName.Span, page2)); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrNumber(page2, span1)))); canvas.ShowText("Hello "); canvas.CloseTag(); span2 = paragraph.AddKid(new PdfStructElem(document, new PdfName("Chunk"), page2)); canvas.OpenTag(new CanvasTag(span2.AddKid(new PdfMcrNumber(page2, span2)))); canvas.ShowText("World"); canvas.CloseTag(); canvas.EndText(); canvas.Release(); page1.Flush(); page2.Flush(); document.Close(); document = new PdfDocument(new PdfReader(destinationFolder + "structElemTest03.pdf")); NUnit.Framework.Assert.AreEqual(2, (int)document.GetNextStructParentIndex()); PdfPage page = document.GetPage(1); NUnit.Framework.Assert.AreEqual(0, page.GetStructParentIndex()); NUnit.Framework.Assert.AreEqual(2, page.GetNextMcid()); document.Close(); }
public virtual void TagStructureFlushingTest05() { PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureFlushingTest05.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); WaitingTagsManager waitingTagsManager = tagPointer.GetContext().GetWaitingTagsManager(); Object pWaitingTagObj = new Object(); waitingTagsManager.AssignWaitingState(tagPointer, pWaitingTagObj); canvas.BeginText(); PdfFont standardFont = PdfFontFactory.CreateFont(StandardFonts.COURIER); canvas.SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512); tagPointer.AddTag(StandardRoles.SPAN); canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag(); canvas.SetFontAndSize(standardFont, 30).OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag(); tagPointer.MoveToParent().MoveToParent(); // Flushing /Div tag and it's children. /P tag shall not be flushed, as it is has connected paragraphElement // object. On removing connection between paragraphElement and /P tag, /P tag shall be flushed. // When tag is flushed, tagPointer begins to point to tag's parent. If parent is also flushed - to the root. tagPointer.FlushTag(); waitingTagsManager.TryMovePointerToWaitingTag(tagPointer, pWaitingTagObj); tagPointer.AddTag(StandardRoles.SPAN); canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag(); canvas.SetFontAndSize(standardFont, 30).OpenTag(tagPointer.GetTagReference()).ShowText("again").CloseTag(); waitingTagsManager.RemoveWaitingState(pWaitingTagObj); tagPointer.MoveToRoot(); canvas.EndText().Release(); PdfPage page2 = document.AddNewPage(); tagPointer.SetPageForTagging(page2); canvas = new PdfCanvas(page2); tagPointer.AddTag(StandardRoles.P); canvas.BeginText().SetFontAndSize(PdfFontFactory.CreateFont(StandardFonts.HELVETICA), 24).SetTextMatrix(1, 0, 0, 1, 32, 512); tagPointer.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("tagStructureFlushingTest05.pdf", "cmp_tagStructureFlushingTest05.pdf", "diffFlushing05_"); }
public virtual void StructElemTest09() { PdfWriter writer = new PdfWriter(destinationFolder + "structElemTest09.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(new PdfReader(sourceFolder + "88th_Academy_Awards_mult_roots.pdf"), writer); document.RemovePage(1); document.Close(); CompareResult("structElemTest09.pdf", "cmp_structElemTest09.pdf", "diff_structElem_09_"); }
public virtual void TagStructureRemovingTest01() { PdfReader reader = new PdfReader(sourceFolder + "taggedDocument.pdf"); PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureRemovingTest01.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(reader, writer); document.RemovePage(1); document.Close(); CompareResult("tagStructureRemovingTest01.pdf", "cmp_tagStructureRemovingTest01.pdf", "diffRemoving01_"); }
public virtual void StructElemTest01() { FileStream fos = new FileStream(destinationFolder + "structElemTest01.pdf", FileMode.Create); PdfWriter writer = new PdfWriter(fos); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); PdfStructElem doc = document.GetStructTreeRoot().AddKid(new PdfStructElem(document, PdfName.Document)); PdfPage page1 = document.AddNewPage(); PdfCanvas canvas = new PdfCanvas(page1); canvas.BeginText(); canvas.SetFontAndSize(PdfFontFactory.CreateFont(FontConstants.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, page1)); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrNumber(page1, span1)))); canvas.ShowText("Hello "); canvas.CloseTag(); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrDictionary(page1, span1)))); canvas.ShowText("World"); canvas.CloseTag(); canvas.EndText(); canvas.Release(); PdfPage page2 = document.AddNewPage(); canvas = new PdfCanvas(page2); canvas.BeginText(); canvas.SetFontAndSize(PdfFontFactory.CreateFont(FontConstants.HELVETICA), 24); canvas.SetTextMatrix(1, 0, 0, 1, 32, 512); paragraph = doc.AddKid(new PdfStructElem(document, PdfName.P)); span1 = paragraph.AddKid(new PdfStructElem(document, PdfName.Span, page2)); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrNumber(page2, span1)))); canvas.ShowText("Hello "); canvas.CloseTag(); PdfStructElem span2 = paragraph.AddKid(new PdfStructElem(document, PdfName.Span, page2)); canvas.OpenTag(new CanvasTag(span2.AddKid(new PdfMcrNumber(page2, span2)))); canvas.ShowText("World"); canvas.CloseTag(); canvas.EndText(); canvas.Release(); page1.Flush(); page2.Flush(); document.Close(); CompareResult("structElemTest01.pdf", "cmp_structElemTest01.pdf", "diff_structElem_01_"); }
public virtual void TagTreePointerTest03() { PdfReader reader = new PdfReader(sourceFolder + "taggedDocument.pdf"); PdfWriter writer = new PdfWriter(destinationFolder + "tagTreePointerTest03.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(reader, writer); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.MoveToKid(StandardRoles.TABLE).MoveToKid(2, StandardRoles.TR); TagTreePointer tagPointerCopy = new TagTreePointer(tagPointer); tagPointer.RemoveTag(); // tagPointerCopy now points at removed tag String exceptionMessage = null; try { tagPointerCopy.AddTag(StandardRoles.SPAN); } catch (PdfException e) { exceptionMessage = e.Message; } NUnit.Framework.Assert.AreEqual(PdfException.TagTreePointerIsInInvalidStateItPointsAtRemovedElementUseMoveToRoot , exceptionMessage); tagPointerCopy.MoveToRoot().MoveToKid(StandardRoles.TABLE); tagPointerCopy.MoveToKid(StandardRoles.TR); TagTreePointer tagPointerCopyCopy = new TagTreePointer(tagPointerCopy); tagPointerCopy.FlushTag(); // tagPointerCopyCopy now points at flushed tag try { tagPointerCopyCopy.AddTag(StandardRoles.SPAN); } catch (PdfException e) { exceptionMessage = e.Message; } NUnit.Framework.Assert.AreEqual(PdfException.TagTreePointerIsInInvalidStateItPointsAtFlushedElementUseMoveToRoot , exceptionMessage); try { tagPointerCopy.MoveToKid(0); } catch (PdfException e) { exceptionMessage = e.Message; } NUnit.Framework.Assert.AreEqual(PdfException.CannotMoveToFlushedKid, exceptionMessage); document.Close(); }
public virtual void TagStructureFlushingTest03() { PdfReader reader = new PdfReader(sourceFolder + "taggedDocument.pdf"); PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureFlushingTest03.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(reader, writer); document.GetPage(2).Flush(); document.GetPage(1).Flush(); PdfArray kids = document.GetStructTreeRoot().GetKidsObject(); NUnit.Framework.Assert.IsFalse(kids.Get(0).IsFlushed()); NUnit.Framework.Assert.IsTrue(kids.GetAsDictionary(0).GetAsDictionary(PdfName.K).IsFlushed()); document.Close(); CompareResult("tagStructureFlushingTest03.pdf", "taggedDocument.pdf", "diffFlushing03_"); }
public virtual void StructElemTest05() { FileStream fos = new FileStream(destinationFolder + "structElemTest05.pdf", FileMode.Create); PdfWriter writer = new PdfWriter(fos); 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(FontConstants.COURIER), 14); 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("Click "); canvas.CloseTag(); PdfStructElem link = paragraph.AddKid(new PdfStructElem(document, PdfName.Link, page)); canvas.OpenTag(new CanvasTag(link.AddKid(new PdfMcrNumber(page, link)))); canvas.SetFillColorRgb(0, 0, 1).ShowText("here"); PdfLinkAnnotation linkAnnotation = new PdfLinkAnnotation(new Rectangle(80, 508, 40, 18)); linkAnnotation.SetColor(new float[] { 0, 0, 1 }).SetBorder(new PdfArray(new float[] { 0, 0, 1 })); page.AddAnnotation(-1, linkAnnotation, false); link.AddKid(new PdfObjRef(linkAnnotation, link)); canvas.CloseTag(); PdfStructElem span2 = paragraph.AddKid(new PdfStructElem(document, PdfName.Span, page)); canvas.OpenTag(new CanvasTag(span2.AddKid(new PdfMcrNumber(page, span2)))); canvas.SetFillColorRgb(0, 0, 0); canvas.ShowText(" to visit iText site."); canvas.CloseTag(); canvas.EndText(); canvas.Release(); document.Close(); CompareResult("structElemTest05.pdf", "cmp_structElemTest05.pdf", "diff_structElem_05_"); }
public virtual void TagStructureFlushingTest02() { PdfReader reader = new PdfReader(sourceFolder + "taggedDocument.pdf"); PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureFlushingTest02.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(reader, writer); TagStructureContext tagStructure = document.GetTagStructureContext(); tagStructure.FlushPageTags(document.GetPage(1)); IList <IStructureNode> kids = document.GetStructTreeRoot().GetKids(); NUnit.Framework.Assert.IsTrue(!((PdfStructElem)kids[0]).GetPdfObject().IsFlushed()); NUnit.Framework.Assert.IsTrue(!((PdfStructElem)kids[0].GetKids()[0]).GetPdfObject().IsFlushed()); PdfArray rowsTags = (PdfArray)((PdfStructElem)kids[0].GetKids()[0]).GetK(); NUnit.Framework.Assert.IsTrue(rowsTags.Get(0).IsFlushed()); document.Close(); CompareResult("tagStructureFlushingTest02.pdf", "taggedDocument.pdf", "diffFlushing02_"); }
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 TagStructureRemovingTest03() { PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureRemovingTest03.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); PdfPage page = document.AddNewPage(); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.SetPageForTagging(page); PdfCanvas canvas = new PdfCanvas(page); tagPointer.AddTag(StandardRoles.P); WaitingTagsManager waitingTagsManager = tagPointer.GetContext().GetWaitingTagsManager(); Object pWaitingTagObj = new Object(); waitingTagsManager.AssignWaitingState(tagPointer, pWaitingTagObj); PdfFont standardFont = PdfFontFactory.CreateFont(StandardFonts.COURIER); canvas.BeginText().SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512); tagPointer.AddTag(StandardRoles.SPAN); canvas.OpenTag(tagPointer.GetTagReference()).ShowText("Hello ").CloseTag(); canvas.SetFontAndSize(standardFont, 30).OpenTag(tagPointer.GetTagReference()).ShowText("World").CloseTag() .EndText(); tagPointer.MoveToParent().MoveToParent(); document.RemovePage(1); PdfPage newPage = document.AddNewPage(); canvas = new PdfCanvas(newPage); tagPointer.SetPageForTagging(newPage); waitingTagsManager.TryMovePointerToWaitingTag(tagPointer, pWaitingTagObj); tagPointer.AddTag(StandardRoles.SPAN); canvas.OpenTag(tagPointer.GetTagReference()).BeginText().SetFontAndSize(standardFont, 24).SetTextMatrix(1, 0, 0, 1, 32, 512).ShowText("Hello.").EndText().CloseTag(); document.Close(); CompareResult("tagStructureRemovingTest03.pdf", "cmp_tagStructureRemovingTest03.pdf", "diffRemoving03_"); }
public virtual void TagStructureFlushingTest04() { PdfReader reader = new PdfReader(sourceFolder + "taggedDocument.pdf"); PdfWriter writer = new PdfWriter(destinationFolder + "tagStructureFlushingTest04.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(reader, writer); TagTreePointer tagPointer = new TagTreePointer(document); tagPointer.MoveToKid(StandardRoles.TABLE).MoveToKid(2, StandardRoles.TR).FlushTag(); // intended redundant call to flush page tags separately from page. Page tags are flushed when the page is flushed. document.GetTagStructureContext().FlushPageTags(document.GetPage(1)); document.GetPage(1).Flush(); tagPointer.MoveToKid(5).FlushTag(); document.GetPage(2).Flush(); PdfArray kids = document.GetStructTreeRoot().GetKidsObject(); NUnit.Framework.Assert.IsFalse(kids.Get(0).IsFlushed()); NUnit.Framework.Assert.IsTrue(kids.GetAsDictionary(0).GetAsDictionary(PdfName.K).IsFlushed()); document.Close(); CompareResult("tagStructureFlushingTest04.pdf", "taggedDocument.pdf", "diffFlushing04_"); }
public virtual void TagTreePointerTest05() { PdfReader reader = new PdfReader(sourceFolder + "taggedDocument.pdf"); PdfWriter writer = new PdfWriter(destinationFolder + "tagTreePointerTest05.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(reader, writer); TagTreePointer tagPointer1 = new TagTreePointer(document); tagPointer1.MoveToKid(2, StandardRoles.TR); TagTreePointer tagPointer2 = new TagTreePointer(document); tagPointer2.MoveToKid(0, StandardRoles.TR); tagPointer1.RelocateKid(0, tagPointer2); tagPointer1 = new TagTreePointer(document).MoveToKid(5, StandardRoles.TR).MoveToKid(2, StandardRoles.TD).MoveToKid (StandardRoles.P).MoveToKid(StandardRoles.SPAN); tagPointer2.MoveToKid(StandardRoles.TD).MoveToKid(StandardRoles.P).MoveToKid(StandardRoles.SPAN); tagPointer2.SetNextNewKidIndex(3); tagPointer1.RelocateKid(4, tagPointer2); document.Close(); CompareResult("tagTreePointerTest05.pdf", "cmp_tagTreePointerTest05.pdf", "diff05_"); }
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 StructElemTest04() { MemoryStream baos = new MemoryStream(); PdfWriter writer = new PdfWriter(baos); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument document = new PdfDocument(writer); document.SetTagged(); document.GetStructTreeRoot().GetRoleMap().Put(new PdfName("Chunk"), PdfName.Span); 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(); page.Flush(); document.Close(); byte[] bytes = baos.ToArray(); PdfReader reader = new PdfReader(new MemoryStream(bytes)); writer = new PdfWriter(destinationFolder + "structElemTest04.pdf"); writer.SetCompressionLevel(CompressionConstants.NO_COMPRESSION); document = new PdfDocument(reader, writer); page = document.GetPage(1); canvas = new PdfCanvas(page); PdfStructElem p = (PdfStructElem)document.GetStructTreeRoot().GetKids()[0].GetKids()[0]; canvas.BeginText(); canvas.SetFontAndSize(PdfFontFactory.CreateFont(StandardFonts.COURIER), 24); canvas.SetTextMatrix(1, 0, 0, 1, 32, 490); //Inserting span between of 2 existing ones. span1 = p.AddKid(1, new PdfStructElem(document, PdfName.Span, page)); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrNumber(page, span1)))); canvas.ShowText("text1"); canvas.CloseTag(); //Inserting span at the end. span1 = p.AddKid(new PdfStructElem(document, PdfName.Span, page)); canvas.OpenTag(new CanvasTag(span1.AddKid(new PdfMcrNumber(page, span1)))); canvas.ShowText("text2"); canvas.CloseTag(); canvas.EndText(); canvas.Release(); page.Flush(); document.Close(); CompareResult("structElemTest04.pdf", "cmp_structElemTest04.pdf", "diff_structElem_04_"); }