public virtual void Copying3() { FileStream fos = new FileStream(destinationFolder + "copying3_1.pdf", FileMode.Create); PdfWriter writer = new PdfWriter(fos); PdfDocument pdfDoc = new PdfDocument(writer); PdfDictionary helloWorld = ((PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc)); PdfDictionary helloWorld1 = ((PdfDictionary) new PdfDictionary().MakeIndirect(pdfDoc)); helloWorld.Put(new PdfName("Hello"), new PdfString("World")); helloWorld.Put(new PdfName("HelloWrld"), helloWorld); helloWorld.Put(new PdfName("HelloWrld1"), helloWorld1); PdfPage page = pdfDoc.AddNewPage(); page.GetPdfObject().Put(new PdfName("HelloWorld"), helloWorld); page.GetPdfObject().Put(new PdfName("HelloWorldClone"), (PdfObject)helloWorld.Clone()); pdfDoc.Close(); PdfReader reader = new PdfReader(destinationFolder + "copying3_1.pdf"); NUnit.Framework.Assert.AreEqual(false, reader.HasRebuiltXref(), "Rebuilt"); pdfDoc = new PdfDocument(reader); PdfDictionary dic0 = pdfDoc.GetPage(1).GetPdfObject().GetAsDictionary(new PdfName("HelloWorld")); NUnit.Framework.Assert.AreEqual(4, dic0.GetIndirectReference().GetObjNumber()); NUnit.Framework.Assert.AreEqual(0, dic0.GetIndirectReference().GetGenNumber()); PdfDictionary dic1 = pdfDoc.GetPage(1).GetPdfObject().GetAsDictionary(new PdfName("HelloWorldClone")); NUnit.Framework.Assert.AreEqual(8, dic1.GetIndirectReference().GetObjNumber()); NUnit.Framework.Assert.AreEqual(0, dic1.GetIndirectReference().GetGenNumber()); PdfString str0 = dic0.GetAsString(new PdfName("Hello")); PdfString str1 = dic1.GetAsString(new PdfName("Hello")); NUnit.Framework.Assert.AreEqual(str0.GetValue(), str1.GetValue()); NUnit.Framework.Assert.AreEqual(str0.GetValue(), "World"); PdfDictionary dic01 = dic0.GetAsDictionary(new PdfName("HelloWrld")); PdfDictionary dic11 = dic1.GetAsDictionary(new PdfName("HelloWrld")); NUnit.Framework.Assert.AreEqual(dic01.GetIndirectReference().GetObjNumber(), dic11.GetIndirectReference(). GetObjNumber()); NUnit.Framework.Assert.AreEqual(dic01.GetIndirectReference().GetGenNumber(), dic11.GetIndirectReference(). GetGenNumber()); NUnit.Framework.Assert.AreEqual(dic01.GetIndirectReference().GetObjNumber(), 4); NUnit.Framework.Assert.AreEqual(dic01.GetIndirectReference().GetGenNumber(), 0); PdfDictionary dic02 = dic0.GetAsDictionary(new PdfName("HelloWrld1")); PdfDictionary dic12 = dic1.GetAsDictionary(new PdfName("HelloWrld1")); NUnit.Framework.Assert.AreEqual(dic02.GetIndirectReference().GetObjNumber(), dic12.GetIndirectReference(). GetObjNumber()); NUnit.Framework.Assert.AreEqual(dic02.GetIndirectReference().GetGenNumber(), dic12.GetIndirectReference(). GetGenNumber()); NUnit.Framework.Assert.AreEqual(dic12.GetIndirectReference().GetObjNumber(), 5); NUnit.Framework.Assert.AreEqual(dic12.GetIndirectReference().GetGenNumber(), 0); reader.Close(); }
public virtual void WriterPropertiesPriorityTest() { MemoryStream baos = new MemoryStream(); IDigest md5; try { md5 = DigestUtilities.GetDigest("MD5"); } catch (Exception e) { throw new PdfException(e); } PdfString originalId = new PdfString(md5.Digest("Initial ID 01234".GetBytes())); PdfString modifiedId = new PdfString(md5.Digest("Modified ID 56789".GetBytes())); PdfWriter writer = new PdfWriter(baos, new WriterProperties().SetInitialDocumentId(originalId).SetModifiedDocumentId (modifiedId)); PdfDocument pdfDocument = new PdfDocument(writer); pdfDocument.AddNewPage(); pdfDocument.Close(); byte[] documentBytes = baos.ToArray(); baos.Dispose(); PdfString newOriginalId = new PdfString(md5.Digest("Initial ID 98765".GetBytes())); PdfString newModifiedId = new PdfString(md5.Digest("Modified ID 43210".GetBytes())); PdfReader reader = new PdfReader(new MemoryStream(documentBytes)); PdfWriter newWriter = new PdfWriter(new MemoryStream(), new WriterProperties().SetInitialDocumentId(newOriginalId ).SetModifiedDocumentId(newModifiedId)); pdfDocument = new PdfDocument(reader, newWriter); String extractedOriginalId = pdfDocument.GetOriginalDocumentId().GetValue(); String extractedModifiedId = pdfDocument.GetModifiedDocumentId().GetValue(); pdfDocument.Close(); NUnit.Framework.Assert.AreEqual(extractedOriginalId, newOriginalId.GetValue()); NUnit.Framework.Assert.AreEqual(extractedModifiedId, newModifiedId.GetValue()); }
public virtual void PdtIndirectReferenceLateInitializing1() { MemoryStream baos = new MemoryStream(); PdfDocument document = new PdfDocument(new PdfWriter(baos)); document.AddNewPage(); PdfDictionary catalog = document.GetCatalog().GetPdfObject(); PdfIndirectReference indRef = document.CreateNextIndirectReference(); catalog.Put(new PdfName("Smth"), indRef); PdfDictionary dictionary = new PdfDictionary(); dictionary.Put(new PdfName("A"), new PdfString("a")); dictionary.MakeIndirect(document, indRef); document.Close(); MemoryStream bais = new MemoryStream(baos.ToArray()); document = new PdfDocument(new PdfReader(bais)); PdfObject @object = document.GetCatalog().GetPdfObject().Get(new PdfName("Smth")); NUnit.Framework.Assert.IsTrue(@object is PdfDictionary); dictionary = (PdfDictionary)@object; PdfString a = (PdfString)dictionary.Get(new PdfName("A")); NUnit.Framework.Assert.IsTrue(a.GetValue().Equals("a")); document.Close(); }
private static string getDate(iText.Kernel.Pdf.PdfString dateValue) { if (dateValue == null) { return(""); } if (dateValue.GetValue().EndsWith("Z")) { DateTime dt = DateTime.ParseExact(dateValue.GetValue().Substring(2).Replace('\'', ':'), "yyyyMMddHHmmssZ", System.Globalization.CultureInfo.InvariantCulture); return(DateTime.SpecifyKind(dt, DateTimeKind.Utc).ToString("o")); } else { return(DateTime.ParseExact(dateValue.GetValue().Substring(2).Replace('\'', ':'), "yyyyMMddHHmmsszzz:", System.Globalization.CultureInfo.InvariantCulture).ToUniversalTime().ToString("o")); } }
public virtual void EncodingTest() { RandomAccessSourceFactory factory; PdfTokenizer tok; PdfString pdfString; // hex string parse and check String testHexString = "<0D0A09557365729073204775696465>"; factory = new RandomAccessSourceFactory(); tok = new PdfTokenizer(new RandomAccessFileOrArray(factory.CreateSource(testHexString.GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1 )))); tok.NextToken(); pdfString = new PdfString(tok.GetByteContent(), tok.IsHexString()); NUnit.Framework.Assert.AreEqual("\r\n\tUser\u0090s Guide", pdfString.GetValue()); String testUnicodeString = "ΑΒΓΗ€•♣⋅"; pdfString = new PdfString(PdfEncodings.ConvertToBytes(testUnicodeString, PdfEncodings.UNICODE_BIG), false); NUnit.Framework.Assert.AreEqual(testUnicodeString, pdfString.ToUnicodeString()); pdfString = new PdfString("FEFF041F04400438043204350442".GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1), true); NUnit.Framework.Assert.AreEqual("\u041F\u0440\u0438\u0432\u0435\u0442", pdfString.ToUnicodeString()); pdfString = new PdfString("FEFF041F04400438043204350442".GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1), false); NUnit.Framework.Assert.AreEqual("FEFF041F04400438043204350442", pdfString.ToUnicodeString()); String specialCharacter = "\r\n\t\\n\\r\\t\\f"; pdfString = new PdfString(specialCharacter.GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1), false); NUnit.Framework.Assert.AreEqual("\n\t\n\r\t\f", pdfString.ToUnicodeString()); String symbol = "\u0001\u0004\u0006\u000E\u001F"; pdfString = new PdfString(symbol.GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1), false); NUnit.Framework.Assert.AreEqual(symbol, pdfString.ToUnicodeString()); String testString1 = "These\\\n two\\\r strings\\\n are the same"; pdfString = new PdfString(testString1.GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1), false); NUnit.Framework.Assert.AreEqual("These two strings are the same", pdfString.GetValue()); String testString2 = "This string contains \\245two octal characters\\307"; pdfString = new PdfString(testString2.GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1), false); NUnit.Framework.Assert.AreEqual("This string contains \u00A5two octal characters\u00C7", pdfString.GetValue ()); String testString3 = "\\0053"; pdfString = new PdfString(testString3.GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1), false); NUnit.Framework.Assert.AreEqual("\u00053", pdfString.GetValue()); String testString4 = "\\053"; pdfString = new PdfString(testString4.GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1), false); NUnit.Framework.Assert.AreEqual("+", pdfString.GetValue()); byte[] b = new byte[] { (byte)46, (byte)56, (byte)40 }; pdfString = new PdfString(b, false); NUnit.Framework.Assert.AreEqual(iText.IO.Util.JavaUtil.GetStringForBytes(b), pdfString.GetValue()); }
public virtual void PdtIndirectReferenceLateInitializing3() { MemoryStream baos = new MemoryStream(); PdfWriter writer = new PdfWriter(baos); PdfDocument document = new PdfDocument(writer); document.AddNewPage(); PdfDictionary catalog = document.GetCatalog().GetPdfObject(); PdfIndirectReference indRef1 = document.CreateNextIndirectReference(); PdfIndirectReference indRef2 = document.CreateNextIndirectReference(); PdfArray array = new PdfArray(); catalog.Put(new PdfName("array1"), array); PdfString @string = new PdfString("array string"); array.Add(@string); array.Add(indRef1); array.Add(indRef2); PdfDictionary dict = new PdfDictionary(); dict.MakeIndirect(document, indRef1); PdfArray arrayClone = (PdfArray)array.Clone(); PdfObject object0 = arrayClone.Get(0, false); PdfObject object1 = arrayClone.Get(1, false); PdfObject object2 = arrayClone.Get(2, false); NUnit.Framework.Assert.IsTrue(object0 is PdfString); NUnit.Framework.Assert.IsTrue(object1 is PdfDictionary); NUnit.Framework.Assert.IsTrue(object2 is PdfNull); PdfString string1 = (PdfString)object0; NUnit.Framework.Assert.IsTrue(@string != string1); NUnit.Framework.Assert.IsTrue(@string.GetValue().Equals(string1.GetValue())); PdfDictionary dict1 = (PdfDictionary)object1; NUnit.Framework.Assert.IsTrue(dict1.GetIndirectReference().GetObjNumber() == dict.GetIndirectReference().GetObjNumber ()); NUnit.Framework.Assert.IsTrue(dict1.GetIndirectReference().GetGenNumber() == dict.GetIndirectReference().GetGenNumber ()); NUnit.Framework.Assert.IsTrue(dict1 == dict); document.Close(); }
/// <exception cref="System.IO.IOException"/> /// <exception cref="System.Exception"/> /// <exception cref="Org.BouncyCastle.Security.GeneralSecurityException"/> public virtual void CheckEncryptedWithCertificateDocumentAppending(String filename, X509Certificate certificate ) { String srcFileName = destinationFolder + filename; String outFileName = destinationFolder + "appended_" + filename; PdfReader reader = new PdfReader(srcFileName, new ReaderProperties().SetPublicKeySecurityParams(certificate , GetPrivateKey())); PdfDocument document = new PdfDocument(reader, new PdfWriter(outFileName), new StampingProperties().UseAppendMode ()); PdfPage newPage = document.AddNewPage(); String helloWorldStringValue = "Hello world string"; newPage.Put(PdfName.Default, new PdfString(helloWorldStringValue)); WriteTextBytesOnPageContent(newPage, "Hello world page_2!"); document.Close(); PdfReader appendedDocReader = new PdfReader(outFileName, new ReaderProperties().SetPublicKeySecurityParams (certificate, GetPrivateKey())); PdfDocument appendedDoc = new PdfDocument(appendedDocReader); PdfPage secondPage = appendedDoc.GetPage(2); PdfString helloWorldPdfString = secondPage.GetPdfObject().GetAsString(PdfName.Default); String actualHelloWorldStringValue = helloWorldPdfString != null?helloWorldPdfString.GetValue() : null; NUnit.Framework.Assert.AreEqual(actualHelloWorldStringValue, helloWorldStringValue); appendedDoc.Close(); CompareTool compareTool = new CompareTool().EnableEncryptionCompare(); compareTool.GetOutReaderProperties().SetPublicKeySecurityParams(certificate, GetPrivateKey()); compareTool.GetCmpReaderProperties().SetPublicKeySecurityParams(certificate, GetPrivateKey()); String compareResult = compareTool.CompareByContent(outFileName, sourceFolder + "cmp_appended_" + filename , destinationFolder, "diff_"); if (compareResult != null) { NUnit.Framework.Assert.Fail(compareResult); } }
public virtual void PrimitivesTest() { String data = "<</Size 70." + "/Value#20 .1" + "/Root 46 0 R" + "/Info 44 0 R" + "/ID[<736f6d652068657820737472696e672>(some simple string )<8C2547D58D4BD2C6F3D32B830BE3259D2>-70.1--0.2]" + "/Name1 --15" + "/Prev ---116.23 >>"; RandomAccessSourceFactory factory = new RandomAccessSourceFactory(); PdfTokenizer tok = new PdfTokenizer(new RandomAccessFileOrArray(factory.CreateSource(data.GetBytes(iText.IO.Util.EncodingUtil.ISO_8859_1 )))); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.StartDic); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Name); PdfName name = new PdfName(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("Size", name.GetValue()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Number); PdfNumber num = new PdfNumber(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("70.", num.ToString()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Name); name = new PdfName(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("Value ", name.GetValue()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Number); num = new PdfNumber(tok.GetByteContent()); NUnit.Framework.Assert.AreNotSame("0.1", num.ToString()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Name); name = new PdfName(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("Root", name.GetValue()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Ref); PdfIndirectReference @ref = new PdfIndirectReference(null, tok.GetObjNr(), tok.GetGenNr()); NUnit.Framework.Assert.AreEqual("46 0 R", @ref.ToString()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Name); name = new PdfName(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("Info", name.GetValue()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Ref); @ref = new PdfIndirectReference(null, tok.GetObjNr(), tok.GetGenNr()); NUnit.Framework.Assert.AreEqual("44 0 R", @ref.ToString()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Name); name = new PdfName(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("ID", name.GetValue()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.StartArray); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.String); NUnit.Framework.Assert.AreEqual(tok.IsHexString(), true); PdfString str = new PdfString(tok.GetByteContent(), tok.IsHexString()); NUnit.Framework.Assert.AreEqual("some hex string ", str.GetValue()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.String); NUnit.Framework.Assert.AreEqual(tok.IsHexString(), false); str = new PdfString(tok.GetByteContent(), tok.IsHexString()); NUnit.Framework.Assert.AreEqual("some simple string ", str.GetValue()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.String); NUnit.Framework.Assert.AreEqual(tok.IsHexString(), true); str = new PdfString(tok.GetByteContent(), tok.IsHexString()); NUnit.Framework.Assert.AreEqual("\u008C%G\u00D5\u008DK\u00D2\u00C6\u00F3\u00D3+\u0083\u000B\u00E3%\u009D " , str.GetValue()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Number); num = new PdfNumber(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("-70.1", num.ToString()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Number); num = new PdfNumber(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("-0.2", num.ToString()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.EndArray); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Name); name = new PdfName(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("Name1", name.GetValue()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Number); num = new PdfNumber(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("0", num.ToString()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Name); name = new PdfName(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("Prev", name.GetValue()); tok.NextValidToken(); NUnit.Framework.Assert.AreEqual(tok.GetTokenType(), PdfTokenizer.TokenType.Number); num = new PdfNumber(tok.GetByteContent()); NUnit.Framework.Assert.AreEqual("-116.23", num.ToString()); }