From 7f2c92b9e9ffc2244822593c41657273f404de95 Mon Sep 17 00:00:00 2001 From: Pavel Alay Date: Mon, 20 Mar 2017 13:21:09 +0300 Subject: [PATCH 01/31] [RELEASE] 5.5.11-SNAPSHOT -> 5.5.12-SNAPSHOT --- src/core/AssemblyInfo.cs | 4 ++-- src/core/iTextSharp/text/Version.cs | 2 +- src/extras/iTextSharp.xtra/Properties/AssemblyInfo.cs | 4 ++-- src/extras/itextsharp.pdfa.tests/Properties/AssemblyInfo.cs | 6 +++--- src/extras/itextsharp.pdfa/Properties/AssemblyInfo.cs | 4 ++-- src/extras/itextsharp.tests/Properties/AssemblyInfo.cs | 6 +++--- .../itextsharp.xmlworker.tests/Properties/AssemblyInfo.cs | 6 +++--- src/extras/itextsharp.xmlworker/Properties/AssemblyInfo.cs | 4 ++-- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/core/AssemblyInfo.cs b/src/core/AssemblyInfo.cs index 85dbb1a96..4ce92ea0b 100644 --- a/src/core/AssemblyInfo.cs +++ b/src/core/AssemblyInfo.cs @@ -7,7 +7,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("iText Group NV")] [assembly: AssemblyProduct("iTextSharp")] -[assembly: AssemblyCopyright("Copyright (C) 1999-2016 by iText Group NV")] +[assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: InternalsVisibleTo("itextsharp.pdfa, PublicKey=00240000048000009400000006020000002400005253413100040000010001008b21ed5b3fc1c11996390981fe22bbe71a39a9e11d3c2cefddd6ee92920fa871f9666ae0fa941af0280d0653df048ae2d93f8c5e2d820dba3c8df9ed468c8be40a6fffeb32aa481a254f0fb9f37aa7c3ec1c0acd2c009746bbdafcb75bcdbcecb7caf1f0f4b6e7d013906ba60b66eb1c8298e4efb052caf6cece4bf1816902cc"),] @@ -16,4 +16,4 @@ [assembly: ComVisibleAttribute(false)] -[assembly: AssemblyVersion("5.5.11")] +[assembly: AssemblyVersion("5.5.12")] diff --git a/src/core/iTextSharp/text/Version.cs b/src/core/iTextSharp/text/Version.cs index 5380e3c43..62ff8d0d8 100644 --- a/src/core/iTextSharp/text/Version.cs +++ b/src/core/iTextSharp/text/Version.cs @@ -72,7 +72,7 @@ public sealed class Version { * This String contains the version number of this iText release. * For debugging purposes, we request you NOT to change this constant. */ - static private String release = "5.5.11-SNAPSHOT"; + static private String release = "5.5.12-SNAPSHOT"; /** * This String contains the iText version as shown in the producer line. diff --git a/src/extras/iTextSharp.xtra/Properties/AssemblyInfo.cs b/src/extras/iTextSharp.xtra/Properties/AssemblyInfo.cs index 9f170d167..1b2ec04d1 100644 --- a/src/extras/iTextSharp.xtra/Properties/AssemblyInfo.cs +++ b/src/extras/iTextSharp.xtra/Properties/AssemblyInfo.cs @@ -8,8 +8,8 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("iTextSharp.xtra")] -[assembly: AssemblyCopyright("Copyright (C) 1999-2016 by iText Group NV")] +[assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("5.5.11")] +[assembly: AssemblyVersion("5.5.12")] diff --git a/src/extras/itextsharp.pdfa.tests/Properties/AssemblyInfo.cs b/src/extras/itextsharp.pdfa.tests/Properties/AssemblyInfo.cs index bf8a0951f..18d73fd6b 100644 --- a/src/extras/itextsharp.pdfa.tests/Properties/AssemblyInfo.cs +++ b/src/extras/itextsharp.pdfa.tests/Properties/AssemblyInfo.cs @@ -5,9 +5,9 @@ [assembly: AssemblyTitle("itextsharp.pdfa.tests")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyCompany("iText Group NV")] [assembly: AssemblyProduct("itextsharp.pdfa.tests")] -[assembly: AssemblyCopyright("Copyright (C) 1999-2016 by iText Group NV")] +[assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -15,4 +15,4 @@ [assembly: Guid("ad182706-8617-4e07-ac63-2f1b88ebb671")] -[assembly: AssemblyVersion("5.5.11")] +[assembly: AssemblyVersion("5.5.12")] diff --git a/src/extras/itextsharp.pdfa/Properties/AssemblyInfo.cs b/src/extras/itextsharp.pdfa/Properties/AssemblyInfo.cs index 48e9ae3d3..4ac6dc25c 100644 --- a/src/extras/itextsharp.pdfa/Properties/AssemblyInfo.cs +++ b/src/extras/itextsharp.pdfa/Properties/AssemblyInfo.cs @@ -7,7 +7,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("iText Group NV")] [assembly: AssemblyProduct("iTextSharp.pdfa")] -[assembly: AssemblyCopyright("Copyright (C) 1999-2016 by iText Group NV")] +[assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -15,4 +15,4 @@ [assembly: Guid("e1d9164b-61e9-4efa-9758-14406d5034cd")] -[assembly: AssemblyVersion("5.5.11")] +[assembly: AssemblyVersion("5.5.12")] diff --git a/src/extras/itextsharp.tests/Properties/AssemblyInfo.cs b/src/extras/itextsharp.tests/Properties/AssemblyInfo.cs index fa6628da3..4adee0e94 100644 --- a/src/extras/itextsharp.tests/Properties/AssemblyInfo.cs +++ b/src/extras/itextsharp.tests/Properties/AssemblyInfo.cs @@ -5,9 +5,9 @@ [assembly: AssemblyTitle("itextsharp.tests")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] +[assembly: AssemblyCompany("iText Group NV")] [assembly: AssemblyProduct("itextsharp.tests")] -[assembly: AssemblyCopyright("Copyright (C) 1999-2016 by iText Group NV")] +[assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -15,4 +15,4 @@ [assembly: Guid("6d44f434-c50b-4232-87eb-853990beef3b")] -[assembly: AssemblyVersion("5.5.11")] +[assembly: AssemblyVersion("5.5.12")] diff --git a/src/extras/itextsharp.xmlworker.tests/Properties/AssemblyInfo.cs b/src/extras/itextsharp.xmlworker.tests/Properties/AssemblyInfo.cs index b78327afa..2f4c41922 100644 --- a/src/extras/itextsharp.xmlworker.tests/Properties/AssemblyInfo.cs +++ b/src/extras/itextsharp.xmlworker.tests/Properties/AssemblyInfo.cs @@ -5,9 +5,9 @@ [assembly: AssemblyTitle("itextsharp.xmlworker.tests")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyCompany("iText Group NV")] [assembly: AssemblyProduct("itextsharp.xmlworker.tests")] -[assembly: AssemblyCopyright("Copyright (C) 1999-2016 by iText Group NV")] +[assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -15,5 +15,5 @@ [assembly: Guid("f9ca61f8-a39e-4bcf-bf38-f58ea5f0b42a")] -[assembly: AssemblyVersion("5.5.11")] +[assembly: AssemblyVersion("5.5.12")] diff --git a/src/extras/itextsharp.xmlworker/Properties/AssemblyInfo.cs b/src/extras/itextsharp.xmlworker/Properties/AssemblyInfo.cs index 1109a92c7..89b25f72d 100644 --- a/src/extras/itextsharp.xmlworker/Properties/AssemblyInfo.cs +++ b/src/extras/itextsharp.xmlworker/Properties/AssemblyInfo.cs @@ -7,7 +7,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("iText Group NV")] [assembly: AssemblyProduct("itextsharp.xmlworker")] -[assembly: AssemblyCopyright("Copyright (C) 1999-2016 by iText Group NV")] +[assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: InternalsVisibleTo("itextsharp.xmlworker.tests, PublicKey=00240000048000009400000006020000002400005253413100040000010001008b21ed5b3fc1c11996390981fe22bbe71a39a9e11d3c2cefddd6ee92920fa871f9666ae0fa941af0280d0653df048ae2d93f8c5e2d820dba3c8df9ed468c8be40a6fffeb32aa481a254f0fb9f37aa7c3ec1c0acd2c009746bbdafcb75bcdbcecb7caf1f0f4b6e7d013906ba60b66eb1c8298e4efb052caf6cece4bf1816902cc"),] @@ -16,4 +16,4 @@ [assembly: Guid("12ef9c6c-372c-4ba1-9104-89a92a97ff9a")] -[assembly: AssemblyVersion("5.5.11")] +[assembly: AssemblyVersion("5.5.12")] From e80f5e51ad72a28a44acd7b628dadc1ba45fea05 Mon Sep 17 00:00:00 2001 From: Samuel Huylebroeck Date: Tue, 21 Mar 2017 10:37:23 +0100 Subject: [PATCH 02/31] Fix commit 7f51 Fix previous changes being added still in comment --- src/core/iTextSharp/text/pdf/AcroFields.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/iTextSharp/text/pdf/AcroFields.cs b/src/core/iTextSharp/text/pdf/AcroFields.cs index 77007299c..6ba783b53 100644 --- a/src/core/iTextSharp/text/pdf/AcroFields.cs +++ b/src/core/iTextSharp/text/pdf/AcroFields.cs @@ -1760,7 +1760,7 @@ virtual public bool RemoveField(String name, int page) { PdfIndirectReference kid = refi; while ((refi = wd.GetAsIndirectObject(PdfName.PARENT)) != null) { wd = wd.GetAsDict( PdfName.PARENT ); - //if (wd == null) break; //avoid null-reference exceptions in case of removing fields with kids (see SUP-1846) + if (wd == null) break; //avoid null-reference exceptions in case of removing fields with kids (see SUP-1846) PdfArray kids = wd.GetAsArray(PdfName.KIDS); if (RemoveRefFromArray(kids, kid) != 0) break; From cf632fb3081c7aa39bd1e57e0c8f4af7a57fc3e7 Mon Sep 17 00:00:00 2001 From: Alexey Subach Date: Thu, 23 Mar 2017 17:00:39 +0300 Subject: [PATCH 03/31] Port itextpdf commit 4c48b93 support TIFF images without compression tag DEV-1828 --- src/core/iTextSharp/text/pdf/codec/TiffImage.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/iTextSharp/text/pdf/codec/TiffImage.cs b/src/core/iTextSharp/text/pdf/codec/TiffImage.cs index 841173660..ee62e253f 100644 --- a/src/core/iTextSharp/text/pdf/codec/TiffImage.cs +++ b/src/core/iTextSharp/text/pdf/codec/TiffImage.cs @@ -94,7 +94,10 @@ public static Image GetTiffImage(RandomAccessFileOrArray s, bool recoverFromImag TIFFDirectory dir = new TIFFDirectory(s, page - 1); if (dir.IsTagPresent(TIFFConstants.TIFFTAG_TILEWIDTH)) throw new ArgumentException(MessageLocalization.GetComposedMessage("tiles.are.not.supported")); - int compression = (int)dir.GetFieldAsLong(TIFFConstants.TIFFTAG_COMPRESSION); + int compression = TIFFConstants.COMPRESSION_NONE; + if (dir.IsTagPresent(TIFFConstants.TIFFTAG_COMPRESSION)) { + compression = (int)dir.GetFieldAsLong(TIFFConstants.TIFFTAG_COMPRESSION); + } switch (compression) { case TIFFConstants.COMPRESSION_CCITTRLEW: case TIFFConstants.COMPRESSION_CCITTRLE: @@ -300,7 +303,10 @@ public static Image GetTiffImage(RandomAccessFileOrArray s, int page, bool direc protected static Image GetTiffImageColor(TIFFDirectory dir, RandomAccessFileOrArray s) { int predictor = 1; TIFFLZWDecoder lzwDecoder = null; - int compression = (int)dir.GetFieldAsLong(TIFFConstants.TIFFTAG_COMPRESSION); + int compression = TIFFConstants.COMPRESSION_NONE; + if (dir.IsTagPresent(TIFFConstants.TIFFTAG_COMPRESSION)) { + compression = (int)dir.GetFieldAsLong(TIFFConstants.TIFFTAG_COMPRESSION); + } switch (compression) { case TIFFConstants.COMPRESSION_NONE: case TIFFConstants.COMPRESSION_LZW: From a9792d724dd4c2361cc24cb4646ef614d15a80bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20S=C3=B8ndergaard?= Date: Wed, 30 Nov 2016 18:20:45 +0100 Subject: [PATCH 04/31] Fixed an issue in OCGParser that could cause a KeyNotFoundException --- .../iTextSharp.xtra/iTextSharp/text/pdf/ocg/OCGParser.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/ocg/OCGParser.cs b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/ocg/OCGParser.cs index 4b01c2a9c..f4f0bb4ca 100644 --- a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/ocg/OCGParser.cs +++ b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/ocg/OCGParser.cs @@ -191,8 +191,9 @@ public virtual void Parse(PRStream stream, PdfDictionary resources) { /// its operands /// protected internal static void ProcessOperator(OCGParser parser, PdfLiteral @operator, IList operands) { - PdfOperator op = operators[@operator.ToString()]; - if (op == null) { + PdfOperator op; + if (!operators.TryGetValue(@operator.ToString(), out op) || op == null) + { op = operators[DEFAULTOPERATOR]; } op.Process(parser, @operator, operands); From d4defd5940b97c9a61eba9ece31609f841c08b26 Mon Sep 17 00:00:00 2001 From: Amedee Van Gasse Date: Fri, 24 Mar 2017 11:44:29 +0100 Subject: [PATCH 05/31] Change BUILDING.md for .NET --- BUILDING.md | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/BUILDING.md b/BUILDING.md index 30dc49328..1d4272ce6 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -1,18 +1 @@ -To build iText, Maven must be installed: http://maven.apache.org/ - -Running install without a profile will generate the itextpdf jar: - -```mvn install``` - -When using the profile 'all' also the source and javadoc jars will be generated: - -```mvn install -P all``` - -If you are in need of the asian font jars, you can run one of the following commands: - -```mvn clean install -f itext-asian.pom``` -```mvn clean install -f itext-asiancmaps.pom``` - -If you need the hyphenation jar, execute: - -```mvn clean install -f itext-hyph-xml.pom``` +To build **iText 5 .NET** (aka iTextSharp), you need to build `src/BuildAll.sln`. From e167cfdf90bd5a3a2318d31613ac39d8aeb32e15 Mon Sep 17 00:00:00 2001 From: Alexey Subach Date: Mon, 27 Mar 2017 17:42:40 +0300 Subject: [PATCH 06/31] Add possibility to provide policy to the TSA server. Suggested by Filipe Gomes --- .../text/pdf/security/TSAClientBouncyCastle.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/core/iTextSharp/text/pdf/security/TSAClientBouncyCastle.cs b/src/core/iTextSharp/text/pdf/security/TSAClientBouncyCastle.cs index ec7cb9985..c5a7fd400 100644 --- a/src/core/iTextSharp/text/pdf/security/TSAClientBouncyCastle.cs +++ b/src/core/iTextSharp/text/pdf/security/TSAClientBouncyCastle.cs @@ -92,6 +92,10 @@ public class TSAClientBouncyCastle : ITSAClient { /** Hash algorithm */ protected internal String digestAlgorithm; + + /** TSA request policy */ + private string tsaReqPolicy = null; + /** * Creates an instance of a TSAClient that will use BouncyCastle. * @param url String - Time Stamp Authority URL (i.e. "http://tsatest1.digistamp.com/TSA") @@ -135,6 +139,14 @@ virtual public void SetTSAInfo(ITSAInfoBouncyCastle tsaInfo) { this.tsaInfo = tsaInfo; } + public virtual String GetTSAReqPolicy() { + return tsaReqPolicy; + } + + public virtual void SetTSAReqPolicy(String tsaReqPolicy) { + this.tsaReqPolicy = tsaReqPolicy; + } + /** * Get the token size estimate. * Returned value reflects the result of the last succesfull call, padded @@ -163,6 +175,9 @@ public virtual byte[] GetTimeStampToken(byte[] imprint) { // Setup the time stamp request TimeStampRequestGenerator tsqGenerator = new TimeStampRequestGenerator(); tsqGenerator.SetCertReq(true); + if (!string.IsNullOrEmpty(tsaReqPolicy)) { + tsqGenerator.SetReqPolicy(tsaReqPolicy); + } // tsqGenerator.setReqPolicy("1.3.6.1.4.1.601.10.3.1"); BigInteger nonce = BigInteger.ValueOf(DateTime.Now.Ticks + Environment.TickCount); TimeStampRequest request = tsqGenerator.Generate(DigestAlgorithms.GetAllowedDigests(digestAlgorithm), imprint, nonce); From 9be6c1d21adb8a811ab18474867d838266012176 Mon Sep 17 00:00:00 2001 From: Alexey Subach Date: Tue, 28 Mar 2017 16:48:13 +0300 Subject: [PATCH 07/31] Port itextpdf commit f9b3338 Fix flattening form fields in case of normal appearance contains PdfIndirectReference. Suggested by https://github.com/lbonco --- src/core/iTextSharp/text/pdf/PdfStamperImp.cs | 4 ++- .../iTextSharp/text/pdf/FlatteningTest.cs | 30 ++++++++++++++++++ .../pdf/FlatteningTest/cmp_tpl3_flattened.pdf | Bin 0 -> 353160 bytes .../text/pdf/FlatteningTest/tpl3.pdf | Bin 0 -> 39010 bytes 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/FlatteningTest/cmp_tpl3_flattened.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/FlatteningTest/tpl3.pdf diff --git a/src/core/iTextSharp/text/pdf/PdfStamperImp.cs b/src/core/iTextSharp/text/pdf/PdfStamperImp.cs index 37d681edf..10efed611 100644 --- a/src/core/iTextSharp/text/pdf/PdfStamperImp.cs +++ b/src/core/iTextSharp/text/pdf/PdfStamperImp.cs @@ -897,7 +897,9 @@ virtual internal protected void FlatFields() { PdfDictionary appDic = merged.GetAsDict(PdfName.AP); PdfObject as_n = null; if (appDic != null) { - as_n = appDic.GetAsStream(PdfName.N); + as_n = appDic.GetDirectObject(PdfName.N); + if (as_n == null) + as_n = appDic.GetAsStream(PdfName.N); if (as_n == null) as_n = appDic.GetAsDict(PdfName.N); } diff --git a/src/extras/itextsharp.tests/iTextSharp/text/pdf/FlatteningTest.cs b/src/extras/itextsharp.tests/iTextSharp/text/pdf/FlatteningTest.cs index 9162ca06e..027a1a0ef 100644 --- a/src/extras/itextsharp.tests/iTextSharp/text/pdf/FlatteningTest.cs +++ b/src/extras/itextsharp.tests/iTextSharp/text/pdf/FlatteningTest.cs @@ -41,6 +41,7 @@ source product. address: sales@itextpdf.com */ using System; +using System.Collections.Generic; using System.IO; using iTextSharp.testutils; using iTextSharp.text; @@ -62,6 +63,35 @@ public void SetUp() { Directory.CreateDirectory(OUTPUT_FOLDER); } + [Test] + public virtual void TestFlatteningNewAppearances() { + String OUT = "tpl3_flattened.pdf"; + + PdfReader reader = new PdfReader(RESOURCES_FOLDER + "tpl3.pdf"); + AcroFields fields = reader.AcroFields; + if (fields != null && fields.Fields != null && fields.Fields.Count > 0) { + FileStream @out = null; + @out = new FileStream(OUTPUT_FOLDER + OUT, FileMode.Create); + PdfStamper stamp = new PdfStamper(reader, @out); + stamp.FormFlattening = true; + AcroFields form = stamp.AcroFields; + + foreach (KeyValuePair e in form.Fields) { + form.SetField(e.Key, e.Key); + } + + stamp.Close(); + @out.Close(); + } + reader.Close(); + + CompareTool compareTool = new CompareTool(); + String errorMessage = compareTool.Compare(OUTPUT_FOLDER + OUT, RESOURCES_FOLDER + "cmp_" + OUT, OUTPUT_FOLDER, "diff"); + if (errorMessage != null) { + Assert.Fail(errorMessage); + } + } + [Test] public virtual void TestFlattening() { const string INPUT_FOLDER = RESOURCES_FOLDER + "input/"; diff --git a/src/extras/itextsharp.tests/resources/text/pdf/FlatteningTest/cmp_tpl3_flattened.pdf b/src/extras/itextsharp.tests/resources/text/pdf/FlatteningTest/cmp_tpl3_flattened.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0b680e7d673bc5f2beb86674a600880fdc587ea2 GIT binary patch literal 353160 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�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 literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/FlatteningTest/tpl3.pdf b/src/extras/itextsharp.tests/resources/text/pdf/FlatteningTest/tpl3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..18bfb24421195fb89c92541c8d4c7d1aec44f078 GIT binary patch literal 39010 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 Date: Fri, 31 Mar 2017 12:32:45 +0300 Subject: [PATCH 08/31] Port itextpdf commits 72ebad6, 0819d72, 4b6cf0f Fix exception when signing a document that is encrypted with certificate. Suggested by https://github.com/MADzO --- src/core/iTextSharp/text/pdf/PdfReader.cs | 3 +- .../iTextSharp/text/pdf/PdfEncryptionTest.cs | 72 ++++++++++++++++++ .../text/pdf/PdfEncryptionTest/in.pdf | Bin 0 -> 950 bytes .../text/pdf/PdfEncryptionTest/test.cer | Bin 0 -> 899 bytes .../text/pdf/PdfEncryptionTest/test.p12 | Bin 0 -> 2598 bytes 5 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/PdfEncryptionTest/in.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/PdfEncryptionTest/test.cer create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/PdfEncryptionTest/test.p12 diff --git a/src/core/iTextSharp/text/pdf/PdfReader.cs b/src/core/iTextSharp/text/pdf/PdfReader.cs index 97e72f603..2f0566e0a 100644 --- a/src/core/iTextSharp/text/pdf/PdfReader.cs +++ b/src/core/iTextSharp/text/pdf/PdfReader.cs @@ -909,7 +909,8 @@ private void ReadDecryptedDocObj() { else ownerPasswordUsed = true; } - } else if (filter.Equals(PdfName.PUBSEC)) { + } else if (filter.Equals(PdfName.PUBSEC)) { + decrypt.documentID = documentID; if ((cryptoMode & PdfWriter.ENCRYPTION_MASK) == PdfWriter.ENCRYPTION_AES_256) decrypt.SetKey(encryptionKey); else diff --git a/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfEncryptionTest.cs b/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfEncryptionTest.cs index f3e1448ea..f7ea4cd2a 100644 --- a/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfEncryptionTest.cs +++ b/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfEncryptionTest.cs @@ -43,11 +43,21 @@ source product. using System; using System.Collections.Generic; using System.IO; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; using System.Text; +using System.util; using iTextSharp.testutils; using iTextSharp.text; using iTextSharp.text.pdf; +using iTextSharp.text.pdf.security; using NUnit.Framework; +using Org.BouncyCastle.Asn1.X509; +using Org.BouncyCastle.Crypto; +using Org.BouncyCastle.Crypto.Parameters; +using Org.BouncyCastle.Pkcs; +using Org.BouncyCastle.X509; +using X509Certificate = System.Security.Cryptography.X509Certificates.X509Certificate; namespace itextsharp.tests.iTextSharp.text.pdf { class PdfEncryptionTest { @@ -109,5 +119,67 @@ public void ComputeUserPasswordAES256() { Assert.IsNull(password); } + + [Test] + public void EncryptWithCertificateAndSignTest() { + String inPdf = SOURCE_FOLDER + "in.pdf"; + String outPdf = DEST_FOLDER + "encrypt_cert_signed.pdf"; + String tmpPdf = DEST_FOLDER + "encrypt_cert.pdf"; + + EncryptPdfWithCertificate(inPdf, tmpPdf, SOURCE_FOLDER + "test.cer"); + + var cert = new X509Certificate(); + cert.Import(SOURCE_FOLDER + "test.cer"); + + var pkstore = new Pkcs12Store(new FileStream(SOURCE_FOLDER + "test.p12", FileMode.Open, FileAccess.Read), "kspass".ToCharArray()); + string pkalias = null; + foreach (var a in pkstore.Aliases) + { + pkalias = ((string)a); + if (pkstore.IsKeyEntry(pkalias)) + break; + } + ICipherParameters certpk = pkstore.GetKey(pkalias).Key; + + var signCert = new X509Certificate2(SOURCE_FOLDER + "test.p12", "kspass"); + CertSign(signCert, new X509CertificateParser(), outPdf, new PdfReader(tmpPdf, Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(cert), certpk), "reason", "location"); + } + + public static void EncryptPdfWithCertificate(string sourceDocument, string targetDocument, string certPath) + { + var chain = new X509Certificate(); + chain.Import(certPath); + var cert = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(chain); + var certs = new Org.BouncyCastle.X509.X509Certificate[1] { cert }; + var reader = new PdfReader(sourceDocument); + var st = new PdfStamper(reader, new FileStream(targetDocument, FileMode.Create, FileAccess.Write), '\0', false); + int[] x = new int[1]; + x[0] = PdfWriter.ALLOW_SCREENREADERS; + st.SetEncryption(certs, x, PdfWriter.STANDARD_ENCRYPTION_40); + st.Close(); + } + + private static void CertSign(X509Certificate2 cert, X509CertificateParser cp, string destinationPath, PdfReader reader, string reason, string location) + { + var chain = new[] + { + cp.ReadCertificate(cert.RawData) + }; + + IExternalSignature externalSignature = new X509Certificate2Signature(cert, "SHA-1"); + + using (var fout = new FileStream(destinationPath, FileMode.Create, FileAccess.ReadWrite)) + { + using (var stamper = PdfStamper.CreateSignature(reader, fout, '\0', null, true)) + { + var appearance = stamper.SignatureAppearance; + appearance.Reason = reason; + appearance.Location = location; + MakeSignature.SignDetached(appearance, externalSignature, chain, null, null, null, 0, + CryptoStandard.CADES); + stamper.Close(); + } + } + } } } \ No newline at end of file diff --git a/src/extras/itextsharp.tests/resources/text/pdf/PdfEncryptionTest/in.pdf b/src/extras/itextsharp.tests/resources/text/pdf/PdfEncryptionTest/in.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2f59b49e6afeceecaabde04b1dc9fcba528baadf GIT binary patch literal 950 zcmah|O>fgM7#>JST?8Dsa6Tg%ki&S!(FN?kv;ihV?BwH?|X(!?!6T|7DNDBQU2 z$bl1A4j_TJ@f(nk5QRU`ZTt`H&@G~qz)}+X_47V?-siQmPQ6*cMN7$^oqzkG7ytn} zc&e1kuo;dyVX!&&IH?n#1_bVqXvCiY%dS*n&WLxUOy6u=Fl9b_rgf0+W?JW}*+!o~ z{nX5ZOlv;Nv_9m%-~MvO?#z{ohxJ!qf2p@-Ybd&VhTOAt6@CGIE3~klMn&y{=CDqp}|3~y;D;iQD&xZ?LN`*Jcv>m=6 dz!H9BllB$d#AN85K^Mn-N{27`P=1>+kVWyB^ zLtz6!5QjsUD;0K9u33GtO@{7_91q}E= zLfpdaU?Kldm_}x(#?a!_A_E0+UPBWDOCuu#OG6-tlHfNo1PWLfSwaQq@1!P1CFEdX zWMyD(V&rEqXkz4IYGPz$_`Sk%W6$-D%MGn^hd#60`Geai#;!By9ibvYh`=+mC zZD4sPk`r<6_`}oF*Q}U$R6oSv+1yo*txn5+Zpd4@I8~(e#E(_MRV@qd{C~ica!Bl2 z_Jyf8HZ>@ytYWt5I%PMRuc~ZnUe(6^lOykb{6GEMj_c;@4=bE`o_g5m=6%N#jd|UI zUP8g|EpuvDU#`f~o@aT_)p&aQvH9D@yPN!W`8>B2dMi2qNop=v`<)LfqgcfsWy%QSy<{dn>tXP$F)3EQb><|;;aG`l1o`2YL*dndV1F~Kb^Xz@{z<*o7>kI)?nf?~ zlh#Rh^Cgzddu_4o@4DSPkOL8zwt#`i$dGwovg!96%bi;noOhRQlQ=cSo+VvA?fSvz zzr0g#|0`kYiw9M`Wsbv0&RrNg&yb(TDbqbJ$Rf5r*0$cJVziClYO^`6!9ouH1! z*FS~KGt}~;Yc8rtl&t!u?9b=tt2JA(=FIK+wZ@A)_3gtK%zvZ#cE{JnUQgq%xcVE^ nbxqW`Q?ae~Yv1jCai_GtSZLWfF3&rEC?tPt+kH;Y2?F^50A5$q literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/PdfEncryptionTest/test.p12 b/src/extras/itextsharp.tests/resources/text/pdf/PdfEncryptionTest/test.p12 new file mode 100644 index 0000000000000000000000000000000000000000..dc8d373503a793f5ed11bf48364ccd837dce937f GIT binary patch literal 2598 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 vGTsAQiS1qzwzeqZ9WaYrhA@cZb)JpoX5 Date: Fri, 31 Mar 2017 12:47:41 +0300 Subject: [PATCH 09/31] Avoid language features of .NET > 2.0 --- .../iTextSharp/text/pdf/PdfEncryptionTest.cs | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfEncryptionTest.cs b/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfEncryptionTest.cs index f7ea4cd2a..76ccf5af4 100644 --- a/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfEncryptionTest.cs +++ b/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfEncryptionTest.cs @@ -128,12 +128,12 @@ public void EncryptWithCertificateAndSignTest() { EncryptPdfWithCertificate(inPdf, tmpPdf, SOURCE_FOLDER + "test.cer"); - var cert = new X509Certificate(); + X509Certificate cert = new X509Certificate(); cert.Import(SOURCE_FOLDER + "test.cer"); - var pkstore = new Pkcs12Store(new FileStream(SOURCE_FOLDER + "test.p12", FileMode.Open, FileAccess.Read), "kspass".ToCharArray()); + Pkcs12Store pkstore = new Pkcs12Store(new FileStream(SOURCE_FOLDER + "test.p12", FileMode.Open, FileAccess.Read), "kspass".ToCharArray()); string pkalias = null; - foreach (var a in pkstore.Aliases) + foreach (object a in pkstore.Aliases) { pkalias = ((string)a); if (pkstore.IsKeyEntry(pkalias)) @@ -141,18 +141,18 @@ public void EncryptWithCertificateAndSignTest() { } ICipherParameters certpk = pkstore.GetKey(pkalias).Key; - var signCert = new X509Certificate2(SOURCE_FOLDER + "test.p12", "kspass"); + X509Certificate2 signCert = new X509Certificate2(SOURCE_FOLDER + "test.p12", "kspass"); CertSign(signCert, new X509CertificateParser(), outPdf, new PdfReader(tmpPdf, Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(cert), certpk), "reason", "location"); } public static void EncryptPdfWithCertificate(string sourceDocument, string targetDocument, string certPath) { - var chain = new X509Certificate(); + X509Certificate chain = new X509Certificate(); chain.Import(certPath); - var cert = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(chain); - var certs = new Org.BouncyCastle.X509.X509Certificate[1] { cert }; - var reader = new PdfReader(sourceDocument); - var st = new PdfStamper(reader, new FileStream(targetDocument, FileMode.Create, FileAccess.Write), '\0', false); + Org.BouncyCastle.X509.X509Certificate cert = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(chain); + Org.BouncyCastle.X509.X509Certificate[] certs = new Org.BouncyCastle.X509.X509Certificate[1] { cert }; + PdfReader reader = new PdfReader(sourceDocument); + PdfStamper st = new PdfStamper(reader, new FileStream(targetDocument, FileMode.Create, FileAccess.Write), '\0', false); int[] x = new int[1]; x[0] = PdfWriter.ALLOW_SCREENREADERS; st.SetEncryption(certs, x, PdfWriter.STANDARD_ENCRYPTION_40); @@ -161,18 +161,18 @@ public static void EncryptPdfWithCertificate(string sourceDocument, string targe private static void CertSign(X509Certificate2 cert, X509CertificateParser cp, string destinationPath, PdfReader reader, string reason, string location) { - var chain = new[] + Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(cert.RawData) }; IExternalSignature externalSignature = new X509Certificate2Signature(cert, "SHA-1"); - using (var fout = new FileStream(destinationPath, FileMode.Create, FileAccess.ReadWrite)) + using (FileStream fout = new FileStream(destinationPath, FileMode.Create, FileAccess.ReadWrite)) { - using (var stamper = PdfStamper.CreateSignature(reader, fout, '\0', null, true)) + using (PdfStamper stamper = PdfStamper.CreateSignature(reader, fout, '\0', null, true)) { - var appearance = stamper.SignatureAppearance; + PdfSignatureAppearance appearance = stamper.SignatureAppearance; appearance.Reason = reason; appearance.Location = location; MakeSignature.SignDetached(appearance, externalSignature, chain, null, null, null, 0, From cb34723c6326bff723c49cd8a4286b62480a69f8 Mon Sep 17 00:00:00 2001 From: jz5 Date: Sun, 9 Apr 2017 00:41:43 +0900 Subject: [PATCH 10/31] Fix wrong recursive call: Call overload method --- src/core/iTextSharp/text/pdf/PdfContentByte.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/iTextSharp/text/pdf/PdfContentByte.cs b/src/core/iTextSharp/text/pdf/PdfContentByte.cs index b82298f35..be3a26202 100644 --- a/src/core/iTextSharp/text/pdf/PdfContentByte.cs +++ b/src/core/iTextSharp/text/pdf/PdfContentByte.cs @@ -2729,7 +2729,7 @@ virtual public void Arc(double x1, double y1, double x2, double y2, double start */ public virtual void Ellipse(double x1, double y1, double x2, double y2) { - Ellipse((double)x1, (double)y1, (double)x2, (double)y2); + Ellipse((float)x1, (float)y1, (float)x2, (float)y2); } /** From 3dce9c3b895bff1528e6c229d1d5197324a8f0c6 Mon Sep 17 00:00:00 2001 From: Bart De Meyer Date: Wed, 12 Apr 2017 13:14:14 +0200 Subject: [PATCH 11/31] Hyperlink 'gratis' to Wikipedia article https://en.wikipedia.org/wiki/Gratis_versus_libre Closes https://github.com/itext/itextsharp/pull/29 --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 698594436..d96cdf524 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ iText is licensed as [AGPL][agpl] software. AGPL is a free / open source software license. -This doesn't mean the software is gratis! +This doesn't mean the software is [gratis][gratis]! Buying a license is mandatory as soon as you develop commercial activities distributing the iText software inside your product or deploying it on a network @@ -39,3 +39,4 @@ Contact sales for more info: http://itextpdf.com/sales [agpl]: LICENSE.md [building]: BUILDING.md [contributing]: CONTRIBUTING.md +[gratis]: https://en.wikipedia.org/wiki/Gratis_versus_libre \ No newline at end of file From 6bb4afdcd5416592641e98a170caa67a775b62f8 Mon Sep 17 00:00:00 2001 From: Ilya Idamkin Date: Thu, 20 Apr 2017 20:48:51 +0300 Subject: [PATCH 12/31] Port commit 6ca0f4adcd: Fix incorrect rotation of flattened acroField. Add test. The rotation of programmatically filled form filed was already applied via matrix of generated appearance stream. So there is no need to apply it again on form flattening. DEV-1856 --- src/core/iTextSharp/text/pdf/PdfStamperImp.cs | 40 ++++++++++-------- .../iTextSharp/text/pdf/FlatteningTest.cs | 24 +++++++++++ .../pdf/FlatteningTest/cmp_rotatedField.pdf | Bin 0 -> 62109 bytes .../text/pdf/FlatteningTest/rotatedField.pdf | Bin 0 -> 61930 bytes 4 files changed, 46 insertions(+), 18 deletions(-) create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/FlatteningTest/cmp_rotatedField.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/FlatteningTest/rotatedField.pdf diff --git a/src/core/iTextSharp/text/pdf/PdfStamperImp.cs b/src/core/iTextSharp/text/pdf/PdfStamperImp.cs index 10efed611..dd913571d 100644 --- a/src/core/iTextSharp/text/pdf/PdfStamperImp.cs +++ b/src/core/iTextSharp/text/pdf/PdfStamperImp.cs @@ -903,6 +903,8 @@ virtual internal protected void FlatFields() { if (as_n == null) as_n = appDic.GetAsDict(PdfName.N); } + //The rotation can be already applied if the appearance stream was written to document during setField method + bool applyRotation = false; if (acroFields.GenerateAppearances) { if (appDic == null || as_n == null) { try { @@ -917,6 +919,7 @@ virtual internal protected void FlatFields() { PdfArray bbox = stream.GetAsArray(PdfName.BBOX); PdfArray rect = merged.GetAsArray(PdfName.RECT); if (bbox != null && rect != null) { + applyRotation = true; float rectWidth = rect.GetAsNumber(2).FloatValue - rect.GetAsNumber(0).FloatValue; float bboxWidth = bbox.GetAsNumber(2).FloatValue - bbox.GetAsNumber(0).FloatValue; float rectHeight = rect.GetAsNumber(3).FloatValue - rect.GetAsNumber(1).FloatValue; @@ -1002,27 +1005,28 @@ virtual internal protected void FlatFields() { if (app != null) { Rectangle box = PdfReader.GetNormalizedRectangle(merged.GetAsArray(PdfName.RECT)); PdfContentByte cb = GetOverContent(page); - cb.SetLiteral("Q "); - /* - * Apply field rotation - */ - AffineTransform tf = new AffineTransform(); - double fieldRotation = 0; - if (merged.GetAsDict(PdfName.MK) != null) - { - if (merged.GetAsDict(PdfName.MK).Get(PdfName.R) != null) - { - fieldRotation = merged.GetAsDict(PdfName.MK).GetAsNumber(PdfName.R).DoubleValue; + if (applyRotation) { + /* + * Apply field rotation + */ + AffineTransform tf = new AffineTransform(); + double fieldRotation = 0; + if (merged.GetAsDict(PdfName.MK) != null) { + if (merged.GetAsDict(PdfName.MK).Get(PdfName.R) != null) { + fieldRotation = merged.GetAsDict(PdfName.MK).GetAsNumber(PdfName.R).DoubleValue; + } } + //Cast to radians + fieldRotation = fieldRotation*Math.PI/180; + //Clamp to [-2*Pi, 2*Pi] + fieldRotation = fieldRotation%(2*Math.PI); + //Calculate transformation matrix + tf = CalculateTemplateTransformationMatrix(tf, fieldRotation, box); + cb.AddTemplate(app, tf); + } else { + cb.AddTemplate(app, box.Left, box.Bottom); } - //Cast to radians - fieldRotation = fieldRotation * Math.PI / 180; - //Clamp to [-2*Pi, 2*Pi] - fieldRotation = fieldRotation % (2 * Math.PI); - //Calculate transformation matrix - tf = CalculateTemplateTransformationMatrix(tf, fieldRotation, box); - cb.AddTemplate(app, tf); cb.SetLiteral("q "); } } diff --git a/src/extras/itextsharp.tests/iTextSharp/text/pdf/FlatteningTest.cs b/src/extras/itextsharp.tests/iTextSharp/text/pdf/FlatteningTest.cs index 027a1a0ef..f7d53888b 100644 --- a/src/extras/itextsharp.tests/iTextSharp/text/pdf/FlatteningTest.cs +++ b/src/extras/itextsharp.tests/iTextSharp/text/pdf/FlatteningTest.cs @@ -331,5 +331,29 @@ public void TestAnnotationFlatteningWithSkewAndRotation() { Assert.Fail(errorMessage); } } + + [Test] + public void TestRotatedFilledField() { + String file = "rotatedField.pdf"; + + PdfReader pdfReader = new PdfReader(RESOURCES_FOLDER + file); + PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(OUTPUT_FOLDER + file, FileMode.Create)); + + AcroFields fields = pdfStamper.AcroFields; + fields.SetField("Text1", "TEST"); + fields.GenerateAppearances = true; + + pdfStamper.FormFlattening = true; + pdfStamper.Close(); + pdfReader.Close(); + // compare + CompareTool compareTool = new CompareTool(); + String errorMessage = compareTool.CompareByContent(OUTPUT_FOLDER + file, RESOURCES_FOLDER + "cmp_" + file, + OUTPUT_FOLDER, "diff"); + if (errorMessage != null) + { + Assert.Fail(errorMessage); + } + } } } diff --git a/src/extras/itextsharp.tests/resources/text/pdf/FlatteningTest/cmp_rotatedField.pdf b/src/extras/itextsharp.tests/resources/text/pdf/FlatteningTest/cmp_rotatedField.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2ca54188af6b37e31170c0c7259c823ea1685242 GIT binary patch literal 62109 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 Rp|WrV5KvH1+e8Nh{4e&((RKg; literal 0 HcmV?d00001 From bd461258d765f4417f1b592cfbba3065c5a8030d Mon Sep 17 00:00:00 2001 From: "joris.schellekens" Date: Mon, 8 May 2017 12:08:57 +0200 Subject: [PATCH 13/31] DEV-1859 Added check to prevent ill-formatted StructureElements to cause NullReferenceException. Instead InvalidPdfException is thrown. --- src/core/iTextSharp/text/error_messages/en.lng | 1 + src/core/iTextSharp/text/error_messages/nl.lng | 1 + .../iTextSharp/text/pdf/mc/StructureObject.cs | 6 +++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/core/iTextSharp/text/error_messages/en.lng b/src/core/iTextSharp/text/error_messages/en.lng index 9acb0ee18..bb8415d81 100644 --- a/src/core/iTextSharp/text/error_messages/en.lng +++ b/src/core/iTextSharp/text/error_messages/en.lng @@ -392,6 +392,7 @@ stdcf.not.found.encryption=/StdCF not found (encryption) stream.could.not.be.compressed.filter.is.not.a.name.or.array=Stream could not be compressed: filter is not a name or array. stream.object.dictionary.shall.not.contain.the.f.ffilter.or.fdecodeparams.keys=Stream object dictionary shall not contain the F, FFilter or FDecodeParams keys. structparent.not.found=StructParent not found. +structparentid.not.found=StructParent ID not found. support.only.sha1.hash.algorithm=Support only SHA1 hash algorithm. support.only.rsa.and.dsa.algorithms=Support only RSA and DSA algorithms. invalid.structparent=Invalid StructParent. diff --git a/src/core/iTextSharp/text/error_messages/nl.lng b/src/core/iTextSharp/text/error_messages/nl.lng index 3e149cbf7..98c8084e9 100644 --- a/src/core/iTextSharp/text/error_messages/nl.lng +++ b/src/core/iTextSharp/text/error_messages/nl.lng @@ -392,6 +392,7 @@ stdcf.not.found.encryption=/StdCF niet gevonden (encryption) stream.could.not.be.compressed.filter.is.not.a.name.or.array=Stream kon niet gecomprimeerd worden: de filter is geen naam of array. stream.object.dictionary.shall.not.contain.the.f.ffilter.or.fdecodeparams.keys=Stream object dictionary mag geen F, FFilter of FDecodeParams sleutels bevatten. structparent.not.found=StructParent niet gevonden. +structparentid.not.found=StructParent ID niet gevonden. support.only.sha1.hash.algorithm=Enkel ondersteuning voor SHA1 hash algoritme. support.only.rsa.and.dsa.algorithms=Enkel ondersteuning voor RSA en DSA algoritmes. invalid.structparent=Ongeldige StructParent. diff --git a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureObject.cs b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureObject.cs index d3fb03068..2f5e0794a 100644 --- a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureObject.cs +++ b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureObject.cs @@ -40,6 +40,7 @@ source product. For more information, please contact iText Software Corp. at this address: sales@itextpdf.com */ +using iTextSharp.text.exceptions; using System; namespace iTextSharp.text.pdf.mc @@ -68,7 +69,10 @@ public StructureObject(PdfDictionary structElem, PdfIndirectReference refa, PdfD this.refa = refa; this.obj = dict.GetDirectObject(PdfName.OBJ); this.objref = dict.GetAsIndirectObject(PdfName.OBJ); - this.structParent = ((PdfDictionary) obj).GetAsNumber(PdfName.STRUCTPARENT).IntValue; + PdfNumber sp = ((PdfDictionary)obj).GetAsNumber(PdfName.STRUCTPARENT); + if (sp == null) + throw new InvalidPdfException("structparentid.not.found"); + this.structParent = sp.IntValue; PdfIndirectReference pg = dict.GetAsIndirectObject(PdfName.PG); if (pg == null) pg = structElem.GetAsIndirectObject(PdfName.PG); From f6bcc886d5285ece83f29111aa1aa0efbdd10d93 Mon Sep 17 00:00:00 2001 From: Mathias Gartner Date: Mon, 15 May 2017 07:52:08 +0200 Subject: [PATCH 14/31] Fix portation error in PdfDictionary Java HashMap and .net Dictionary have different behaviour for null keys. Java allows null keys in the map, .net throws exceptions as soon as a null key is passed to the Dictionary. This fix prevents exceptions in methods that don't change the Dictionaries contents, since the Dictionary can never contain a null key. Therefore the Get and Contains were changed to return null/false for null keys. --- src/core/iTextSharp/text/pdf/PdfDictionary.cs | 5 +- .../iTextSharp/text/pdf/PdfDictionaryTest.cs | 71 +++++++++++++++++++ .../itextsharp.tests(VS2010).csproj | 1 + 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfDictionaryTest.cs diff --git a/src/core/iTextSharp/text/pdf/PdfDictionary.cs b/src/core/iTextSharp/text/pdf/PdfDictionary.cs index 0e3d9f9c2..0f076276d 100644 --- a/src/core/iTextSharp/text/pdf/PdfDictionary.cs +++ b/src/core/iTextSharp/text/pdf/PdfDictionary.cs @@ -221,6 +221,9 @@ virtual public void Clear() { * @return the previous PdfObject corresponding with the key */ virtual public PdfObject Get(PdfName key) { + if (key == null) + return null; + PdfObject obj; if (hashMap.TryGetValue(key, out obj)) return obj; @@ -320,7 +323,7 @@ virtual public int Size { } virtual public bool Contains(PdfName key) { - return hashMap.ContainsKey(key); + return key != null && hashMap.ContainsKey(key); } public virtual Dictionary.Enumerator GetEnumerator() { diff --git a/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfDictionaryTest.cs b/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfDictionaryTest.cs new file mode 100644 index 000000000..15e128fc9 --- /dev/null +++ b/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfDictionaryTest.cs @@ -0,0 +1,71 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2017 iText Group NV + Authors: iText Software. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation with the addition of the + following permission added to Section 15 as permitted in Section 7(a): + FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY + ITEXT GROUP. ITEXT GROUP DISCLAIMS THE WARRANTY OF NON INFRINGEMENT + OF THIRD PARTY RIGHTS + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Affero General Public License for more details. + You should have received a copy of the GNU Affero General Public License + along with this program; if not, see http://www.gnu.org/licenses or write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA, 02110-1301 USA, or download the license from the following URL: + http://itextpdf.com/terms-of-use/ + + The interactive user interfaces in modified source and object code versions + of this program must display Appropriate Legal Notices, as required under + Section 5 of the GNU Affero General Public License. + + In accordance with Section 7(b) of the GNU Affero General Public License, + a covered work must retain the producer line in every PDF that is created + or manipulated using iText. + + You can be released from the requirements of the license by purchasing + a commercial license. Buying such a license is mandatory as soon as you + develop commercial activities involving the iText software without + disclosing the source code of your own applications. + These activities include: offering paid services to customers as an ASP, + serving PDFs on the fly in a web application, shipping iText with a closed + source product. + + For more information, please contact iText Software Corp. at this + address: sales@itextpdf.com + */ +using System; +using iTextSharp.text.pdf; +using NUnit.Framework; + +namespace itextsharp.tests.iTextSharp.text.pdf +{ + public class PdfDictionaryTest + { + [Test] + public void PdfDictionaryGetReturnsNullIfKeyIsNull() + { + var dictionary = new PdfDictionary(); + + var value = dictionary.Get (null); + + Assert.IsNull (value); + } + + [Test] + public void PdfDictionaryContainsReturnsFalseIfKeyIsNull() + { + var dictionary = new PdfDictionary(); + + var contained = dictionary.Contains (null); + + Assert.False (contained); + } + } +} diff --git a/src/extras/itextsharp.tests/itextsharp.tests(VS2010).csproj b/src/extras/itextsharp.tests/itextsharp.tests(VS2010).csproj index 2876b0b62..514adc855 100644 --- a/src/extras/itextsharp.tests/itextsharp.tests(VS2010).csproj +++ b/src/extras/itextsharp.tests/itextsharp.tests(VS2010).csproj @@ -91,6 +91,7 @@ + From 29a01b8ddb2adf9c20f5d7f711e099d8e96766fe Mon Sep 17 00:00:00 2001 From: Alexey Subach Date: Fri, 26 May 2017 15:13:48 +0300 Subject: [PATCH 15/31] Port itextpdf commit e3b3f89 Better processing intructions handling during XML parsing. More flexible parser configuration DEV-1858 --- .../tool/xml/parser/StateController.cs | 8 +++++-- .../iTextSharp/tool/xml/parser/XMLParser.cs | 21 ++++++++++++++++++- .../tool/xml/parser/XMLParserMemory.cs | 10 +++++++++ .../ProcessingInstructionEncounteredState.cs | 1 + .../xml/parser/state/SelfClosingTagState.cs | 2 ++ .../tool/xml/parser/state/SpecialCharState.cs | 4 ++-- 6 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/StateController.cs b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/StateController.cs index bcc92b81a..bcdced25b 100644 --- a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/StateController.cs +++ b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/StateController.cs @@ -269,7 +269,7 @@ virtual public XMLParser UnquotedAttr() { * set Parser state to {@link StarCommentState}. * @return Parser */ - public XMLParser StarComment() + virtual public XMLParser StarComment() { return SetState(this.starComment); } @@ -278,9 +278,13 @@ public XMLParser StarComment() * set Parser state to {@link CloseStarCommentState}. * @return Parser */ - public XMLParser CloseStarComment() + virtual public XMLParser CloseStarComment() { return SetState(this.closeStarComment); } + + virtual public IState GetPreviousState() { + return previousState; + } } } diff --git a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/XMLParser.cs b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/XMLParser.cs index d70020559..db2e3e4e5 100644 --- a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/XMLParser.cs +++ b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/XMLParser.cs @@ -65,6 +65,7 @@ public class XMLParser { private string text = null; private TagState tagState; private Encoding charset; + private bool decodeSpecialChars = true; /** * Constructs a default XMLParser ready for HTML/XHTML processing. @@ -343,9 +344,14 @@ virtual public XMLParserMemory Memory() { */ virtual public void StartElement() { CurrentTagState(TagState.OPEN); + String tagName = this.memory.GetCurrentTag(); + IDictionary attributes = this.memory.GetAttributes(); + if (tagName.StartsWith("?")) { + Memory().ProcessingInstruction().Length = 0; + } CallText(); foreach (IXMLParserListener l in listeners) { - l.StartElement(this.memory.GetCurrentTag(), this.memory.GetAttributes(), this.memory.GetNameSpace()); + l.StartElement(tagName, attributes, this.memory.GetNameSpace()); } this.memory.FlushNameSpace(); } @@ -432,6 +438,19 @@ private void CurrentTagState(TagState state) { virtual public void SetMonitor(IParserMonitor monitor) { this.monitor = monitor; } + + /** + * Determines whether special chars like > will be decoded + * @param decodeSpecialChars true to decode, false to not decode + */ + virtual public void SetDecodeSpecialChars(bool decodeSpecialChars) { + this.decodeSpecialChars = decodeSpecialChars; + } + + virtual public bool IsDecodeSpecialChars() { + return decodeSpecialChars; + } + /** * @return the current buffer as a String */ diff --git a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/XMLParserMemory.cs b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/XMLParserMemory.cs index a6ec00bf5..e3459f88a 100644 --- a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/XMLParserMemory.cs +++ b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/XMLParserMemory.cs @@ -58,6 +58,7 @@ public class XMLParserMemory { private StringBuilder currentEntity = new StringBuilder(); private StringBuilder comment = new StringBuilder(); private StringBuilder baos = new StringBuilder(); + private StringBuilder processingInstruction = new StringBuilder(); private IDictionary attr; private String wsTag = ""; private String currentNameSpace = ""; @@ -98,6 +99,7 @@ virtual public void CurrentAttr(String attr) { virtual public bool HasCurrentAttribute() { return null != this.currentAttr; } + /** * Sets the current attribute value and adds the attribute (if it's not * null) to the attribute map. @@ -157,6 +159,14 @@ virtual public StringBuilder Comment() { return this.comment; } + /** + * Returns the xml processing instruction buffer + * @return processing instruction buffer + */ + virtual public StringBuilder ProcessingInstruction() { + return processingInstruction; + } + /** * Returns last tag that needs to be taken into account for HTML Whitespace handling.
* Used by {@link InsideTagHTMLState}, only for HTML processing. diff --git a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/ProcessingInstructionEncounteredState.cs b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/ProcessingInstructionEncounteredState.cs index bfa636d5a..1257d4ff4 100644 --- a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/ProcessingInstructionEncounteredState.cs +++ b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/ProcessingInstructionEncounteredState.cs @@ -71,6 +71,7 @@ public ProcessingInstructionEncounteredState(XMLParser parser) : base(parser) public override void Process(char character) { String tag = parser.BufferToString(); + this.parser.Memory().ProcessingInstruction().Append(character); if (name == null && Char.IsWhiteSpace(character)) { if (Char.IsWhiteSpace(character)) { diff --git a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/SelfClosingTagState.cs b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/SelfClosingTagState.cs index 95c85c4ab..0294b581e 100644 --- a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/SelfClosingTagState.cs +++ b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/SelfClosingTagState.cs @@ -70,6 +70,8 @@ virtual public void Process(char character) { this.parser.Flush(); this.parser.Memory().FlushNameSpace(); this.parser.SelectState().InTag(); + } else if (this.parser.SelectState().GetPreviousState() is ProcessingInstructionEncounteredState) { + this.parser.Memory().ProcessingInstruction().Append(character); } } } diff --git a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/SpecialCharState.cs b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/SpecialCharState.cs index b2df39fd7..b54ab8fcc 100644 --- a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/SpecialCharState.cs +++ b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/SpecialCharState.cs @@ -58,7 +58,7 @@ public class SpecialCharState : IState { * @param parser the XMLParser */ public SpecialCharState(XMLParser parser) { - this.parser =parser; + this.parser = parser; } /* (non-Javadoc) @@ -70,7 +70,7 @@ virtual public void Process(char character) { // if ("nbsp".Equals(entity.ToString())) { // parser.Append(' '); // TODO check yes or no if it's good idea to transform   into a space ? // } else { - char decoded = EntitiesToUnicode.DecodeEntity(entity.ToString()); + char decoded = parser.IsDecodeSpecialChars() ? EntitiesToUnicode.DecodeEntity(entity.ToString()) : (char)0; if (decoded == '\0') { parser.Append('&').Append(entity.ToString()).Append(';'); parser.Memory().LastChar = ';'; From 54145222a54539c19aace34b3f025057b773856c Mon Sep 17 00:00:00 2001 From: Ilya Idamkin Date: Mon, 5 Jun 2017 20:06:14 +0300 Subject: [PATCH 16/31] Port itextpdf commits c404b10, dcd551f Fix bug with using incorrect TrueType fonts when correct alternative is provided. DEVSIX-1261 --- src/core/iTextSharp/text/pdf/FontSelector.cs | 37 ++++++++++++++++---- src/core/iTextSharp/text/pdf/TrueTypeFont.cs | 9 +++++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/core/iTextSharp/text/pdf/FontSelector.cs b/src/core/iTextSharp/text/pdf/FontSelector.cs index ae426f2cb..9b31fa146 100644 --- a/src/core/iTextSharp/text/pdf/FontSelector.cs +++ b/src/core/iTextSharp/text/pdf/FontSelector.cs @@ -45,6 +45,7 @@ source product. using System.Globalization; using System.Text; using iTextSharp.text.error_messages; +using iTextSharp.text.log; namespace iTextSharp.text.pdf { /** Selects the appropriate fonts that contain the glyphs needed to @@ -56,8 +57,11 @@ namespace iTextSharp.text.pdf { * @author Paulo Soares */ public class FontSelector { + + private static readonly ILogger LOGGER = LoggerFactory.GetLogger(typeof(PdfSmartCopy)); protected List fonts = new List(); + protected List unsupportedFonts = new List(); protected Font currentFont = null; /** @@ -65,6 +69,10 @@ public class FontSelector { * @param font the Font */ virtual public void AddFont(Font font) { + if (!IsSupported(font)) { + unsupportedFonts.Add(font); + return; + } if (font.BaseFont != null) { fonts.Add(font); return; @@ -81,7 +89,7 @@ virtual public void AddFont(Font font) { * @return a Phrase with one or more chunks */ public virtual Phrase Process(String text) { - if (fonts.Count == 0) + if (GetSize() == 0) throw new ArgumentOutOfRangeException(MessageLocalization.GetComposedMessage("no.font.is.defined")); char[] cc = text.ToCharArray(); int len = cc.Length; @@ -95,7 +103,7 @@ public virtual Phrase Process(String text) { } } if (sb.Length > 0) { - Chunk ck = new Chunk(sb.ToString(), currentFont ?? fonts[0]); + Chunk ck = new Chunk(sb.ToString(), currentFont ?? GetFont(0)); ret.Add(ck); } return ret; @@ -111,8 +119,8 @@ protected virtual Chunk ProcessChar(char[] cc, int k, StringBuilder sb) { Font font = null; if(Utilities.IsSurrogatePair(cc, k)) { int u = Utilities.ConvertToUtf32(cc, k); - for(int f = 0; f < fonts.Count; ++f) { - font = fonts[f]; + for(int f = 0; f < GetSize(); ++f) { + font = GetFont(f); if (font.BaseFont.CharExists(u) || CharUnicodeInfo.GetUnicodeCategory(char.ConvertFromUtf32(u), 0) == UnicodeCategory.Format) { if (currentFont != font) { @@ -129,8 +137,8 @@ protected virtual Chunk ProcessChar(char[] cc, int k, StringBuilder sb) { } } else { - for(int f = 0; f < fonts.Count; ++f) { - font = fonts[f]; + for(int f = 0; f < GetSize(); ++f) { + font = GetFont(f); if(font.BaseFont.CharExists(c) || char.GetUnicodeCategory(c) == UnicodeCategory.Format) { if(currentFont != font) { if(sb.Length > 0 && currentFont != null) { @@ -147,5 +155,22 @@ protected virtual Chunk ProcessChar(char[] cc, int k, StringBuilder sb) { } return newChunk; } + + protected int GetSize() { + return fonts.Count + unsupportedFonts.Count; + } + + protected Font GetFont(int i) { + return i < fonts.Count ? fonts[i] : unsupportedFonts[i]; + } + + private bool IsSupported(Font font) { + BaseFont bf = font.BaseFont; + if (bf is TrueTypeFont && BaseFont.WINANSI.Equals(bf.Encoding) && !((TrueTypeFont)bf).IsWinAnsiSupported()) { + LOGGER.Warn(String.Format("cmap(1, 0) not found for TrueType Font {0}, it is required for WinAnsi encoding.", font)); + return false; + } + return true; + } } } diff --git a/src/core/iTextSharp/text/pdf/TrueTypeFont.cs b/src/core/iTextSharp/text/pdf/TrueTypeFont.cs index 52febe553..e7cbd4fcb 100644 --- a/src/core/iTextSharp/text/pdf/TrueTypeFont.cs +++ b/src/core/iTextSharp/text/pdf/TrueTypeFont.cs @@ -1636,6 +1636,15 @@ protected override int[] GetRawCharBBox(int c, String name) { return bboxes[metric[0]]; } + /** + * Checks whether this font may be used with winansi encoding. + * + * @return true if the font can be correctly used with winansi encodings + */ + internal bool IsWinAnsiSupported() { + return cmap10 != null; + } + public int MaxGlyphId { get { return maxGlyphId; } } From cc19a89a5cc34d4f1b086f4bf913337db7d03d12 Mon Sep 17 00:00:00 2001 From: "joris.schellekens" Date: Fri, 9 Jun 2017 10:33:06 +0200 Subject: [PATCH 17/31] ensure the pg entry can be optional --- .../iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureMCID.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureMCID.cs b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureMCID.cs index 4e6a8967b..2c169c5dc 100644 --- a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureMCID.cs +++ b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureMCID.cs @@ -58,7 +58,7 @@ public class StructureMCID : StructureItem { * @param obj an MCID */ public StructureMCID(PdfIndirectReference pg, PdfNumber mcid) { - this.pageref = pg.Number; + this.pageref = pg == null ? -1 : pg.Number; this.mcid = mcid.IntValue; } From e454b4cdb6f018fe796fc2ae1d9ac809c95b0145 Mon Sep 17 00:00:00 2001 From: Jorrit Schippers Date: Thu, 29 Jun 2017 17:27:47 +0200 Subject: [PATCH 18/31] prevent parsing of star comments in HTML change the HTML parser to only parse star comments in style tags and check for buffer space when deleting one character. --- .../iTextSharp/tool/xml/BugRunnerTest.cs | 1 + .../itextsharp.xmlworker.tests(VS2010).csproj | 1 + .../itextsharp.xmlworker.tests.csproj | 1 + .../resources/bugs/starcomments.html | 12 ++++++++++++ .../tool/xml/parser/state/InsideTagHTMLState.cs | 2 +- 5 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/extras/itextsharp.xmlworker.tests/resources/bugs/starcomments.html diff --git a/src/extras/itextsharp.xmlworker.tests/iTextSharp/tool/xml/BugRunnerTest.cs b/src/extras/itextsharp.xmlworker.tests/iTextSharp/tool/xml/BugRunnerTest.cs index f17442f7d..5c498d37d 100644 --- a/src/extras/itextsharp.xmlworker.tests/iTextSharp/tool/xml/BugRunnerTest.cs +++ b/src/extras/itextsharp.xmlworker.tests/iTextSharp/tool/xml/BugRunnerTest.cs @@ -65,6 +65,7 @@ virtual public void SetUp() { list.Add("3353957.html"); list.Add("ol-test.html"); list.Add("processing-instructions.html"); + list.Add("starcomments.html"); Directory.CreateDirectory(TARGET + "bugs/"); } diff --git a/src/extras/itextsharp.xmlworker.tests/itextsharp.xmlworker.tests(VS2010).csproj b/src/extras/itextsharp.xmlworker.tests/itextsharp.xmlworker.tests(VS2010).csproj index 3c1305cbb..0be0b3f4e 100644 --- a/src/extras/itextsharp.xmlworker.tests/itextsharp.xmlworker.tests(VS2010).csproj +++ b/src/extras/itextsharp.xmlworker.tests/itextsharp.xmlworker.tests(VS2010).csproj @@ -573,6 +573,7 @@ + diff --git a/src/extras/itextsharp.xmlworker.tests/itextsharp.xmlworker.tests.csproj b/src/extras/itextsharp.xmlworker.tests/itextsharp.xmlworker.tests.csproj index 6ed9ec91b..2d5dd17a5 100644 --- a/src/extras/itextsharp.xmlworker.tests/itextsharp.xmlworker.tests.csproj +++ b/src/extras/itextsharp.xmlworker.tests/itextsharp.xmlworker.tests.csproj @@ -571,6 +571,7 @@ + diff --git a/src/extras/itextsharp.xmlworker.tests/resources/bugs/starcomments.html b/src/extras/itextsharp.xmlworker.tests/resources/bugs/starcomments.html new file mode 100644 index 000000000..4bd41b8d3 --- /dev/null +++ b/src/extras/itextsharp.xmlworker.tests/resources/bugs/starcomments.html @@ -0,0 +1,12 @@ + + + + + + http://www.example.com/
* hi + + + + / + + \ No newline at end of file diff --git a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/InsideTagHTMLState.cs b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/InsideTagHTMLState.cs index e178852bd..15f944401 100644 --- a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/InsideTagHTMLState.cs +++ b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/parser/state/InsideTagHTMLState.cs @@ -95,7 +95,7 @@ virtual public void Process(char character) { } else if (character == '&') { this.parser.SelectState().SpecialChar(); } else { - if (character == '*' && this.parser.Memory().LastChar == '/') + if (this.parser.CurrentTag() == HTML.Tag.STYLE && character == '*' && this.parser.Memory().LastChar == '/' && parser.Memory().Current().Length > 0) { this.parser.SelectState().StarComment(); this.parser.Memory() From a5b19bab9b012ff20b0bfca8c669352352f17064 Mon Sep 17 00:00:00 2001 From: Valera Goman Date: Tue, 25 Jul 2017 18:42:19 +0300 Subject: [PATCH 19/31] Port commits 08cbe1f23, 8d456d848: Avoid expensive logging calls throughout the project DEV-1865 --- src/core/iTextSharp/text/pdf/PdfPTable.cs | 16 ++++++++++------ .../iTextSharp/text/pdf/security/LtvVerifier.cs | 10 ++++++++-- .../iTextSharp/text/pdf/security/OcspVerifier.cs | 4 +++- .../iTextSharp/text/pdf/mc/MCParser.cs | 12 +++++++++--- .../iTextSharp/text/pdf/mc/StructureItems.cs | 8 ++++++-- .../iTextSharp/text/pdf/util/SmartPdfSplitter.cs | 14 ++++++++++---- .../iTextSharp/tool/xml/html/head/Link.cs | 11 +++++++++-- .../iTextSharp/tool/xml/html/head/Style.cs | 4 +++- .../tool/xml/pipeline/end/PdfWriterPipeline.cs | 2 +- 9 files changed, 59 insertions(+), 22 deletions(-) diff --git a/src/core/iTextSharp/text/pdf/PdfPTable.cs b/src/core/iTextSharp/text/pdf/PdfPTable.cs index 2c2920679..4eaa8c42b 100644 --- a/src/core/iTextSharp/text/pdf/PdfPTable.cs +++ b/src/core/iTextSharp/text/pdf/PdfPTable.cs @@ -787,9 +787,10 @@ virtual public float WriteSelectedRows(int colStart, int colEnd, int rowStart, i colEnd = totalCols; else colEnd = Math.Min(colEnd, totalCols); - - LOGGER.Info(String.Format("Writing row {0} to {1}; column {2} to {3}", rowStart, rowEnd, colStart, colEnd)); - + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("Writing row {0} to {1}; column {2} to {3}", rowStart, rowEnd, colStart, + colEnd)); + } float yPosStart = yPos; PdfPTableBody currentBlock = null; @@ -1920,7 +1921,9 @@ virtual public bool CellEnds() { * @since iText 5.4.3 */ virtual public FittingRows GetFittingRows(float availableHeight, int startIdx) { - LOGGER.Info(String.Format("GetFittingRows({0}, {1})", availableHeight, startIdx)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("GetFittingRows({0}, {1})", availableHeight, startIdx)); + } if (startIdx > 0 && startIdx < rows.Count) { System.Diagnostics.Debug.Assert(GetRow(startIdx).GetCells()[0] != null); // top left cell of current page may not be null } @@ -1946,8 +1949,9 @@ virtual public FittingRows GetFittingRows(float availableHeight, int startIdx) { state.ConsumeRowspan(completedRowsHeight, rowHeight); } else { state.BeginCell(cell, completedRowsHeight, rowHeight); - LOGGER.Info(String.Format("Height after BeginCell: {0} (cell: {1})", state.height, cell.CachedMaxHeight)); - + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("Height after BeginCell: {0} (cell: {1})", state.height, cell.CachedMaxHeight)); + } } if (state.CellEnds() && state.height > maxCompletedRowsHeight) { maxCompletedRowsHeight = state.height; diff --git a/src/core/iTextSharp/text/pdf/security/LtvVerifier.cs b/src/core/iTextSharp/text/pdf/security/LtvVerifier.cs index 3e485ebe6..c49934953 100644 --- a/src/core/iTextSharp/text/pdf/security/LtvVerifier.cs +++ b/src/core/iTextSharp/text/pdf/security/LtvVerifier.cs @@ -88,7 +88,10 @@ public LtvVerifier(PdfReader reader) : base(null) { signatureName = names[names.Count - 1]; signDate = DateTime.Now; pkcs7 = CoversWholeDocument(); - LOGGER.Info(String.Format("Checking {0}signature {1}", pkcs7.IsTsp ? "document-level timestamp " : "", signatureName)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("Checking {0}signature {1}", pkcs7.IsTsp ? "document-level timestamp " : "", + signatureName)); + } } /** @@ -265,7 +268,10 @@ virtual public void SwitchToPreviousRevision() { names = fields.GetSignatureNames(); signatureName = names[names.Count - 1]; pkcs7 = CoversWholeDocument(); - LOGGER.Info(String.Format("Checking {0}signature {1}", pkcs7.IsTsp ? "document-level timestamp " : "", signatureName)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("Checking {0}signature {1}", pkcs7.IsTsp ? "document-level timestamp " : "", + signatureName)); + } } else { LOGGER.Info("No signatures in revision"); diff --git a/src/core/iTextSharp/text/pdf/security/OcspVerifier.cs b/src/core/iTextSharp/text/pdf/security/OcspVerifier.cs index ff472ec90..0d0abeadd 100644 --- a/src/core/iTextSharp/text/pdf/security/OcspVerifier.cs +++ b/src/core/iTextSharp/text/pdf/security/OcspVerifier.cs @@ -154,7 +154,9 @@ virtual public bool Verify(BasicOcspResp ocspResp, X509Certificate signCert, X50 else nextUpdateDate = nextUpdate.Value; if (signDate > nextUpdateDate) { - LOGGER.Info(String.Format("OCSP no longer valid: {0} after {1}", signDate, nextUpdateDate)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("OCSP no longer valid: {0} after {1}", signDate, nextUpdateDate)); + } continue; } // check the status of the certificate diff --git a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/MCParser.cs b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/MCParser.cs index 54ece412f..17e791c42 100644 --- a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/MCParser.cs +++ b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/MCParser.cs @@ -215,7 +215,9 @@ virtual public void Parse(PdfDictionary page, PdfIndirectReference pageref) { baos.Close(); stream.SetData(baos.ToArray()); // showing how many items are left - LOGGER.Info(String.Format("There are {0} items left for processing", items.Count)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("There are {0} items left for processing", items.Count)); + } } /** @@ -226,7 +228,9 @@ virtual public void Parse(PdfDictionary page, PdfIndirectReference pageref) { virtual protected void DealWithXObj(PdfName xobj) { PdfDictionary dict = xobjects.GetAsStream(xobj); PdfNumber structParent = dict.GetAsNumber(PdfName.STRUCTPARENT); - LOGGER.Info(String.Format("Encountered StructParent {0} in content", structParent)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("Encountered StructParent {0} in content", structParent)); + } if(structParent == null) return; StructureItem item = items[0]; @@ -247,7 +251,9 @@ virtual protected void DealWithMcid(PdfNumber mcid) if (mcid == null) return; StructureItem item = items[0]; - LOGGER.Info(String.Format("Encountered MCID {0} in content, comparing with {1}", mcid, item)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("Encountered MCID {0} in content, comparing with {1}", mcid, item)); + } switch (item.CheckMCID(pageref.Number, mcid.IntValue)) { case 0: diff --git a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureItems.cs b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureItems.cs index 90a22fd1f..1c66a4ef2 100644 --- a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureItems.cs +++ b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/mc/StructureItems.cs @@ -104,7 +104,9 @@ public StructureItems(PdfReader reader) { */ protected virtual void ProcessStructElems(PdfDictionary structElem, PdfIndirectReference refa) { - LOGGER.Info(String.Format("addStructureItems({0}, {1})", structElem, refa)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("addStructureItems({0}, {1})", structElem, refa)); + } if (structElem == null) return; ProcessStructElemKids(structElem, refa, structElem.GetDirectObject(PdfName.K)); @@ -120,7 +122,9 @@ protected virtual void ProcessStructElems(PdfDictionary structElem, PdfIndirectR */ protected virtual void ProcessStructElemKids(PdfDictionary structElem, PdfIndirectReference refa, PdfObject objecta) { - LOGGER.Info(String.Format("addStructureItem({0}, {1}, {2})", structElem, refa, objecta)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("addStructureItem({0}, {1}, {2})", structElem, refa, objecta)); + } if (objecta == null) return; StructureItem item; diff --git a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/util/SmartPdfSplitter.cs b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/util/SmartPdfSplitter.cs index 9075ded1d..f4638dc7a 100644 --- a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/util/SmartPdfSplitter.cs +++ b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/util/SmartPdfSplitter.cs @@ -62,7 +62,9 @@ public SmartPdfSplitter(PdfReader reader) { this.reader = reader; reader.Appendable = true; numberOfPages = reader.NumberOfPages; - LOGGER.Info(String.Format("Creating a splitter for a document with {0} pages", numberOfPages)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("Creating a splitter for a document with {0} pages", numberOfPages)); + } } public bool HasMorePages() { @@ -93,13 +95,17 @@ public bool Split(Stream os, long sizeInBytes) { page = counter.GetLength(resources); resources = counter.Resources; length += page + trailer + XrefLength(resources.Count); - LOGGER.Info(String.Format("Page {0}: Comparing {1} with {2}", currentPage, length, sizeInBytes)); - LOGGER.Info(String.Format(" page {0} trailer {1} xref {2}", page, trailer, XrefLength(resources.Count))); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("Page {0}: Comparing {1} with {2}", currentPage, length, sizeInBytes)); + LOGGER.Info(String.Format(" page {0} trailer {1} xref {2}", page, trailer, XrefLength(resources.Count))); + } if (!hasPage || length < sizeInBytes) { hasPage = true; copy.AddPage(copy.GetImportedPage(reader, currentPage)); length = copy.Os.Counter; - LOGGER.Info(String.Format("Size after adding page: {0}", length)); + if (LOGGER.IsLogging(Level.INFO)) { + LOGGER.Info(String.Format("Size after adding page: {0}", length)); + } if (length > sizeInBytes) overSized = true; currentPage++; } else { diff --git a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/html/head/Link.cs b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/html/head/Link.cs index 3a10a18d1..4006bc0ac 100644 --- a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/html/head/Link.cs +++ b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/html/head/Link.cs @@ -71,9 +71,16 @@ public override IList Start(IWorkerContext ctx, Tag tag) { try { GetCSSResolver(ctx).AddCssFile(href, false); } catch (CssResolverException e) { - LOG.Error(String.Format(LocaleMessages.GetInstance().GetMessage(LocaleMessages.LINK_404), href), e); + if (LOG.IsLogging(Level.ERROR)) { + LOG.Error(String.Format(LocaleMessages.GetInstance().GetMessage(LocaleMessages.LINK_404), href), e); + } + } catch (NoCustomContextException) { - LOG.Warn(String.Format(LocaleMessages.GetInstance().GetMessage(LocaleMessages.CUSTOMCONTEXT_404_CONTINUE), typeof(CssResolverPipeline).FullName)); + if (LOG.IsLogging(Level.WARN)) { + LOG.Warn(String.Format( + LocaleMessages.GetInstance().GetMessage(LocaleMessages.CUSTOMCONTEXT_404_CONTINUE), + typeof(CssResolverPipeline).FullName)); + } } } } diff --git a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/html/head/Style.cs b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/html/head/Style.cs index 7d1159213..f6f018cb0 100644 --- a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/html/head/Style.cs +++ b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/html/head/Style.cs @@ -78,7 +78,9 @@ public override IList Content(IWorkerContext ctx, Tag tag, String cont LOG.Trace(content); } } catch (NoCustomContextException) { - LOG.Warn(String.Format(LocaleMessages.GetInstance().GetMessage(LocaleMessages.CUSTOMCONTEXT_404_CONTINUE), typeof(CssResolverPipeline).FullName)); + if (LOG.IsLogging(Level.WARN)) { + LOG.Warn(String.Format(LocaleMessages.GetInstance().GetMessage(LocaleMessages.CUSTOMCONTEXT_404_CONTINUE), typeof(CssResolverPipeline).FullName)); + } } return new List(0); } diff --git a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/pipeline/end/PdfWriterPipeline.cs b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/pipeline/end/PdfWriterPipeline.cs index 57ec99c27..76f7880e6 100644 --- a/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/pipeline/end/PdfWriterPipeline.cs +++ b/src/extras/itextsharp.xmlworker/iTextSharp/tool/xml/pipeline/end/PdfWriterPipeline.cs @@ -124,7 +124,7 @@ private void Write(IWorkerContext context, ProcessObject po) { if (writable is WritableElement) { foreach (IElement e in ((WritableElement) writable).Elements()) { try { - if (!doc.Add(e)) { + if (!doc.Add(e) && LOG.IsLogging(Level.TRACE)) { LOG.Trace(String.Format( LocaleMessages.GetInstance().GetMessage(LocaleMessages.ELEMENT_NOT_ADDED), e.ToString())); From 72a8d567ce0b20c549669258145f8d4b19e0fa4e Mon Sep 17 00:00:00 2001 From: Valera Goman Date: Fri, 28 Jul 2017 15:18:58 +0300 Subject: [PATCH 20/31] Port commit f65f7a99d: Prevent XXE-vulnerability DEV-1863 --- src/core/iTextSharp/text/pdf/XfaForm.cs | 4 ++++ src/core/iTextSharp/text/xml/xmp/XmpReader.cs | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/core/iTextSharp/text/pdf/XfaForm.cs b/src/core/iTextSharp/text/pdf/XfaForm.cs index 0d50a34f0..bf5148eed 100644 --- a/src/core/iTextSharp/text/pdf/XfaForm.cs +++ b/src/core/iTextSharp/text/pdf/XfaForm.cs @@ -120,8 +120,11 @@ public XfaForm(PdfReader reader) { } bout.Seek(0, SeekOrigin.Begin); XmlTextReader xtr = new XmlTextReader(bout); + xtr.XmlResolver = null; + xtr.ProhibitDtd = false; domDocument = new XmlDocument(); domDocument.PreserveWhitespace = true; + domDocument.XmlResolver = null; domDocument.Load(xtr); ExtractNodes(); } @@ -1105,6 +1108,7 @@ virtual public void FillXfaForm(XmlReader reader) { virtual public void FillXfaForm(XmlReader reader, bool readOnly) { XmlDocument doc = new XmlDocument(); doc.PreserveWhitespace = true; + doc.XmlResolver = null; doc.Load(reader); FillXfaForm(doc.DocumentElement); } diff --git a/src/core/iTextSharp/text/xml/xmp/XmpReader.cs b/src/core/iTextSharp/text/xml/xmp/XmpReader.cs index 56952489b..6d0e112be 100644 --- a/src/core/iTextSharp/text/xml/xmp/XmpReader.cs +++ b/src/core/iTextSharp/text/xml/xmp/XmpReader.cs @@ -86,8 +86,11 @@ public XmpReader(byte[] bytes) { bout.Write(bytes, 0, bytes.Length); bout.Seek(0, SeekOrigin.Begin); XmlTextReader xtr = new XmlTextReader(bout); + xtr.XmlResolver = null; + xtr.ProhibitDtd = false; domDocument = new XmlDocument(); domDocument.PreserveWhitespace = true; + domDocument.XmlResolver = null; domDocument.Load(xtr); } From c58247f0a67f431fd5499cfde4e7d553cbb2b28a Mon Sep 17 00:00:00 2001 From: Alexey Subach Date: Thu, 3 Aug 2017 11:48:51 +0300 Subject: [PATCH 21/31] Port itextpdf commit c494099ff Replace remote image URL with static image from resources --- .../background_image_div01.html | 2 +- .../div/background_image_div01/itext.png | Bin 0 -> 2206 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 src/extras/itextsharp.xmlworker.tests/resources/com/itextpdf/tool/xml/examples/css/background/background_image/div/background_image_div01/itext.png diff --git a/src/extras/itextsharp.xmlworker.tests/resources/com/itextpdf/tool/xml/examples/css/background/background_image/div/background_image_div01/background_image_div01.html b/src/extras/itextsharp.xmlworker.tests/resources/com/itextpdf/tool/xml/examples/css/background/background_image/div/background_image_div01/background_image_div01.html index 8c05c59e6..cd7488b2a 100644 --- a/src/extras/itextsharp.xmlworker.tests/resources/com/itextpdf/tool/xml/examples/css/background/background_image/div/background_image_div01/background_image_div01.html +++ b/src/extras/itextsharp.xmlworker.tests/resources/com/itextpdf/tool/xml/examples/css/background/background_image/div/background_image_div01/background_image_div01.html @@ -6,7 +6,7 @@ texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttextvtexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext -
+
image from web texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext
diff --git a/src/extras/itextsharp.xmlworker.tests/resources/com/itextpdf/tool/xml/examples/css/background/background_image/div/background_image_div01/itext.png b/src/extras/itextsharp.xmlworker.tests/resources/com/itextpdf/tool/xml/examples/css/background/background_image/div/background_image_div01/itext.png new file mode 100644 index 0000000000000000000000000000000000000000..d961f4efacb9eef8aeb26892f5aa3404a7aec220 GIT binary patch literal 2206 zcmV;P2x0e$P)|H%_+h!2`;L-^F3=}K{QD$h{YfI-V98SO+n;hzxVAvEOvKhvzd$W^>RP(FI|7M{4w>% z@a^fBiOYzefBn5B=LsAU19lw#`}ZHytUu_lOIz$oydaN%CjI=|weiI>qfDitdNEF;uf^GSu zFB{BZ7JDlElO(H0_=Yy9EqHUm7Oiy%98!ZPor%a|O(IzYP!qRW668i-5`LlyYKt+W zhWcb6{=A7KQuh}Jvb$UWb+B+~ID_M)R3*;8S!k-_gl z`u%`(T*{;BM6iMArgsJ;tMR{Ex}6$BYv~}OO>OM-_Vf!D%{@(}Lf_kKst5$E?1^-I zB4tul6KqR#-bFJ%eiwYJ~qV*?4%5qNIraEz7`CjOPpJ}qy_VgqhRbWr( zw||O$+o_0TLy0`k3{QKnAyFxRJ7yM}YD-)rhw`pSd7;j=4lU&*_yuJ;U@Jq)R7IqS zh-$EozW4QVKelB+-+h(Z4$?{vm-r|AxaVxEWRObt%Fu6x*dv#%k{}J49#%+3)QPoT zrktYv?$}tT75L^TS&Li<(N?s(<3g+IPQ3wk$Wz-52?pTLAB<0pjILiq{cRIJbAi`y zrhMy>;(kcsV0jm@l|ba_4@6=|#u*NRmWibGmc$ZCq-065_}=fl9imNmFr&_3c^9$m zgo|jWW89+y=eUxaWxYHRmDKOzb6NHiKwpQj4w2rrfDtW0JQMD~J!{~WH*;~%;0|S1 zlJ;jI*tS1Fgg1sH3mx_o9{(oEl4uE{Dzcp-jYc}{Z0kf(b~Q%&pH_b>i{yqm5?oNLX9%CFU$hyusuyXPJ$6FLDYe8k!}Z)ep>;u0Q6f_65Kgk9rj#w zSduIwT0#SvvVe#Rsq6tQ@+u`BWSOpzlWdW8_oVIMz}e}ime+J+dgzj9i84tRtrAC$ zeSVikgopCfTsN)Pfg#~e+;cft5$S%OO($X{0i^?CJq$^*D#DE_kP}8SCF9&x_q;!J z*c1ObIwV;VEwNrS8#)fX)8eB@ETu!r!2(I!%fgcoe0$rb_fk3_ticHj+3i(HR41Bf zDEe*R+19_#qqOEV1S8sQKtK~T3(`6enMhHsEpgtEBuk^gdU_0`_ z!Idk&Is`XL@xa33|@bLa=cI?kiVJ1Ma?LDwa=}t=({(Akh*;sWL%X z4Y(5x$3eK(4aXle4aW%*EkTq`vLL;QD`pVl((YOXH5>;D85l|EL5-FmUI?}pgAfx9 z$3tg7FcRlvr!Pjd1W`J{1_cd5JkK)-v7mvGal`Qe^;;4xL6kwTEolVv;B0kRbn*&B zcg=;lfsyxypAoXinEEZH10n%w0?q~Tf^nW^-^O#mVt@#H(p<(A1vMOx2S&#Aw*$Hr ziFR8Fwg}yDQ*85%*s}CFX!;;Tks*Qt2SygMQBXP{>P#eX{2ND-T?VB4BZ>AkB#TYU zd=R30ZopmYAjAR(Mxu8Ddm)o(w}xZ`iDZfN^f%Q`qC;Ay#@9lyQB}hbMZZO4``+2< zx4Vv=<4Ckygs$VfFm)uRh-$6u2|_#a1Xr5|+(`8?H_ZR_SY(X6IABz33u?6W1sy#b z(ry$61~Ngf&Nqxiz8J~_7kL}sfVipEGNSzfn>NdSO82Y{pu+}DxhropFtYCc*QnN^ zAlk_$7+&s_YK;H6A=hT&2upjdV^8!Qcvqzkn`1pdzYX2``fc5#*-?|e$D6mOU$9H3 z={g{=ChX>YqxaMS1ILEnYC@EW6sw3wgX>4Ojx`t3=E?|vNIf7ri=32TlsUaS^WPF2b#l?6^S=6+6@8oY7Atm1+#c?j2{_I&V`D*RZOC z0EyB%3sUJPx1fFDreUrf<0AbwE?Jv2mx=;eP=J07}BBB2uQ#TmS$707*qoM6N<$f*`UNZ~y=R literal 0 HcmV?d00001 From a20bdea71e6620791a97b817d05fa1e306b0f361 Mon Sep 17 00:00:00 2001 From: Ilya Idamkin Date: Thu, 3 Aug 2017 12:46:01 +0300 Subject: [PATCH 22/31] Port commit 4dabef86e7: Throw exception on adding null key to PdfDictionary It doesn't make sense from pdf point to have dictionary with null key. Also fix porting error with throwing exception on null key remove. DEV-1862 --- .../iTextSharp/text/error_messages/en.lng | 1 + .../iTextSharp/text/error_messages/nl.lng | 1 + src/core/iTextSharp/text/pdf/PdfDictionary.cs | 8 ++++- .../iTextSharp/text/pdf/PdfDictionaryTest.cs | 32 +++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/core/iTextSharp/text/error_messages/en.lng b/src/core/iTextSharp/text/error_messages/en.lng index bb8415d81..850eefc75 100644 --- a/src/core/iTextSharp/text/error_messages/en.lng +++ b/src/core/iTextSharp/text/error_messages/en.lng @@ -272,6 +272,7 @@ it.is.not.possible.to.free.reader.in.merge.fields.mode=It is not possible to fre java.awt.image.fetch.aborted.or.errored=java.awt.Image fetch aborted or errored java.awt.image.interrupted.waiting.for.pixels=java.awt.Image Interrupted waiting for pixels! jpeg2000.enumerated.colour.space.19.(CIEJab).shall.not.be.used=JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. +key.is.null=key is null. keyword.encrypt.shall.not.be.used.in.the.trailer.dictionary=Keyword Encrypt shall not be used in the trailer dictionary. lab.cs.black.point=The BlackPoint entry in Lab color space could be only an array of three numbers [XB YB ZB]. All three of these numbers shall be non-negative. Default value: [0.0 0.0 0.0]. lab.cs.range=The Range entry in Lab color space could be only an array of four numbers [amin amax bmin bmax]. Default value: [-100 100 -100 100]. diff --git a/src/core/iTextSharp/text/error_messages/nl.lng b/src/core/iTextSharp/text/error_messages/nl.lng index 98c8084e9..196a70f4f 100644 --- a/src/core/iTextSharp/text/error_messages/nl.lng +++ b/src/core/iTextSharp/text/error_messages/nl.lng @@ -272,6 +272,7 @@ it.is.not.possible.to.free.reader.in.merge.fields.mode=freeReader is niet mogeli java.awt.image.fetch.aborted.or.errored=Ophalen van java.awt.Image afgebroken of misgelopen. java.awt.image.interrupted.waiting.for.pixels=java.awt.Image onderbroken; aan het wachten op pixels! jpeg2000.enumerated.colour.space.19.(CIEJab).shall.not.be.used=JPEG2000 enumerated colour space 19 (CIEJab) mag niet gebruikt worden. +key.is.null=sleutel is nul. keyword.encrypt.shall.not.be.used.in.the.trailer.dictionary=Keyword Encrypt mag niet gebruikt worden in de trailer dictionary. lab.cs.black.point=De BlackPoint entry in Lab color space mag enkel een array zijn van drie getallen [XB YB ZB]. Al deze getallen moeten niet-negatief zijn. Standaardwaarde: [0.0 0.0 0.0]. lab.cs.range=De Range entry in Lab color space mag enkel een array zijn van vier getallen [amin amax bmin bmax]. Standaardwaarde: [-100 100 -100 100]. diff --git a/src/core/iTextSharp/text/pdf/PdfDictionary.cs b/src/core/iTextSharp/text/pdf/PdfDictionary.cs index 0f076276d..4d27ae548 100644 --- a/src/core/iTextSharp/text/pdf/PdfDictionary.cs +++ b/src/core/iTextSharp/text/pdf/PdfDictionary.cs @@ -44,6 +44,7 @@ source product. using System.IO; using System.Collections.Generic; using iTextSharp.text.pdf.intern; +using iTextSharp.text.error_messages; namespace iTextSharp.text.pdf { /** @@ -154,6 +155,8 @@ public override void ToPdf(PdfWriter writer, Stream os) { * @param value value of the entry (a PdfObject) */ virtual public void Put(PdfName key, PdfObject value) { + if (key == null) + throw new ArgumentNullException(MessageLocalization.GetComposedMessage("key.is.null")); if (value == null || value.IsNull()) hashMap.Remove(key); else @@ -168,6 +171,8 @@ virtual public void Put(PdfName key, PdfObject value) { * @param value value of the entry (a PdfObject) */ virtual public void PutEx(PdfName key, PdfObject value) { + if (key == null) + throw new ArgumentNullException(MessageLocalization.GetComposedMessage("key.is.null")); if (value == null) return; Put(key, value); @@ -202,7 +207,8 @@ virtual public void PutAll(PdfDictionary dic) { * @param key key of the entry (a PdfName) */ virtual public void Remove(PdfName key) { - hashMap.Remove(key); + if (key != null) + hashMap.Remove(key); } /** diff --git a/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfDictionaryTest.cs b/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfDictionaryTest.cs index 468cffc5c..72cc3d99f 100644 --- a/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfDictionaryTest.cs +++ b/src/extras/itextsharp.tests/iTextSharp/text/pdf/PdfDictionaryTest.cs @@ -67,5 +67,37 @@ public void PdfDictionaryContainsReturnsFalseIfKeyIsNull() Assert.False(contained); } + + [Test] + public void PdfDictionaryRemoveDoesNothingIfKeyIsNull() + { + PdfDictionary dictionary = new PdfDictionary(); + + dictionary.Remove(null); + } + + [Test] + public void PdfDictionaryPutThrowsExceptionIfKeyIsNull() + { + PdfDictionary dictionary = new PdfDictionary(); + + ArgumentNullException ex = Assert.Throws(delegate { + dictionary.Put(null, new PdfName("null")); + }); + + Assert.AreEqual(ex.ParamName, "key is null."); + } + + [Test] + public void PdfDictionaryPutExThrowsExceptionIfKeyIsNull() + { + PdfDictionary dictionary = new PdfDictionary(); + + ArgumentNullException ex = Assert.Throws(delegate { + dictionary.PutEx(null, new PdfName("null")); + }); + + Assert.AreEqual(ex.ParamName, "key is null."); + } } } From 04c3107d2a63031ff1a6de0c342c33e5ecf68f29 Mon Sep 17 00:00:00 2001 From: Valera Goman Date: Thu, 3 Aug 2017 14:12:49 +0300 Subject: [PATCH 23/31] Perform formatted logger message similar to java DEV-1865 --- src/core/iTextSharp/text/pdf/PdfPRow.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/iTextSharp/text/pdf/PdfPRow.cs b/src/core/iTextSharp/text/pdf/PdfPRow.cs index 26eed39c1..bdc22b008 100644 --- a/src/core/iTextSharp/text/pdf/PdfPRow.cs +++ b/src/core/iTextSharp/text/pdf/PdfPRow.cs @@ -649,7 +649,10 @@ virtual public void CopyRowContent(PdfPTable table, int idx) { * an empty row would result */ virtual public PdfPRow SplitRow(PdfPTable table, int rowIndex, float new_height) { - LOGGER.Info("Splitting " + rowIndex + " " + new_height); + if (LOGGER.IsLogging(Level.INFO)) + { + LOGGER.Info(String.Format("Splitting row {0} available height: {1}", rowIndex, new_height)); + } // second part of the row PdfPCell[] newCells = new PdfPCell[cells.Length]; float[] calHs = new float[cells.Length]; From 0f32f1239d50b7812f9a7b4ca6bc6d3227d1c9ca Mon Sep 17 00:00:00 2001 From: Vladimir Osipchuk Date: Fri, 4 Aug 2017 13:07:34 +0300 Subject: [PATCH 24/31] Port 4d3958d: Enable line style operators processing while cleaning up. Fix cmps. DEV-1879 --- .../pdfcleanup/PdfCleanUpContentOperator.cs | 2 -- .../cmp_dashedBezier.pdf | Bin 7778 -> 7783 bytes .../cmp_dashedClosedRotatedTriangles.pdf | Bin 14301 -> 14313 bytes .../cmp_dashedStyledClosedBezier.pdf | Bin 7863 -> 7872 bytes .../cmp_degenerateCases.pdf | Bin 32931 -> 16931 bytes .../cmp_lotOfDashes.pdf | Bin 33385 -> 12557 bytes .../PdfCleanUpProcessorTest/cmp_miterTest.pdf | Bin 6456 -> 6227 bytes .../cmp_styledLineArts.pdf | Bin 16303 -> 16328 bytes 8 files changed, 2 deletions(-) diff --git a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/pdfcleanup/PdfCleanUpContentOperator.cs b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/pdfcleanup/PdfCleanUpContentOperator.cs index 190935264..c66d6c14d 100644 --- a/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/pdfcleanup/PdfCleanUpContentOperator.cs +++ b/src/extras/iTextSharp.xtra/iTextSharp/text/pdf/pdfcleanup/PdfCleanUpContentOperator.cs @@ -160,8 +160,6 @@ public virtual void Invoke(PdfContentStreamProcessor pdfContentStreamProcessor, disableOutput = true; } } - } else if (lineStyleOperators.Contains(operatorStr)) { - disableOutput = true; } else if (textShowingOperators.Contains(operatorStr) && !AllChunksAreVisible(cleanUpStrategy.Chunks)) { disableOutput = true; diff --git a/src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/cmp_dashedBezier.pdf b/src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/cmp_dashedBezier.pdf index 6912938612eaaf695492dc765aa84d47fa97ed6d..69785bcd955558df3f5b72474d6dfefeeb7197d0 100644 GIT binary patch delta 903 zcmaE4^W0{`DOPTC19M|TLo-8jL&M2eSuKPj82KzY%1bg_0D6BLxFfhgw8bR9i@> z{`}U-Th=qB3eLSzy#9FEy4#}Xf1h4Xu`MR$s13ou~?nVu|MFrtb=`{xPO;)-63&RdEIA9^%sLA zmaODx4OO2KksqlM_VoC=6DE_IWBPaWB|W?A$i|zW*!;|c-O<>h)VBsTl7Vjvjq=+JeO5~=E_mQ6<-WU3e6!4+<+txO%w%0E zbG<@ApXb;PufC0%|4wNrsB8Dm^b8k!Fm0-VNR{RmP!$R~NDua#qM%^S}7 zg>PO-o26;neM!@^<<80eXP2?P`&PjFCnqyXL~|zJkxrkTb&zMR&XXVcfA4>Y{`Xn^ z-qqr}|Cs*YIXHi_hlma1^_rQPVu)E9LezO9S!`-G$ delta 849 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 G$G-sA6O8Qu delta 3568 zcmZXOcRUn+{Ku_q%GoO?uB^+s;hb?r8If_>N5f3c%n`*M*?Zif>@%{3bG8bR(U)+@ z$T}J%l@Px2tM5O*$M4tY^T+G`etuq$*X#4i_nmM3p#Tp80*9iY5X5gKu>(BVEj^s> z`el$#1H_r(qy)f47Ni>WH9&^t6aox^gP|xZC`1#1(ERN_6q5TJo)^B$`Cr6JR51x7 zEWr$?J`?`J$%259x=#p_MwEGpSd%*GHopAl*7JOLeL&?R+$hbTb>ZR?{tfejB%XzB z;7h;=rL=0!N34F(K}bJci1^)C=K1ny;qx%N2g&psi@&~ooA#Btz-YN}w3dDRYvWLr zc(}KCym#=cFm+sY^lAFU#zx61PNci=aF6~pE8^F|SUb|W_&`Fy?luobYM_1PAOEP#bac+-y41|r^8Wbd1P zvMEd=994YD#yF3Kd25$eoN)fBHQw!CL%TlLzmGGSew#CEq+}~xxfVpT&E0IgTFc)N zT9O7Wvz4S!Wjv1e4bSEfkF0OEdxZmURWW-NSUex%Tvf6U-bzg^0hdM(9rAtMmjB4K z&E9XFxK#bYmUVi5MbK%BhyV0GyHZz#rx>drWldE35-_hbO_oeU(_HCZFIHgdtV=;` zJi(9Py!B&F&J9VGxsy29X#*4^AA2;$OkSFuW2@if91@jH`m`vI~vS*M!)6As-q-s z^1P`G2*JYjdl=|t?ARa_?j^e}nieEg4(zlmuUqEfq_}MHCgZw`*&m$C0X`|-L%Z9K&BAwsuUKF;$ww9ihn}BwXVlB2 z`*Nj+f-LW&$cBNyep=c+zj-pK=3pv~wb@$0CuZ<>TI#nJd# z6h`ZuXR6>%KylEYmjlM-qr8g3KRcn26e;T?rgP0BflW=kAx`1VcFI(q9DOlvTtzHz zg2Z*^43Vz;qW~kvNq<M**>Il%;DB>&4Lp?0UQl=Bjh8AiJ6^RU;qz_oQ=XEkYm*)?kWq-y8j1hKPxY$|gXue>v+pMlN?xWn!WtRz;lB$L+xfmQf5W9Xh&hP=Pht*JCMn!Ai1U!4;I!18_cq116W=(>7 zQ{^sh_{X4vvZF*1ziFR-7JI!OO%d_ZYvKnrAv;l)_mC`JXTFt>mCardO}*D3{088%7ZNW}L8bX;v_9I6jS(?SfKW(P8$$WOe=R;NnBoo_LYOuu9E z;ytVL#g#HVvuCT69M3Lap+!(6g!k&+GBJ#|$Z4L{;0zI5jf8MD3-d;KqcRr6QI+Z0 z%Z=g}yN09HiDbl<@~^L3<>!0SiIre^3&~#1$?~t_#$P`^v+9TjK=U1h9j)3yc^9UI zjK9XUlIsHuUGRw#rO^QH-t)LD3NL>O6s(l{M(>)ciNNC;-21NU`V?|FE(=SJp+vpx zB^Y0!dGzrL#H@(QJ1mU4G!lALY5EZ$gx?g9E2Ak~Ox8R+yfsU>y*`jglvU1T(#2-8 zT{8CQko9S|aisWU1FmtQKaw!>)*0Wk=S#%MfENwx^w#e)_%*OQ|M<pjuWB4Axa*!lzsXPS=y4Grg^69VZYK7g<^VmSUFZeT zDi6=Agg8k*?#k}UT61Fj!1r12Lzoi7BC=1cXN=fT9sBG4z!HUBY)GCpLw?}fUOUEq zB7Z%e9T?e@TclOK!()nBZ0$cIEJ_<~k-KPm$)6M3XErY@(Q%{`E8SYspk9Mdcokz; zq}}1a@u0`@k$F8ZQ^UpS*JsINp%FkrnX9NzQUs!mGi)hbA(^<1*1+%dA~_J_DM^kj zg-KMYq_Q@R%LHwyN4c|+tgsWPCQj>r(F0EZXuoh88uj6)4|R3MGSz8VYFI;yf}*SK zjr~iht<~?*8|4NFvjWP!iwU%5R$` zel^O>Ql|^`77&%$BfFDtgUkyCd+cjV(Ak_QQcCM<^CpsP;B2-;!jK?#>JcK@ zddSj)-rQ1ts^yeZe=-}#{LH~ukTPRgys#%QPAcNVE8#r09CusU}DY|d5%7TTV1M%8{LceCWS7v4C-k01|S zYQf-5#KWbGDvo6ECE>bIVHxE}Z(w(PDF5h6?(KyRK`eQ#K}-8CChOVnXyXl}n`!R& z#1kT0lLD??QFf-druk2$I}+r)RP5#br?TrE*+naDXY*o|$XcuPz(f!*cP@gn?;b&i z9HMoK-lo6>9tzb;%ig@0x1uuC`7Y+>$ueJDyEhJiB@^c2VCnjw<_w}fU%krjHmAOl z_j2^5E2eqQ0NtG2=_@IKB{P}@g2s|FDw{Ui^teDdD1&4(A~ zIb5l=>#pM)+U+OKB)V(M#&sn;V29_0m>cHppPbdjH0e>V-_df_w%tq|{+HNY-L9z` zl$Dm8C#2Bmc#v>D&?ILnw-g5Ol6rnfB(!n;Q+ub!s+Y^5#^J6DiYygZNtuRoz%4RZ)@mwxYwI z8@OVJ%;uf~ES~6ZcN7YHT~H=orM+t|EUFVc!N`2EtE_95(>s=IlC-oP=v;o5?VOB- zxV^1Q@=3a{{g0EWYQ~QW{~>P`S-6NTsqovNkVq#?n;`xG@oq=tq?kT`=w*ql*8z(I zKqKTUa&f(4C~Y3g$i8HK?I*S3ZiYjp&F~yF+)mwB{$|2hb>#a89|i@9i8BdmkA1JR z&*8{S2nx1ECkv0x9d`t=pItzx(%yGa9H^{`Gt9B7$!`28@=@c^aB#aE)_qijFxeUv zap8b>1n>i0RsrZ`qh;-O^v@S0qi#xoPbWRw_3G`vKkUHZnPc$me!?3-Jbc62y7tzB z_SUZO&Wv2PP2#)gT~3s%m2eQN>y3M&5j}878Kfch4O3M#p%oqH>XKkKJE4P)6CtX6 z;M#S6*V05|9Ofid-$2d{y<75g-DvZRQDV*1gwOEus}-5+A@I^&FQfcfSjBj;q*o_6 zhR}!`{`mSc-hHgi9`A$k6yIwWoB13=Crqc!-ZAR9&jTH(CW)?Pc~rBI>gdEYp{B@>>7 z-MABJFQS49wKaJWBGO`K${LoD(#LOCcG@sf8=nCCs&znA#@%O0@t9rOb#G^@3DIQa zcWZlwgbaV|)VvYpL3b_N5>%+ZwA$DY!*dpd-0QUBuhw-qW{!BT>*M^iv7gd;_Fqb$ zUH6g(Jh!&UEUYBh&4FS_!YWGuy`qI~#7+1wn|)Vqmxs#i6%v~Yj)q4M7I}|3a%H*| zs3c`c7ST(-K6p1De1L-*3J3vS141ExKZ z|A(omsi{N%V(Mxde>0@oUks)G7lT3}$p3sM|68mEh5TI%g(1}ce;`y1_SXlYFc^}g zg>=L~+}+?1Cp9-19O8^{c6C*Ea{qmy?ye9d45bc(ps%CR+@L#FZozmk;ymKKI@r=o h*TT}s+=@E@?{pU*eAmsLTMdSQYjA@=`sN1Q{{smca!ddK diff --git a/src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/cmp_dashedStyledClosedBezier.pdf b/src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/cmp_dashedStyledClosedBezier.pdf index 53954703a8b3dbfea225763f75ce973c476ddf8a..cd850e07afe70602e8ddb57e38ff02423fce4429 100644 GIT binary patch delta 1247 zcmdmPd%$*s3M;p{fw{4vp_!q%p}}N*)(n|-3Z{CddWJ^2!G4Yb!5;o03M-8a3=DLQ z3=GXDC$cI`zRoJoWM;Pc2apml*EKNLH8u<}G_x`^w*s1=&Y_Gc7{yT}cL>wmLkNR6 zzvp%&%TlPqOe z6trYc(^Hp7n+a2SVgyd_oAXgluyv)#^Nb^A*S_yn-nJ@X>9jc;=P#MOTyNdHf>%-o zr5{&y^T*!Vz%S?0#aS3Ld;i88Z8~{gOXvN$)7ssV)Vm`+Nh4?B6`#G4H)eg@Ww`Xt z%@syBR+QWoxXNXAbNbhR)#)Mu<7g!`o8~*SX#!5Ua=`nyehly&iP$>GGoun zCr>zA7U@2^pqZ_{d|K`AgRKWU&xCzk`DJnCTb*+jvkEI`%cpL-EwpaV=!)_6d7ZmYOffD!-aSDs_0Ac^B8&hz7+Zxm6NMG0h3TcKEp- zud0zg9I%%mrRycjMys4Uj)_;NZ~7Iaw{Obj>0Np0+>eA8XfsNOc}TTy-Fz%@&%S+) zoBbyo+;PjU?{dU>yZY;@H&1L>eUv3*b=CU%`~35@zq_0-4->wg6}I@}(MdVp(Tnp> zyWaVGFMLJnhTiN4wa03bC&%($5-a$s`1;Os`Eb>zC+7*qh<$x?xNc?N$E%a1zs?c+ zD!lAhclFP?)%`c*f0XV29d!Te{oCKHo z(|69#D@n~ODULQ*Fi;3mumF*B>=4A-`DWWqNU?9~X8@pF7y@qN&`M-7V^$d*acul&?>w>&2uP z=O3{Zc22y#M(owuLl=9V9-HEwzWh{zdj0ENimN2~j{I7oJ<-i+eyv2#ix{bom(CZz zxM98WqSNZKX;z6-vQpc3Zl1Hf!K6!HKvisG!paA3%QnA07^Lz03D4JE(Tq8K-(ENt z@Xl;=Su>gS_09=Xmr6-w9piVayS6(kWv$z^EU(?`pFJoPJr}*vW#|2t3ECSbyx0=r z$`BPs;Sh8~cZdD-renMP&P{aC_^HG<_fuI>o@$?b4$rwK`?}6wTmLLQo%7h$ zp5wP4X>Gngz2NDjYgOSEc+y)=k5IFbI0{r&D$}H<63HBk+p-+x1!&je9od8Rjg1?S1L=uVp45pc31LEl{@matx;^hE7&fkpD{1Hc~xO;V>Zvt2X_B=XleTQ z^&~`JDdzdT)auy&X?IpW-?L)A!PWRXr{CYHK2rDpzWrC{|9kKLWBl`>H->BTT@e+= z$pvDflf?2jw~8HOt2a{s<~IWag**i=FvGya)YJ%F%+%P_07J~w%n(D&%+MG^%-qZz zL(Ia&1R~~zu-Men94d$qGdDEDaG<%7DW;gQvGHUPxoAT}BLmCi0l}U|&Uece@ z#Rz1C{+o#PSrcIC>|ao3V2ktuzWsSpKutCo*f9Jp!+YhJ77Zj6L}gKp!`MP1xhmjP4yT2w8CntUx10I zO@Tz}e}ns|e*xyAF$KzK{?Q}SCnYY?`~ojcYXr2>{)J~ebFzv!y8kSZ4Y)>U3{2Af zMTLOI(f?u%UFnU1J^FtjPiTlU{DMXlg9$)?{@*lM0lo9TfIm2I0@O0{3PE&H_NoYP zq=2f7C=@0Ml@x=);4n#;m=IKq9}49cgczVv_C9t%PebTBod-G#;798hd?loaGT8!^zZPXw*>~gSb zTEjKhTbG%U5E8tg(tA`$kqm zi%TvQu*$22TiX)@Xvp4q0jO-{3ea8_24tR1Sz-Me{PLM3zc!Kp+ zTuteUtQME945^^>T6JdaJCd5;<$=yM!GH*HvAv3~Y~LO`2B||^L1tO)QtL%m8y8~?GHGO~8ib{8lvaoot)|N)F-CVT)2-8$7gh9}*&>Qo zH-G=dd^}2}1YIx87B!`}X!UWhpg>CQVK$y6wc_wBA~rvgzG##V1_$(%!jOq6k;FxO znPsnD%bgX}@q7x^QrQWpsaM(u<2q?L!uku0l5V6EJIviF?RX}1v#b*X;>9`%5cnRR z%~Vh8QK^=QCh6rRr%8MNKvPI7wiD#WHDo}byH9P3g_=a)D5oJ$v0~tWzCZvFF574& zOZkVF5;L<1N)m*0nKplE%E2I9b-|Hcc0}|NLO33W z$h&7IjPa*PlSj+$;0(HSjb{!2pyCJvOY@BDYI@u;zb{p*r;|hUkd-EUs$u1pP7YP{ z4KLN|Ui!M~c7syNb3u9IjK%Hqf;~XlQYO<79+=+%fz+VI6szneR7ae9zh*vy2c-WWJha zIl^Hlu}tS$-8WQQ-TvC%=>A2=XeA0G4w3lbK{mz|_{SEt?eS2X>I`o(xcTB8i*dy7 zH6k_S(Mnnb!5r2Ig2A!S`%O1af>=k$2z&M=Gx5BzOM+vaibV$qdY7xGmDymbO{1w( zG7X}6X)>O*T@IoeUZG$2c>TJb(0f~CMz?M{JbHl$M;6j(bMX0)DsNvXc)>j}_p}7L z+JaxBFOqU$9$l-(Z!@k`cOVeNm6%Ugsp{07Rb?!9odb6zuUba;X$mJFO$L!cb*OASEg%W57tb-?t+ z9DN99u;~)Bcq^L&Oh_KFT&Hd?m?Kq^+5?7*_rORd5YCCSG{^!#lI*}sm6hP zoX1gI{?=F|y8kI5%9go&#>UE&TE0_Fpe2VUC^z z}iz<#3D$MXzKD4+^;mEeu+e@XA=LIt- znC`JNppy7Mgh4qQYs zLezD?#CdK0p(P)8N=bdR0a~Vqa_pOP(<196-(EVXRgQn^sEsIgm z3UC!vgNf}JZ4>|GxW~(!T~)Zb-aBsn<$L??Q?6y*x9kXu-&?6$gq>K1IooDSbg^Wr zIX8PbJN}>y?b`9ge>JvMdcj;JDdY0p@>bMrFfZzjCe;t28;8S_gk3!7;)<+0DIJA(#xP1R=MFp_oZ`&6Kye8HFPKmus+q4pnQO1-;Hk z--zlu>u0Ou;kLi&Y8akPtL})~at#`0*Ui8(v?V}a1l`dg>~L+25X=R{@8oZrdsoYB z=!Z6*p+n4Y0(0y|vAB1I$YW{|wXwsnO{-W8c(O|)H- zDF*8lJvJ_lnwA`wn+O(6p424wl^#h3XBNmtxi%KDht~(FiZx&B9vck_pQkUXPfA}d zAZf}f(@sekNieImo=!O4aH-UF*a&=lvCu+$SpaPoSNzE3>98CkhMUKtW#=VmoeN9t z`;f5bMysc3DL=t$`@IS25y}$U+reni@f5^K-ea*8iqg2|NmB6j=&n;>2l^JpLV#fy z-_rS!dnnBmht{Ec5{MYSFGKnPf4wouk(*yBy8}?dqh?PtWe7y=(J;Fl1R&=X7hrt=rtay zaK;p=tCdl{;>G>!X?xtJSb=#Dq%Q)t90H}^jVl%>CTpbW0 zDB=kb?ngu+XU^N2ZjCBqI+44ZCn~F0+cZ`ZBeVX^qX_#v;fjJ!=bJwa;=?Fe8Ee-08A_MGX4Z;I z8S0N61iKs%F?4T~OybHZOtq0rN>*;Y53D>(mklgbyA(=wbhvUoKSU&$EAwAh$ZQC@Ziw0#pufY3i76U7wDj%Vub&Nn`Dr!9$u@?R z)`}fkONrNkSu-J?^15?nlFEs_o`wgtc`F*Cj`2LXi_0b$z)@~E__tDEAS{^Qu%)iH z&vDy0jVDes+TVJAVOfJe;~>5{g*3zdK)7k%eR?b zeQ#x^q#M;@IxirX;_>f@TPiH+9HfCM4M{DzG()1Rc_|0N4=DTuU2|?e+vqL4kkTCR zy9{8yW4s=?&Lz8OuRXl35+o>lFrre(x7Zf*2K-~R0v%lLJBeJ%D{THzPh z1J-A5V?=Wu(<6)B8)$3XKIl$wpL0<7kenxxyZWu|Q$}&#-Qvim-0qxJmxG6^!OUU` z=}i1hK@VV7HQ;mjhTStrP*Eu@X75kRV6w!(`3=ytXkh~_AC)NGhPIBzSzK@kj zzw%AqsoT$rQMewc)?i)Le3vq54}E5ML5L?{*B8STmQzoL+|d}D?z%z*@!_0DP{xS# zR`)oEuznU%7g+7UQ#iDVlh1Q@3-2$8YMVAc({--s$UPEEo&&Q9PPy-mx#cM(w9#7fxbK&r(j{P98cm0f{4pl**U zAq|W^$49Z*T^%8WS7zYosvFx9+IJ*Y0slc;`;!^*`68Kj7G2DI7HS643-E+Y8Pc6+ zJ5NT(ECyn#>0nsYz^4w`yqtDpueoir36zoV-F?Kv=>gE2%$Ico=QCDhmU9FzEZ5)JVwVD5s zU|crA?k2kTMOgI&4c3mQBwEL>wqclrLGq(IdzX5B!QKl~`-sEg)e5&t-r{`JQ7EFe zMW{*^2Qii&Z`gh6c3nlZxxtwP6}0)}+^IR7bEBQvdv{{Mq$oju?HQ{*u)j9miel!; zJ2%QdP5UHsvm5@@ur*iUC)t_{Q8T0O+^AFJX@vc>=dFrK{BFOh_|>Z7$1^)UU8U!LR@5% zqTm60bmR9*hKS&_nO#5r7M`{@x|{V2K=gx^7*MQee(LP;-c>fP?XRSg+itD_Iltu6oZIe~b`*BGp!9D#AEWhv*G zDP=BD$}AY)z^~4pg_!%-g(n4;JYw=!o0j}W(Gx@WTy%CzG>cDKS4LvDM+L}o@X2`N zY&iHxPfWIdP5jnipWY5SBXy)t(Rt$h_)PZed*W$|u17&#Yh6`o9 z1}#;6IJ7H{UMD$to6?GeTq(qawPi1P#c*~)qf~FVu6|j?y9y{{w)LfT1H}&{!mF?% zdD>szr4>YJsfjh(lD)SS669j`V9Sp8;F5DCX6mT4ZZw0e zHaLHq$=tC~f}(pMZS!-zvb4I=V=SL^|-(H1-J#}*b} z`H=odN_0T9a@0KGXs@Pl8ogMb?q6{fFS<2sHzBLZ-+}O1h*>3fgAXz5wcwceFddH+ zL(~M0kn%RF-CBDVm>!K!m`|xrRfo44QkVSoy7Mbjb}NnT#af*wdA`qH94o&ocQ5NI z|3PUCq&+eJa&wBce%l3jH-#^U&D?$aC23X*kLynqV?IM;2V=%Xnj-TM8;iX(i^8D$-6xO+-VnkicYMH}V70fD)n(B3@vT}b`j!-@l#vImjFsogJ+exr@{uO=PV zK*`G9>$QXEuR7JZU;8*iM%%P&k9IyPWQ~Q9##YM8$)Vhby_8c+ipfj!`i{0-GY_1% z({`s<^w$g%FsWLk;hN9!c0JknPu#6(dLL=*dg|F#yJGV@svoy6h>eg>7bUNLR2549 zqVris{T7$mHNFM`QmaL~H$*-w^j-8pBI z1Us2GcZPvPK>(c}8!+K3z$OKf{?jcDf*pr7Bwz^xLMJu(UZjVKfnX=(j=ka_m;~VK z3sR8;!K99%3WVn;X^0BS-J8IKP|ry!kf`V}$mSolNDv&SwE!qTF#Pmg6@)j!73KI3 z82oP-L{&)uqJebvC3uV-2*wd42(sZ`7xF5hjFX&5Z)ZCM!Neq?gf;oMPaGyiSpWa=iHiMiJeatI1VNVn!NHHkJAN>KCx(ej zO8n{k=_9lpVP%h>pFTKL{Qvu4$Nlja&Kr$zc15C(FK>*T1Cbyx7{m~TA~fuAHyA=R z-5pRM*l8C6EO+<~C8b~zQW7u;32|`;q^Pv0l$eB+xSfL}{HD0L9l{Q-aNJS6&c;Z8 lZ?J@jgvdWGawxpK5om9JG}3{BaPuT4Nx{pjrhk><{{VSLkX!%& literal 32931 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 literal 33385 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 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/cmp_miterTest.pdf b/src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/cmp_miterTest.pdf index 60047c0238395e054f566a7af9c5e7ea32f32412..f027f975f80d2e0254857f1486a7a07da6924a86 100644 GIT binary patch delta 830 zcmdmCblG4-8zZ;5fw{4vp_!q%q0!`tj2SZP6ioF@^$d-4gZ&%>f<6306jmA;7#Qdp z85o*RmSnPLGBev8#U#%pV6JOmu4`-Te>z#3v?oYmi_WqwA7j}ZWcOvZ)gIYJQmUpWm#*j& z%9@;V;#28XkGmNjH`y%}l_xc&Y_RI<%jomt&YyQU?gUqAUJBGlKvsTI7MH1lfdY`8 ztRTRhW^RN(2!c7DXt6jcGY8u$E3+yybK52hvpNeG+bRdMIvXe37Pl@6Sy!;mW}OqO zGb^)#Nr*$}>^Z9!$WP2%@Lzh8SXomOyJ! z?JzMivjmHIAz5r&h|OBWIOnLLZNa4 z>EZrC8d@Yb`5%;Yv{d{9X3sw3*tt2K_RYMV_jc~?C%+ayE_3%Z*W3VrR3`bF>)x+* zgXqIIs+ndc$>ks9RI-(Sp7&t-F8?IIsmmO1QwP`qxr2MY6rQdpuM5#e+UWP^tK?VV zaZXJS?)=%9DCJcu<2VX~0U4$7vQDI-J~y=9CVO>qjM?qo@MEtP?nl8V+8PtzGV4>t znbveb%p9e#Pc&y-U~vxR96D~FsFW)$Qw|wEp#m)P1OhK5W~J_mNar>mkV(&sz^wa1 z8Zzy<6@VLFKv*`xb7YdB_?nBzaVP*6_vRjZ&8!5y3SR zf(q_4sVFFq2~ELB=Fuo5@5zvi=Dtrczmkd z`Kfl#M)J3KJU!XGygTu6EbgL1O40?FMwr!{0)d)0c}nQDy-M&B_JS0ItU3(9=?5L-#X{cnLFRT=XdYSUo-jSHgdrk5ndD&g@D13Fcb_% zkr43^rGbEkIdtC={vyhr&>lt0Evus|bi4i7cKMkzhZCQh=fq z5HJfE5(7hF4iy06;GdzPI8nUuXWhpC2^UX@FCS+|LMh!c=g744<$RG$rtA*)MZqi$ z0tXixyQ@Gw(@j%O;3BZPV^XT=~y1k(V!1WQ2@S4r{4zh?|emmf5m!Nb!Ewnd6zYL z;&r6}Dfya}O$~pgbkOYLqrzwD`$CH|?qrE^Qtw!I#L{KcO&DbAW{IQ703fA4_i6UX z>84&OGOGZBxPO%2sAi#koAo}meD^wLcY*G7ByfydHag^kMm#E%6K(m~Qt`1g@re#& zHhHXPT!M}EWQ9H~vm&|B@#WT@MFoa6n3@Q|w#Ub6?3-2Kc4qL2xb&s5Ja+Ly!2I$F zRHv=8=nclWkE4EHmFRb4+pV|qA?8nNWN+1x59h^On)#{|H{7hr!0I*LPyeJ^qggckgTx$yz%quoddLOF!P}c ztfip$$>pP5QCH5;x-T6#1v1X*dzDva+HZQ5;gcsQjl~|03$nVaPY${!ec*($2|-K% zGLTOPC~#y1U4Cj^Q-7_ZW1A3dI_gg(ZmM5hO=NnMf?&yZ(e}^W^L|&?-iSiCi_GKCMxjxgrMW^C*D%Gx@jid(@-Sf`C zt;A}hV?IV>Vs%=rnzULwKcgX=M~rd6Ytz1U)uNUIzTRiQU?AgIbrFcKuK?M)_}JI% zWU*s0mP{cn#4W-|TjU8gED?ybc>t^Q5%MXx>h2c-sO%!j&19>fm^+|^n~a8iVLp0? zB`|^#xU44>_D&_3Qz@WjyG?b?poQ6VFUi}F)4oW*_8vD_i>@kV1gOSWL#dGubi^8Z zM7QgECO0YbMjUy7HQ;a@8FK`7W|%K(4p@vW@X~VX80~DYCxaIVY%q{AE*G_ zYm;ML6G=grY#-|u={m>|m%&^bLk}4}v5{iDsDTN`HOc2!1(8-;w5= z?&QeVUFE(zTVs0k`8wyvLPu4%=`6_Zo3ji1{^QdzUCODZj`#@g6ayD$p;I+xyN==0 z_PEcWe{4p~?VN8~>wJl~(Cjg>4snhL&Dqj^6G&F;`iE27nJU8qs1EBUI1rOKk$mBe z>T$niI>FG;Ar(-XOWuf{!Hu1>3$(O|=u|-Gpa?kcQX#N*x^K}EPaH|p=7QFxetT_e zvr&|PPl2JB^ ziz#SqF8$ix0@!|2*bDDzr)XdU%%YvgNLpHb?37DNh-0e7w|-hlSxMi=xT8Z{U<}q{ zSvU2!RWc^BE#@3|EFai3B=f5^-!*kJEl06T%79aD%ec0n3ERj!O5^?^v4c{GeICzd zc6D3h?N0LNEHPDuI|0OH!#EG`E>bilCmMW zp_2PU+eyLdTYhwz_>`rt2pA}Om^$YyblB3d#GB&{HM)J>j?`DZder7rz`sLCJS)!Q z4{dCmAfUASTn9;CFwOqEu7L6)?Sil>4^HTce%r?ktfM*i@X%V>&pQ1a)UEhOw)zTDae|7h&PJ{$iXBT?zo$qpD^hstt3;=at zOD~9olWEvIuxt=^BWrm%KrgJ%l^560vdj0T6>pm3WaU1gDI8oM*>z{#_?s7v&d9^&tsQk(OWIoMY_s*%uK;Zp4G~cF&_mvhp^yBD_Nf3x_D9${EBI- zwA$Q}HYQ!KjoFwKYiCtaFvX2)=G`xD%y5h&r%e?$9zAreeGqlOo8@{p6c0e(`)5kRYV?qanbm`w(#9^^z#%EmUlIX^y^pSeR>O1OXVYw(@ zQ{1gd!^^Z~@tZ>v%P}6SANbc=B+mB6R1jMA)=U_ep8&<8(hg5`*F-cDI7)VhD-NpF zpTe}*WR3plkus9tmR0qI0qA7SRuyblkR(Ow$E?weLTK_ znJ#HQVZN2)EsrmD-8-Xs`pDTLIbN6n4ofYxp^n?O8LX#Gvpz*Xn71T`g3q1T+uL25 zBD-45%JR4oTz&nBZqB!P+=_pN2eTJ{R8nOFKy>p@N6Qk#IcR-Ps)l mbw;?s)vu|m^GMyWa0~KN`16lINz^#Yt*pc&C8cMI<@qO;yV-gG delta 3115 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 Date: Fri, 4 Aug 2017 13:59:36 +0300 Subject: [PATCH 25/31] Port 691a097: Add new cleanup test. DEV-1879 --- .../pdf/pdfcleanup/PdfCleanUpProcessorTest.cs | 5 +++++ .../cmp_helloHelvetica.pdf | Bin 0 -> 1154 bytes .../PdfCleanUpProcessorTest/helloHelvetica.pdf | Bin 0 -> 1029 bytes 3 files changed, 5 insertions(+) create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/cmp_helloHelvetica.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/helloHelvetica.pdf diff --git a/src/extras/itextsharp.tests/iTextSharp/text/pdf/pdfcleanup/PdfCleanUpProcessorTest.cs b/src/extras/itextsharp.tests/iTextSharp/text/pdf/pdfcleanup/PdfCleanUpProcessorTest.cs index 4b9e4a331..a9157da8a 100644 --- a/src/extras/itextsharp.tests/iTextSharp/text/pdf/pdfcleanup/PdfCleanUpProcessorTest.cs +++ b/src/extras/itextsharp.tests/iTextSharp/text/pdf/pdfcleanup/PdfCleanUpProcessorTest.cs @@ -85,6 +85,9 @@ private static object[] TestData() { List cleanUpLocations4 = new List(); cleanUpLocations4.Add(new PdfCleanUpLocation(1, new Rectangle(212, 394, 212 + 186, 394 + 170), null)); + List cleanUpLocations5 = new List(); + cleanUpLocations5.Add(new PdfCleanUpLocation(1, new Rectangle(0f, 0f, 595f, 680f), BaseColor.GRAY)); + return new object[] { new object[] {"page229.pdf", "page229_01.pdf", "cmp_page229_01.pdf", cleanUpLocations1}, new object[] {"page229-modified-Tc-Tw.pdf", "page229-modified-Tc-Tw.pdf", "cmp_page229-modified-Tc-Tw.pdf", cleanUpLocations1}, @@ -114,6 +117,8 @@ private static object[] TestData() { new object[] {"absentICentry.pdf", "absentICentry.pdf", "cmp_absentICentry.pdf", null}, new object[] {"lotOfDashes.pdf", "lotOfDashes.pdf", "cmp_lotOfDashes.pdf", null}, new object[] {"clipPathReduction.pdf", "clipPathReduction.pdf", "cmp_clipPathReduction.pdf", cleanUpLocations4}, + new object[] {"helloHelvetica.pdf", "helloHelvetica.pdf", "cmp_helloHelvetica.pdf", cleanUpLocations5}, + }; } diff --git a/src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/cmp_helloHelvetica.pdf b/src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/cmp_helloHelvetica.pdf new file mode 100644 index 0000000000000000000000000000000000000000..84fc609ba5a537d1e94d1d3b3f68f9f32b96a35c GIT binary patch literal 1154 zcmbVLO=uHA6h4TG>ko=YFC!97kYr|eGrNh#V47{L*q@Nb_E3A6>`vO1WT)&-YU+TZb=^FQ^dkrz32zAsw@jNH7%|w#oXrTF)Y^!m&zy!$L&z*J6DWb>gZ;VUV9!7q z+|>|5ahVOYI8XVkF#-CAz`1DdRIxWcN&P^`Iu|<*>dbMgE_Fa75VBkMX8}&&gsS}y zV+@vEUZc_O`UIZ}(;L8IcB4)`9?NDG>N(Ontz%&?^~U%(5VpXATjSJ+g_>~8qBe7A zHXCqZV_j*^j9#5r9-Z84{aU*+zg+lv{Y2k^qBXa7VgF9`^5L1sTVK4ruzN^*`f#|f z@Z)Oi6wZ(51{rF&MX64Y__b=$pO6*c(_ZSMyg6)ugC8PwMEB(%fZ^l4Q=z*Iz^h6@-N>ljo) zJEjT`#+#2=eOb@yjDKKG)F%D#b`gQh4>+oonDHIl~ZY(~Qxb}G1Hn2v30rd~BF)fA#; jk|3(9x}B9iN7m;vzG2*yfD@muo0Li#N+i-fP*DB=Sq)}; literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/helloHelvetica.pdf b/src/extras/itextsharp.tests/resources/text/pdf/pdfcleanup/PdfCleanUpProcessorTest/helloHelvetica.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d42e7c258813f10da5b8fd6ea4a8750d7b330a31 GIT binary patch literal 1029 zcmah|zi-n(6s7}GWicVxPeLIHReI-hY$vFSlqO9R^;eXnFtioA+L!by#~04$k|H57 zbts6j6DtD?0}~Yz3x5C-ENrM0iGPDT*KMFkaD#n*_r34F_r2##yWS|6v#yc(e){Q) zVFLvC_O3BE2OBJqRKP|+B&}1A`xGwIa3FU;$*NQ$DJU5l>}>YIRP*T7k$*dTXZOH= zcziIrDyFWy|91U@K|?=fS351HI1yFjp`@XVfEL<;E7WIXo{u+>`n1b7C>8M*Y!jg{ z04Ikyv7Kjg1!x$aV`oTkHG3Z zu$ikawwDWgR76VFW)I6o;^`*~hD{pmQOP_4 z7eX~Ys%m(jh1D=(7vJ4@TWYJdi)QjndNkqHJxqCPJXTFL;S%$s4LuT_t+R}z9g~!? zpnU@Y*HA^K3ploI*`N>3W4P>s)vAMyIaGGHErK17C`8G(9a^Gx*>kZ|#H4JOEB{Aq!B*JkK#y7nb~snw iB-<`~Oo6NX$Ry1z{MmdXl0?YFBNt;MlUZ167{35`tt&PF literal 0 HcmV?d00001 From b5abce10d4d5ca75b3a51ea38010ae9a0e833529 Mon Sep 17 00:00:00 2001 From: Samuel Huylebroeck Date: Thu, 10 Aug 2017 10:35:49 +0200 Subject: [PATCH 26/31] Port Datamatrix improvements DEV-1915 --- .../iTextSharp/text/pdf/BarcodeDatamatrix.cs | 1119 +++++++++++------ .../text/pdf/BarcodeDatamatrixTest.cs | 306 +++++ .../BarcodeDatamatrix/barcodeDataMatrix01.pdf | Bin 0 -> 3252 bytes .../BarcodeDatamatrix/barcodeDataMatrix02.pdf | Bin 0 -> 1261 bytes .../BarcodeDatamatrix/barcodeDataMatrix03.pdf | Bin 0 -> 1464 bytes .../BarcodeDatamatrix/barcodeDataMatrix04.pdf | Bin 0 -> 1453 bytes .../BarcodeDatamatrix/barcodeDataMatrix05.pdf | Bin 0 -> 2737 bytes .../BarcodeDatamatrix/barcodeDataMatrix06.pdf | Bin 0 -> 1472 bytes .../BarcodeDatamatrix/barcodeDataMatrix07.pdf | Bin 0 -> 3677 bytes .../BarcodeDatamatrix/barcodeDataMatrix08.pdf | Bin 0 -> 3273 bytes .../BarcodeDatamatrix/barcodeDataMatrix09.pdf | Bin 0 -> 5581 bytes .../BarcodeDatamatrix/barcodeDataMatrix10.pdf | Bin 0 -> 3925 bytes .../BarcodeDatamatrix/barcodeDataMatrix11.pdf | Bin 0 -> 3883 bytes .../BarcodeDatamatrix/barcodeDataMatrix12.pdf | Bin 0 -> 3252 bytes .../BarcodeDatamatrix/barcodeDataMatrix13.pdf | Bin 0 -> 3787 bytes 15 files changed, 1075 insertions(+), 350 deletions(-) create mode 100644 src/extras/itextsharp.tests/iTextSharp/text/pdf/BarcodeDatamatrixTest.cs create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix01.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix02.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix03.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix04.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix05.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix06.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix07.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix08.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix09.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix10.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix11.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix12.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix13.pdf diff --git a/src/core/iTextSharp/text/pdf/BarcodeDatamatrix.cs b/src/core/iTextSharp/text/pdf/BarcodeDatamatrix.cs index fada5f852..4ca0fdfbc 100644 --- a/src/core/iTextSharp/text/pdf/BarcodeDatamatrix.cs +++ b/src/core/iTextSharp/text/pdf/BarcodeDatamatrix.cs @@ -87,6 +87,12 @@ public class BarcodeDatamatrix { /** * X21 encodation. */ + public const int DM_X12 = 5; + /** + * X12 encodation. + * + * @deprecated Use {@link BarcodeDataMatrix#DM_X12} instead. + */ public const int DM_X21 = 5; /** * EDIFACT encodation. @@ -106,6 +112,28 @@ public class BarcodeDatamatrix { */ public const int DM_TEST = 64; + private const byte LATCH_B256 = (byte)231; + + private const byte LATCH_EDIFACT = (byte)240; + + private const byte LATCH_X12 = (byte)238; + + private const byte LATCH_TEXT = (byte)239; + + private const byte LATCH_C40 = (byte)230; + + private const byte UNLATCH = (byte)254; + + private const byte EXTENDED_ASCII = (byte)235; + + private const byte PADDING = (byte)129; + + private string encoding; + + public const String DEFAULT_DATA_MATRIX_ENCODING = "iso-8859-1"; + + + private static readonly DmParams[] dmSizes = { new DmParams(10, 10, 10, 10, 3, 3, 5), new DmParams(12, 12, 12, 12, 5, 5, 7), @@ -138,7 +166,7 @@ public class BarcodeDatamatrix { new DmParams(132, 132, 22, 22, 1304, 163, 62), new DmParams(144, 144, 24, 24, 1558, 156, 62)}; - private const String x12 = "\r*> 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + private const String X12 = "\r*> 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private int extOut; private short[] place; private byte[] image; @@ -148,12 +176,27 @@ public class BarcodeDatamatrix { private int options; private bool forceSquareSize = false; + // value f[i][j] is the optimal amount of bytes required to encode substring(0, j) + private static int[][] f; + // switchMode[i][j] = k means that when encoding j-th symbol with mode = i + 1, + // we have to encode the previous symbol with mode = k in order to get optimal f[i][j] value + private static int[][] switchMode; + /** * Creates an instance of this class. */ public BarcodeDatamatrix() { + encoding = DEFAULT_DATA_MATRIX_ENCODING; } + public BarcodeDatamatrix(String code) { + encoding = DEFAULT_DATA_MATRIX_ENCODING; + Generate(code); + } + public BarcodeDatamatrix(String code, String encoding) { + this.encoding = encoding; + Generate(code); + } private void SetBit(int x, int y, int xByte) { image[y * xByte + x / 8] |= (byte)(128 >> (x & 7)); } @@ -194,7 +237,7 @@ private void Draw(byte[] data, int dataSize, DmParams dm) { for (xs = 0; xs < dm.width; xs += dm.widthSection) { for (x = 1; x < dm.widthSection - 1; ++x) { z = place[p++]; - if (z == 1 || (z > 1 && ((data[z/8-1] & 0xff) & (128 >> (z%8))) != 0)) + if (z == 1 || (z > 1 && ((data[z / 8 - 1] & 0xff) & (128 >> (z % 8))) != 0)) SetBit(x + xs + ws, y + ys + ws, xByte); } } @@ -206,7 +249,7 @@ private static void MakePadding(byte[] data, int position, int count) { //already in ascii mode if (count <= 0) return; - data[position++] = (byte)129; + data[position++] = PADDING; while (--count > 0) { int t = 129 + (((position + 1) * 149) % 253) + 1; if (t > 254) @@ -218,67 +261,104 @@ private static void MakePadding(byte[] data, int position, int count) { private static bool IsDigit(int c) { return c >= '0' && c <= '9'; } - - private static int AsciiEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength) { + + // when symbolIndex is non-negative, textLength should equal 1. All other encodations behave the same way. + private static int AsciiEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, int symbolIndex, int prevEnc, int origDataOffset) { int ptrIn, ptrOut, c; ptrIn = textOffset; ptrOut = dataOffset; textLength += textOffset; dataLength += dataOffset; while (ptrIn < textLength) { + c = text[ptrIn++] & 0xff; + if (IsDigit(c) && symbolIndex > 0 && prevEnc == DM_ASCII && IsDigit(text[ptrIn - 2] & 0xff) + && data[dataOffset - 1] > 48 && data[dataOffset - 1] < 59) { + data[ptrOut - 1] = (byte)(((text[ptrIn - 2] & 0xff) - '0') * 10 + c - '0' + 130); + return ptrOut - origDataOffset; + } if (ptrOut >= dataLength) return -1; - c = text[ptrIn++] & 0xff; - if (IsDigit(c) && ptrIn < textLength && IsDigit(text[ptrIn] & 0xff)) { + + if (IsDigit(c) && symbolIndex < 0 && ptrIn < textLength && IsDigit(text[ptrIn] & 0xff)) { data[ptrOut++] = (byte)((c - '0') * 10 + (text[ptrIn++] & 0xff) - '0' + 130); } else if (c > 127) { if (ptrOut + 1 >= dataLength) return -1; - data[ptrOut++] = (byte)235; + data[ptrOut++] = EXTENDED_ASCII; data[ptrOut++] = (byte)(c - 128 + 1); } else { data[ptrOut++] = (byte)(c + 1); } } - return ptrOut - dataOffset; + return ptrOut - origDataOffset; } - private static int B256Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength) { - int k, j, prn, tv, c; + private static int B256Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, int symbolIndex, int prevEnc, int origDataOffset) { + int minRequiredDataIncrement; if (textLength == 0) return 0; - if (textLength < 250 && textLength + 2 > dataLength) - return -1; - if (textLength >= 250 && textLength + 3 > dataLength) - return -1; - data[dataOffset] = (byte)231; + int simulatedDataOffset = dataOffset; + if (prevEnc != DM_B256) { + if (textLength < 250 && textLength + 2 > dataLength) + return -1; + if (textLength >= 250 && textLength + 3 > dataLength) + return -1; + data[dataOffset] = LATCH_B256; + } + else { + int latestModeEntry = symbolIndex - 1; + while (latestModeEntry > 0 && switchMode[DM_B256 - 1][latestModeEntry] == DM_B256) { + latestModeEntry--; + } + textLength = symbolIndex - latestModeEntry + 1; + if (textLength != 250 && 1 > dataLength) + return -1; + if (textLength == 250 && 2 > dataLength) + return -1; + simulatedDataOffset -= (textLength - 1) + (textLength < 250 ? 2 : 3); + } if (textLength < 250) { - data[dataOffset + 1] = (byte)textLength; - k = 2; + data[simulatedDataOffset + 1] = (byte)textLength; + minRequiredDataIncrement = prevEnc != DM_B256 ? 2 : 0; + } + else if (textLength == 250 && prevEnc == DM_B256) { + data[simulatedDataOffset + 1] = (byte)(textLength / 250 + 249); + for (int i = dataOffset + 1; i > simulatedDataOffset + 2; i--) + data[i] = data[i - 1]; + data[simulatedDataOffset + 2] = (byte)(textLength % 250); + minRequiredDataIncrement = 1; } else { - data[dataOffset + 1] = (byte)(textLength / 250 + 249); - data[dataOffset + 2] = (byte)(textLength % 250); - k = 3; - } - System.Array.Copy(text, textOffset, data, k + dataOffset, textLength); - k += textLength + dataOffset; - for (j = dataOffset + 1; j < k; ++j) { - c = data[j] & 0xff; - prn = ((149 * (j + 1)) % 255) + 1; - tv = c + prn; - if (tv > 255) - tv -= 256; - data[j] = (byte)tv; - - } - return k - dataOffset; + data[simulatedDataOffset + 1] = (byte)(textLength / 250 + 249); + data[simulatedDataOffset + 2] = (byte)(textLength % 250); + minRequiredDataIncrement = prevEnc != DM_B256 ? 3 : 0; + } + if (prevEnc == DM_B256) + textLength = 1; + System.Array.Copy(text, textOffset, data, minRequiredDataIncrement + dataOffset, textLength); + for (int j = prevEnc != DM_B256 ? dataOffset + 1 : dataOffset; j < minRequiredDataIncrement + textLength + dataOffset; ++j) { + RandomizationAlgorithm255(data, j); + } + if (prevEnc == DM_B256) + RandomizationAlgorithm255(data, simulatedDataOffset + 1); + return textLength + dataOffset + minRequiredDataIncrement - origDataOffset; } - private static int X12Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength) { - int ptrIn, ptrOut, count, k, n, ci; + private static void RandomizationAlgorithm255(byte[] data, int j) { + int c = data[j] & 0xff; + int prn = 149 * (j + 1) % 255 + 1; + int tv = c + prn; + if (tv > 255) + tv -= 256; + data[j] = (byte)tv; + } + + + private static int X12Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, int symbolIndex, int prevEnc, int origDataOffset) { + int ptrIn, ptrOut, count, k, n; + Boolean latch = true; byte c; if (textLength == 0) return 0; @@ -287,7 +367,7 @@ private static int X12Encodation(byte[] text, int textOffset, int textLength, by byte[] x = new byte[textLength]; count = 0; for (; ptrIn < textLength; ++ptrIn) { - int i = x12.IndexOf((char)text[ptrIn + textOffset]); + int i = X12.IndexOf((char)text[ptrIn + textOffset]); if (i >= 0) { x[ptrIn] = (byte)i; ++count; @@ -295,25 +375,25 @@ private static int X12Encodation(byte[] text, int textOffset, int textLength, by else { x[ptrIn] = 100; if (count >= 6) - count -= (count / 3) * 3; + count -= count / 3 * 3; for (k = 0; k < count; ++k) x[ptrIn - k - 1] = 100; count = 0; } } if (count >= 6) - count -= (count / 3) * 3; + count -= count / 3 * 3; for (k = 0; k < count; ++k) x[ptrIn - k - 1] = 100; ptrIn = 0; c = 0; for (; ptrIn < textLength; ++ptrIn) { c = x[ptrIn]; - if (ptrOut >= dataLength) + if (ptrOut > dataLength) break; if (c < 40) { - if (ptrIn == 0 || (ptrIn > 0 && x[ptrIn - 1] > 40)) - data[dataOffset + ptrOut++] = (byte)238; + if (ptrIn == 0 && latch || ptrIn > 0 && x[ptrIn - 1] > 40) + data[dataOffset + ptrOut++] = LATCH_X12; if (ptrOut + 2 > dataLength) break; n = 1600 * x[ptrIn] + 40 * x[ptrIn + 1] + x[ptrIn + 2] + 1; @@ -322,29 +402,68 @@ private static int X12Encodation(byte[] text, int textOffset, int textLength, by ptrIn += 2; } else { - if (ptrIn > 0 && x[ptrIn - 1] < 40) - data[dataOffset + ptrOut++] = (byte)254; - ci = text[ptrIn + textOffset] & 0xff; - if (ci > 127) { - data[dataOffset + ptrOut++] = (byte)235; - ci -= 128; + Boolean enterASCII = true; + if (symbolIndex <= 0) { + if (ptrIn > 0 && x[ptrIn - 1] < 40) + data[dataOffset + ptrOut++] = UNLATCH; + } + else if (symbolIndex > 4 && prevEnc == DM_X12 && X12.IndexOf((char)text[textOffset]) >= 0 && X12.IndexOf((char)text[textOffset - 1]) >= 0) { + int latestModeEntry = symbolIndex - 1; + while (latestModeEntry > 0 && switchMode[DM_X12 - 1][latestModeEntry] == DM_X12 + && (X12.IndexOf((char)text[textOffset - (symbolIndex - latestModeEntry + 1)])) >= 0) { + latestModeEntry--; + } + int unlatch = -1; + if (symbolIndex - latestModeEntry >= 5) { + for (int i = 1; i <= symbolIndex - latestModeEntry; i++) { + if (data[dataOffset - i] == UNLATCH) { + unlatch = dataOffset - i; + break; + } + } + int amountOfEncodedWithASCII = unlatch >= 0 ? dataOffset - unlatch - 1 : symbolIndex - latestModeEntry; + if (amountOfEncodedWithASCII % 3 == 2) { + enterASCII = false; + textLength = amountOfEncodedWithASCII + 1; + textOffset -= amountOfEncodedWithASCII; + dataLength += unlatch < 0 ? amountOfEncodedWithASCII : amountOfEncodedWithASCII + 1; + dataOffset -= unlatch < 0 ? amountOfEncodedWithASCII : amountOfEncodedWithASCII + 1; + ptrIn = -1; + latch = unlatch != dataOffset; + x = new byte[amountOfEncodedWithASCII + 1]; + for (int i = 0; i <= amountOfEncodedWithASCII; i++) { + x[i] = (byte)X12.IndexOf((char)text[textOffset + i]); + } + } + else { + x = new byte[1]; + x[0] = 100; + } + } + } + if (enterASCII) { + int i = AsciiEncodation(text, textOffset + ptrIn, 1, data, dataOffset + ptrOut, dataLength, -1, -1, origDataOffset); + if (i < 0) + return -1; + if (data[dataOffset + ptrOut] == EXTENDED_ASCII) + ptrOut++; + ptrOut++; } - if (ptrOut >= dataLength) - break; - data[dataOffset + ptrOut++] = (byte)(ci + 1); } } c = 100; if (textLength > 0) c = x[textLength - 1]; - if (ptrIn != textLength || (c < 40 && ptrOut >= dataLength)) + if (ptrIn != textLength) return -1; if (c < 40) - data[dataOffset + ptrOut++] = (byte)(254); - return ptrOut; + data[dataOffset + ptrOut++] = UNLATCH; + if (ptrOut > dataLength) + return -1; + return ptrOut + dataOffset - origDataOffset; } - private static int EdifactEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength) { + private static int EdifactEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, int symbolIndex, int prevEnc, int origDataOffset, Boolean sizeFixed) { int ptrIn, ptrOut, edi, pedi, c; if (textLength == 0) return 0; @@ -352,14 +471,144 @@ private static int EdifactEncodation(byte[] text, int textOffset, int textLength ptrOut = 0; edi = 0; pedi = 18; - bool ascii = true; + Boolean ascii = true; + int latestModeEntryActual = -1, latestModeEntryC40orX12 = -1, prevMode = -1; + if (prevEnc == DM_EDIFACT && ((text[textOffset] & 0xff & 0xe0) == 0x40 || (text[textOffset] & 0xff & 0xe0) == 0x20) && (text[textOffset] & 0xff) != '_' + && ((text[textOffset - 1] & 0xff & 0xe0) == 0x40 || (text[textOffset - 1] & 0xff & 0xe0) == 0x20) && (text[textOffset - 1] & 0xff) != '_') { + latestModeEntryActual = symbolIndex - 1; + while (latestModeEntryActual > 0 && switchMode[DM_EDIFACT - 1][latestModeEntryActual] == DM_EDIFACT) { + c = text[textOffset - (symbolIndex - latestModeEntryActual + 1)] & 0xff; + if (((c & 0xe0) == 0x40 || (c & 0xe0) == 0x20) && c != '_') { + latestModeEntryActual--; + } + else + break; + } + prevMode = switchMode[DM_EDIFACT - 1][latestModeEntryActual] == DM_C40 + || switchMode[DM_EDIFACT - 1][latestModeEntryActual] == DM_X12 ? switchMode[DM_EDIFACT - 1][latestModeEntryActual] : -1; + if (prevMode > 0) + latestModeEntryC40orX12 = latestModeEntryActual; + while (prevMode > 0 && latestModeEntryC40orX12 > 0 && switchMode[prevMode - 1][latestModeEntryC40orX12] == prevMode) { + c = text[textOffset - (symbolIndex - latestModeEntryC40orX12 + 1)] & 0xff; + if (((c & 0xe0) == 0x40 || (c & 0xe0) == 0x20) && c != '_') { + latestModeEntryC40orX12--; + } + else { + latestModeEntryC40orX12 = -1; + break; + } + } + } + int dataSize = dataOffset + dataLength; + Boolean asciiOneSymbol = false; + if (symbolIndex != -1) + asciiOneSymbol = true; + int dataTaken = 0, dataRequired = 0; + if (latestModeEntryC40orX12 >= 0 && symbolIndex - latestModeEntryC40orX12 + 1 > 9) { + textLength = symbolIndex - latestModeEntryC40orX12 + 1; + dataTaken = 0; + dataRequired = 0; + dataRequired += 1 + (textLength / 4 * 3); + if (!sizeFixed && (symbolIndex == text.Length - 1 || symbolIndex < 0) && textLength % 4 < 3) { + dataSize = Int32.MaxValue; + for (int i = 0; i < dmSizes.Length; ++i) { + if (dmSizes[i].dataSize >= dataRequired + textLength % 4) { + dataSize = dmSizes[i].dataSize; + break; + } + } + } + if (dataSize - dataOffset - dataRequired <= 2 && textLength % 4 <= 2) + dataRequired += (textLength % 4); + else { + dataRequired += (textLength % 4) + 1; + if (textLength % 4 == 3) + dataRequired--; + } + for (int i = dataOffset - 1; i >= 0; i--) { + dataTaken++; + if (data[i] == (prevMode == DM_C40 ? LATCH_C40 : LATCH_X12)) { + break; + } + } + if (dataRequired <= dataTaken) { + asciiOneSymbol = false; + textOffset -= textLength - 1; + dataOffset -= dataTaken; + dataLength += dataTaken; + } + } + else if (latestModeEntryActual >= 0 && symbolIndex - latestModeEntryActual + 1 > 9) { + textLength = symbolIndex - latestModeEntryActual + 1; + dataRequired += 1 + (textLength / 4 * 3); + if (dataSize - dataOffset - dataRequired <= 2 && textLength % 4 <= 2) + dataRequired += (textLength % 4); + else { + dataRequired += (textLength % 4) + 1; + if (textLength % 4 == 3) + dataRequired--; + } + int dataNewOffset = 0; + int latchEdi = -1; + for (int i = origDataOffset; i < dataOffset; i++) + if (data[i] == LATCH_EDIFACT && dataOffset - i <= dataRequired) { + latchEdi = i; + break; + } + if (latchEdi != -1) { + dataTaken += dataOffset - latchEdi; + if ((text[textOffset] & 0xff) > 127) + dataTaken += 2; + else { + if (IsDigit(text[textOffset] & 0xff) && IsDigit(text[textOffset - 1] & 0xff) && + data[dataOffset - 1] >= 49 && data[dataOffset - 1] <= 58) { + dataTaken--; + } + dataTaken++; + } + dataNewOffset = dataOffset - latchEdi; + } + else { + for (int j = symbolIndex - latestModeEntryActual; j >= 0; j--) { + if ((text[textOffset - j] & 0xff) > 127) + dataTaken += 2; + else { + if (j > 0 && IsDigit(text[textOffset - j] & 0xff) && IsDigit(text[textOffset - j + 1] & 0xff)) { + if (j == 1) + dataNewOffset = dataTaken; + j--; + } + dataTaken++; + } + if (j == 1) + dataNewOffset = dataTaken; + } + } + if (dataRequired <= dataTaken) { + asciiOneSymbol = false; + textOffset -= textLength - 1; + dataOffset -= dataNewOffset; + dataLength += dataNewOffset; + } + } + if (asciiOneSymbol) { + c = text[textOffset] & 0xff; + if (IsDigit(c) && textOffset + ptrIn > 0 && IsDigit(text[textOffset - 1] & 0xff) + && prevEnc == DM_EDIFACT && data[dataOffset - 1] >= 49 && data[dataOffset - 1] <= 58) { + data[dataOffset + ptrOut - 1] = (byte)(((text[textOffset - 1] & 0xff) - '0') * 10 + c - '0' + 130); + return dataOffset - origDataOffset; + } + else { + return AsciiEncodation(text, textOffset + ptrIn, 1, data, dataOffset + ptrOut, dataLength, -1, -1, origDataOffset); + } + } for (; ptrIn < textLength; ++ptrIn) { c = text[ptrIn + textOffset] & 0xff; if (((c & 0xe0) == 0x40 || (c & 0xe0) == 0x20) && c != '_') { if (ascii) { if (ptrOut + 1 > dataLength) break; - data[dataOffset + ptrOut++] = (byte)240; + data[dataOffset + ptrOut++] = LATCH_EDIFACT; ascii = false; } c &= 0x3f; @@ -369,37 +618,17 @@ private static int EdifactEncodation(byte[] text, int textOffset, int textLength break; data[dataOffset + ptrOut++] = (byte)(edi >> 16); data[dataOffset + ptrOut++] = (byte)(edi >> 8); - data[dataOffset + ptrOut++] = (byte) edi; + data[dataOffset + ptrOut++] = (byte)edi; edi = 0; pedi = 18; - } else - pedi -= 6; - } else { - int dataSize = int.MaxValue; - for (int i = 0; i < dmSizes.Length; ++i) { - if (dmSizes[i].dataSize >= dataOffset + ptrOut + (3 - pedi/6)) { - dataSize = dmSizes[i].dataSize; - break; - } } - - if (dataSize - dataOffset - ptrOut <= 2 && pedi >= 6) { - //have to write up to 2 bytes and up to 2 symbols - if (pedi <= 12) { - byte val = (byte) ((edi >> 18) & 0x3F); - if ((val & 0x20) == 0) - val |= 0x40; - data[dataOffset + ptrOut++] = (byte) (val + 1); - } - if (pedi <= 6) { - byte val = (byte) ((edi >> 12) & 0x3F); - if ((val & 0x20) == 0) - val |= 0x40; - data[dataOffset + ptrOut++] = (byte) (val + 1); - } - } else if (!ascii) { + else + pedi -= 6; + } + else { + if (!ascii) { edi |= ('_' & 0x3f) << pedi; - if (ptrOut + (3 - pedi/8) > dataLength) + if (ptrOut + 3 - pedi / 8 > dataLength) break; data[dataOffset + ptrOut++] = (byte)(edi >> 16); if (pedi <= 12) @@ -410,22 +639,51 @@ private static int EdifactEncodation(byte[] text, int textOffset, int textLength pedi = 18; edi = 0; } - if (c > 127) { - if (ptrOut >= dataLength) - break; - data[dataOffset + ptrOut++] = (byte)235; - c -= 128; + if (IsDigit(c) && textOffset + ptrIn > 0 && IsDigit(text[textOffset + ptrIn - 1] & 0xff) && + prevEnc == DM_EDIFACT && data[dataOffset - 1] >= 49 && data[dataOffset - 1] <= 58) { + data[dataOffset + ptrOut - 1] = (byte)(((text[textOffset - 1] & 0xff) - '0') * 10 + c - '0' + 130); + ptrOut--; + } + else { + int i = AsciiEncodation(text, textOffset + ptrIn, 1, data, dataOffset + ptrOut, dataLength, -1, -1, origDataOffset); + if (i < 0) + return -1; + if (data[dataOffset + ptrOut] == EXTENDED_ASCII) + ptrOut++; + ptrOut++; } - if (ptrOut >= dataLength) - break; - data[dataOffset + ptrOut++] = (byte)(c + 1); } } if (ptrIn != textLength) return -1; - if (!ascii) { + if (!sizeFixed && (symbolIndex == text.Length - 1 || symbolIndex < 0)) { + dataSize = Int32.MaxValue; + for (int i = 0; i < dmSizes.Length; ++i) { + if (dmSizes[i].dataSize >= dataOffset + ptrOut + (3 - pedi / 6)) { + dataSize = dmSizes[i].dataSize; + break; + } + } + } + if (dataSize - dataOffset - ptrOut <= 2 && pedi >= 6) { + if (pedi != 18 && ptrOut + 2 - pedi / 8 > dataLength) + return -1; + if (pedi <= 12) { + byte val = (byte)((edi >> 18) & 0x3F); + if ((val & 0x20) == 0) + val |= 0x40; + data[dataOffset + ptrOut++] = (byte)(val + 1); + } + if (pedi <= 6) { + byte val = (byte)((edi >> 12) & 0x3F); + if ((val & 0x20) == 0) + val |= 0x40; + data[dataOffset + ptrOut++] = (byte)(val + 1); + } + } + else if (!ascii) { edi |= ('_' & 0x3f) << pedi; - if (ptrOut + (3 - pedi / 8) > dataLength) + if (ptrOut + 3 - pedi / 8 > dataLength) return -1; data[dataOffset + ptrOut++] = (byte)(edi >> 16); if (pedi <= 12) @@ -433,35 +691,118 @@ private static int EdifactEncodation(byte[] text, int textOffset, int textLength if (pedi <= 6) data[dataOffset + ptrOut++] = (byte)edi; } - return ptrOut; + return ptrOut + dataOffset - origDataOffset; } - private static int C40OrTextEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, bool c40) { + private static int C40OrTextEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, bool c40, int symbolIndex, int prevEnc, int origDataOffset) { int ptrIn, ptrOut, encPtr, last0, last1, i, a, c; String basic, shift2, shift3; if (textLength == 0) return 0; ptrIn = 0; ptrOut = 0; - if (c40) - data[dataOffset + ptrOut++] = (byte)230; - else - data[dataOffset + ptrOut++] = (byte)239; shift2 = "!\"#$%&'()*+,-./:;<=>?@[\\]^_"; if (c40) { basic = " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - shift3 = "`abcdefghijklmnopqrstuvwxyz{|}~\u007f"; + shift3 = "`abcdefghijklmnopqrstuvwxyz{|}~\\177"; } else { basic = " 0123456789abcdefghijklmnopqrstuvwxyz"; - shift3 = "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\u007f"; + shift3 = "`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\\177"; + } + Boolean addLatch = true, usingASCII = false; + int mode = c40 ? DM_C40 : DM_TEXT; + if (prevEnc == mode) { + usingASCII = true; + int latestModeEntry = symbolIndex - 1; + while (latestModeEntry > 0 && switchMode[mode - 1][latestModeEntry] == mode) { + latestModeEntry--; + } + int unlatch = -1; + int dataAmountOfEncodedWithASCII = 0; + if (symbolIndex - latestModeEntry >= 5) { + for (i = symbolIndex - latestModeEntry; i > 0; i--) { + c = text[textOffset - i] & 0xff; + if (c > 127) { + dataAmountOfEncodedWithASCII += 2; + } + else + dataAmountOfEncodedWithASCII++; + } + for (i = 1; i <= dataAmountOfEncodedWithASCII; i++) { + if (i > dataOffset) + break; + if (data[dataOffset - i] == UNLATCH) { + unlatch = dataOffset - i; + break; + } + } + int amountOfEncodedWithASCII = 0; + if (unlatch >= 0) + for (i = unlatch + 1; i < dataOffset; i++) { + if (data[i] == EXTENDED_ASCII) + i++; + if (data[i] >= -127 && data[i] <= -27) + amountOfEncodedWithASCII++; + amountOfEncodedWithASCII++; + } + else + amountOfEncodedWithASCII = symbolIndex - latestModeEntry; + int dataOffsetNew = 0; + for (i = amountOfEncodedWithASCII; i > 0; i--) { + int requiredCapacityForASCII = 0; + int requiredCapacityForC40orText = 0; + for (int j = i; j >= 0; j--) { + c = text[textOffset - j] & 0xff; + if (c > 127) { + c -= 128; + requiredCapacityForC40orText += 2; + } + requiredCapacityForC40orText += basic.IndexOf((char)c) >= 0 ? 1 : 2; + if (c > 127) + requiredCapacityForASCII += 2; + else { + if (j > 0 && IsDigit(c) && IsDigit(text[textOffset - j + 1] & 0xff)) { + requiredCapacityForC40orText += basic.IndexOf((char)text[textOffset - j + 1]) >= 0 ? 1 : 2; + j--; + dataOffsetNew = requiredCapacityForASCII + 1; + } + requiredCapacityForASCII++; + } + if (j == 1) + dataOffsetNew = requiredCapacityForASCII; + } + addLatch = unlatch < 0 ? true : (dataOffset - requiredCapacityForASCII != unlatch); + if (requiredCapacityForC40orText % 3 == 0 && + requiredCapacityForC40orText / 3 * 2 + (addLatch ? 2 : 0) < requiredCapacityForASCII) { + usingASCII = false; + textLength = i + 1; + textOffset -= i; + dataOffset -= addLatch ? dataOffsetNew : dataOffsetNew + 1; + dataLength += addLatch ? dataOffsetNew : dataOffsetNew + 1; + break; + } + if (IsDigit(text[textOffset - i] & 0xff) && IsDigit(text[textOffset - i + 1] & 0xff)) + i--; + } + } + } + else if (symbolIndex != -1) + usingASCII = true; + if (usingASCII) + return AsciiEncodation(text, textOffset, 1, data, dataOffset, dataLength, prevEnc == mode ? 1 : -1, DM_ASCII, origDataOffset); + if (addLatch) { + if (c40) + data[dataOffset + ptrOut++] = LATCH_C40; + else + data[dataOffset + ptrOut++] = LATCH_TEXT; } int[] enc = new int[textLength * 4 + 10]; encPtr = 0; last0 = 0; last1 = 0; while (ptrIn < textLength) { - if ((encPtr % 3) == 0) { + if (encPtr % 3 == 0) { last0 = ptrIn; last1 = encPtr; } @@ -488,7 +829,7 @@ private static int C40OrTextEncodation(byte[] text, int textOffset, int textLeng enc[encPtr++] = idx; } } - if ((encPtr % 3) != 0) { + if (encPtr % 3 != 0) { ptrIn = last0; encPtr = last1; } @@ -501,80 +842,131 @@ private static int C40OrTextEncodation(byte[] text, int textOffset, int textLeng data[dataOffset + ptrOut++] = (byte)(a / 256); data[dataOffset + ptrOut++] = (byte)a; } - data[ptrOut++] = (byte)254; - i = AsciiEncodation(text, ptrIn, textLength - ptrIn, data, ptrOut, dataLength - ptrOut); - if (i < 0) + if (dataLength - ptrOut > 2) + data[dataOffset + ptrOut++] = UNLATCH; + if (symbolIndex < 0 && textLength > ptrIn) { + i = AsciiEncodation(text, textOffset + ptrIn, textLength - ptrIn, data, dataOffset + ptrOut, dataLength - ptrOut, -1, -1, origDataOffset); return i; - return ptrOut + i; + } + return ptrOut + dataOffset - origDataOffset; } - private static int GetEncodation(byte[] text, int textOffset, int textSize, byte[] data, int dataOffset, int dataSize, int options, bool firstMatch) { - int e, j, k; - int[] e1 = new int[6]; + private static int MinValueInColumn(int[][] array, int column) { + int min = Int32.MaxValue; + for (int i = 0; i < 6; i++) + if (array[i][column] < min && array[i][column] >= 0) + min = array[i][column]; + return min != Int32.MaxValue ? min : -1; + } + + private static int ValuePositionInColumn(int[][] array, int column, int value) { + for (int i = 0; i < 6; i++) + if (array[i][column] == value) + return i; + return -1; + } + + private static void SolveFAndSwitchMode(int[] forMin, int mode, int currIndex) { + if (forMin[mode] >= 0 && f[mode][currIndex - 1] >= 0) { + f[mode][currIndex] = forMin[mode]; + switchMode[mode][currIndex] = mode + 1; + } + else { + f[mode][currIndex] = Int32.MaxValue; + } + for (int i = 0; i < 6; i++) { + if (forMin[i] < f[mode][currIndex] && forMin[i] >= 0 && f[i][currIndex - 1] >= 0) { + f[mode][currIndex] = forMin[i]; + switchMode[mode][currIndex] = i + 1; + } + } + if (f[mode][currIndex] == Int32.MaxValue) { + f[mode][currIndex] = -1; + } + } + + + private static int GetEncodation(byte[] text, int textOffset, int textSize, byte[] data, int dataOffset, int dataSize, int options, Boolean sizeFixed) { + int e; if (dataSize < 0) return -1; - e = -1; options &= 7; if (options == 0) { - e1[0] = AsciiEncodation(text, textOffset, textSize, data, dataOffset, dataSize); - if (firstMatch && e1[0] >= 0) - return e1[0]; - e1[1] = C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, false); - if (firstMatch && e1[1] >= 0) - return e1[1]; - e1[2] = C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, true); - if (firstMatch && e1[2] >= 0) - return e1[2]; - e1[3] = B256Encodation(text, textOffset, textSize, data, dataOffset, dataSize); - if (firstMatch && e1[3] >= 0) - return e1[3]; - e1[4] = X12Encodation(text, textOffset, textSize, data, dataOffset, dataSize); - if (firstMatch && e1[4] >= 0) - return e1[4]; - e1[5] = EdifactEncodation(text, textOffset, textSize, data, dataOffset, dataSize); - if (firstMatch && e1[5] >= 0) - return e1[5]; - if (e1[0] < 0 && e1[1] < 0 && e1[2] < 0 && e1[3] < 0 && e1[4] < 0 && e1[5] < 0) { - return -1; + if (textSize == 0) + return 0; + int length = data.Length; + byte[][] dataDynamic = new byte[6][]; + for (int i = 0; i < dataDynamic.Length; i++) { + dataDynamic[i] = new byte[length]; + } + for (int i = 0; i < 6; i++) { + System.Array.Copy(data, 0, dataDynamic[i], 0, data.Length); + switchMode[i][0] = i + 1; } - j = 0; - e = 99999; - for (k = 0; k < 6; ++k) { - if (e1[k] >= 0 && e1[k] < e) { - e = e1[k]; - j = k; + f[0][0] = AsciiEncodation(text, textOffset, 1, dataDynamic[0], dataOffset, dataSize, 0, -1, dataOffset); + f[1][0] = C40OrTextEncodation(text, textOffset, 1, dataDynamic[1], dataOffset, dataSize, true, 0, -1, dataOffset); + f[2][0] = C40OrTextEncodation(text, textOffset, 1, dataDynamic[2], dataOffset, dataSize, false, 0, -1, dataOffset); + f[3][0] = B256Encodation(text, textOffset, 1, dataDynamic[3], dataOffset, dataSize, 0, -1, dataOffset); + f[4][0] = X12Encodation(text, textOffset, 1, dataDynamic[4], dataOffset, dataSize, 0, -1, dataOffset); + f[5][0] = EdifactEncodation(text, textOffset, 1, dataDynamic[5], dataOffset, dataSize, 0, -1, dataOffset, sizeFixed); + int[] dataNewOffset = new int[6]; + for (int i = 1; i < textSize; i++) { + int[] tempForMin = new int[6]; + for (int k = 0; k < 6; k++) { + dataNewOffset[k] = f[k][i - 1] >= 0 ? f[k][i - 1] : Int32.MaxValue; + } + for (int currEnc = 0; currEnc < 6; currEnc++) { + + byte[][] dataDynamicInner = new byte[6][]; + for (int l = 0; l < dataDynamicInner.Length; l++) { + dataDynamicInner[l] = new byte[length]; + } + for (int prevEnc = 0; prevEnc < 6; prevEnc++) { + System.Array.Copy(dataDynamic[prevEnc], 0, dataDynamicInner[prevEnc], 0, data.Length); + if (currEnc == 0) + tempForMin[prevEnc] = AsciiEncodation(text, textOffset + i, 1, dataDynamicInner[prevEnc], dataNewOffset[prevEnc] + dataOffset, dataSize - dataNewOffset[prevEnc], i, prevEnc + 1, dataOffset); + if (currEnc == 1) + tempForMin[prevEnc] = C40OrTextEncodation(text, textOffset + i, 1, dataDynamicInner[prevEnc], dataNewOffset[prevEnc] + dataOffset, dataSize - dataNewOffset[prevEnc], true, i, prevEnc + 1, dataOffset); + if (currEnc == 2) + tempForMin[prevEnc] = C40OrTextEncodation(text, textOffset + i, 1, dataDynamicInner[prevEnc], dataNewOffset[prevEnc] + dataOffset, dataSize - dataNewOffset[prevEnc], false, i, prevEnc + 1, dataOffset); + if (currEnc == 3) + tempForMin[prevEnc] = B256Encodation(text, textOffset + i, 1, dataDynamicInner[prevEnc], dataNewOffset[prevEnc] + dataOffset, dataSize - dataNewOffset[prevEnc], i, prevEnc + 1, dataOffset); + if (currEnc == 4) + tempForMin[prevEnc] = X12Encodation(text, textOffset + i, 1, dataDynamicInner[prevEnc], dataNewOffset[prevEnc] + dataOffset, dataSize - dataNewOffset[prevEnc], i, prevEnc + 1, dataOffset); + if (currEnc == 5) + tempForMin[prevEnc] = EdifactEncodation(text, textOffset + i, 1, dataDynamicInner[prevEnc], dataNewOffset[prevEnc] + dataOffset, dataSize - dataNewOffset[prevEnc], i, prevEnc + 1, dataOffset, sizeFixed); + + } + SolveFAndSwitchMode(tempForMin, currEnc, i); + if (switchMode[currEnc][i] != 0) + System.Array.Copy(dataDynamicInner[switchMode[currEnc][i] - 1], 0, dataDynamic[currEnc], 0, data.Length); } } - if (j == 0) - e = AsciiEncodation(text, textOffset, textSize, data, dataOffset, dataSize); - else if (j == 1) - e = C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, false); - else if (j == 2) - e = C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, true); - else if (j == 3) - e = B256Encodation(text, textOffset, textSize, data, dataOffset, dataSize); - else if (j == 4) - e = X12Encodation(text, textOffset, textSize, data, dataOffset, dataSize); + e = MinValueInColumn(f, textSize - 1); + if (e > dataSize || e < 0) + return -1; + int bestDataDynamicResultIndex = ValuePositionInColumn(f, textSize - 1, e); + System.Array.Copy(dataDynamic[bestDataDynamicResultIndex], 0, data, 0, data.Length); return e; } switch (options) { - case DM_ASCII: - return AsciiEncodation(text, textOffset, textSize, data, dataOffset, dataSize); - case DM_C40: - return C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, true); - case DM_TEXT: - return C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, false); - case DM_B256: - return B256Encodation(text, textOffset, textSize, data, dataOffset, dataSize); - case DM_X21: - return X12Encodation(text, textOffset, textSize, data, dataOffset, dataSize); - case DM_EDIFACT: - return EdifactEncodation(text, textOffset, textSize, data, dataOffset, dataSize); - case DM_RAW: - if (textSize > dataSize) - return -1; - System.Array.Copy(text, textOffset, data, dataOffset, textSize); - return textSize; + case DM_ASCII: + return AsciiEncodation(text, textOffset, textSize, data, dataOffset, dataSize, -1, -1, dataOffset); + case DM_C40: + return C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, true, -1, -1, dataOffset); + case DM_TEXT: + return C40OrTextEncodation(text, textOffset, textSize, data, dataOffset, dataSize, false, -1, -1, dataOffset); + case DM_B256: + return B256Encodation(text, textOffset, textSize, data, dataOffset, dataSize, -1, -1, dataOffset); + case DM_X12: + return X12Encodation(text, textOffset, textSize, data, dataOffset, dataSize, -1, -1, dataOffset); + case DM_EDIFACT: + return EdifactEncodation(text, textOffset, textSize, data, dataOffset, dataSize, -1, -1, dataOffset, sizeFixed); + case DM_RAW: + if (textSize > dataSize) + return -1; + System.Array.Copy(text, textOffset, data, dataOffset, textSize); + return textSize; } return -1; } @@ -583,7 +975,7 @@ private static int GetNumber(byte[] text, int ptrIn, int n) { int v, j, c; v = 0; for (j = 0; j < n; ++j) { - c = text[ptrIn++] &0xff; + c = text[ptrIn++] & 0xff; if (c < '0' || c > '9') return -1; v = v * 10 + c - '0'; @@ -601,75 +993,75 @@ private int ProcessExtensions(byte[] text, int textOffset, int textSize, byte[] while (ptrIn < textSize) { if (order > 20) return -1; - c = text[textOffset + ptrIn++] &0xff; + c = text[textOffset + ptrIn++] & 0xff; ++order; switch (c) { - case '.': - extOut = ptrIn; - return ptrOut; - case 'e': - if (ptrIn + 6 > textSize) - return -1; - eci = GetNumber(text, textOffset + ptrIn, 6); - if (eci < 0) - return -1; - ptrIn += 6; - data[ptrOut++] = (byte)241; - if (eci < 127) - data[ptrOut++] = (byte)(eci + 1); - else if (eci < 16383) { - data[ptrOut++] = (byte)((eci - 127) / 254 + 128); - data[ptrOut++] = (byte)(((eci - 127) % 254) + 1); - } - else { - data[ptrOut++] = (byte)((eci - 16383) / 64516 + 192); - data[ptrOut++] = (byte)((((eci - 16383) / 254) % 254) + 1); - data[ptrOut++] = (byte)(((eci - 16383) % 254) + 1); - } - break; - case 's': - if (order != 1) - return -1; - if (ptrIn + 9 > textSize) - return -1; - fn = GetNumber(text, textOffset + ptrIn, 2); - if (fn <= 0 || fn > 16) - return -1; - ptrIn += 2; - ft = GetNumber(text, textOffset + ptrIn, 2); - if (ft <= 1 || ft > 16) - return -1; - ptrIn += 2; - fi = GetNumber(text, textOffset + ptrIn, 5); - if (fi < 0 || fn >= 64516) - return -1; - ptrIn += 5; - data[ptrOut++] = (byte)(233); - data[ptrOut++] = (byte)(((fn - 1) << 4) | (17 - ft)); - data[ptrOut++] = (byte)(fi / 254 + 1); - data[ptrOut++] = (byte)((fi % 254) + 1); - break; - case 'p': - if (order != 1) - return -1; - data[ptrOut++] = (byte)(234); - break; - case 'm': - if (order != 1) - return -1; - if (ptrIn + 1 > textSize) - return -1; - c = text[textOffset + ptrIn++] &0xff; - if (c != '5' && c != '5') - return -1; - data[ptrOut++] = (byte)(234); - data[ptrOut++] = (byte)(c == '5' ? 236 : 237); - break; - case 'f': - if (order != 1 && (order != 2 || (text[textOffset] != 's' && text[textOffset] != 'm'))) - return -1; - data[ptrOut++] = (byte)(232); - break; + case '.': + extOut = ptrIn; + return ptrOut; + case 'e': + if (ptrIn + 6 > textSize) + return -1; + eci = GetNumber(text, textOffset + ptrIn, 6); + if (eci < 0) + return -1; + ptrIn += 6; + data[ptrOut++] = (byte)241; + if (eci < 127) + data[ptrOut++] = (byte)(eci + 1); + else if (eci < 16383) { + data[ptrOut++] = (byte)((eci - 127) / 254 + 128); + data[ptrOut++] = (byte)(((eci - 127) % 254) + 1); + } + else { + data[ptrOut++] = (byte)((eci - 16383) / 64516 + 192); + data[ptrOut++] = (byte)((((eci - 16383) / 254) % 254) + 1); + data[ptrOut++] = (byte)(((eci - 16383) % 254) + 1); + } + break; + case 's': + if (order != 1) + return -1; + if (ptrIn + 9 > textSize) + return -1; + fn = GetNumber(text, textOffset + ptrIn, 2); + if (fn <= 0 || fn > 16) + return -1; + ptrIn += 2; + ft = GetNumber(text, textOffset + ptrIn, 2); + if (ft <= 1 || ft > 16) + return -1; + ptrIn += 2; + fi = GetNumber(text, textOffset + ptrIn, 5); + if (fi < 0 || fn >= 64516) + return -1; + ptrIn += 5; + data[ptrOut++] = (byte)(233); + data[ptrOut++] = (byte)(((fn - 1) << 4) | (17 - ft)); + data[ptrOut++] = (byte)(fi / 254 + 1); + data[ptrOut++] = (byte)((fi % 254) + 1); + break; + case 'p': + if (order != 1) + return -1; + data[ptrOut++] = (byte)(234); + break; + case 'm': + if (order != 1) + return -1; + if (ptrIn + 1 > textSize) + return -1; + c = text[textOffset + ptrIn++] & 0xff; + if (c != '5' && c != '5') + return -1; + data[ptrOut++] = (byte)(234); + data[ptrOut++] = (byte)(c == '5' ? 236 : 237); + break; + case 'f': + if (order != 1 && (order != 2 || (text[textOffset] != 's' && text[textOffset] != 'm'))) + return -1; + data[ptrOut++] = (byte)(232); + break; } } return -1; @@ -687,10 +1079,29 @@ private int ProcessExtensions(byte[] text, int textOffset, int textSize, byte[] * @throws java.io.UnsupportedEncodingException on error */ virtual public int Generate(String text) { - byte[] t = System.Text.Encoding.GetEncoding(1252).GetBytes(text); + byte[] t = System.Text.Encoding.GetEncoding(encoding).GetBytes(text); + return Generate(t, 0, t.Length); } - + + /** + * Creates a barcode. The String is interpreted with the ISO-8859-1 encoding + * @param text the text to encode into + * @param + * @return the status of the generation. It can be one of this values: + *

+ * DM_NO_ERROR - no error.
+ * DM_ERROR_TEXT_TOO_BIG - the text is too big for the symbology capabilities.
+ * DM_ERROR_INVALID_SQUARE - the dimensions given for the symbol are illegal.
+ * DM_ERROR_EXTENSION - an error was while parsing an extension. + * @throws java.io.UnsupportedEncodingException on error + */ + virtual public int Generate(String text, String encoding) { + byte[] t = System.Text.Encoding.GetEncoding(encoding).GetBytes(text); + + return Generate(t, 0, t.Length); + } + /** * Creates a barcode. * @param text the text @@ -713,6 +1124,15 @@ virtual public int Generate(byte[] text, int textOffset, int textSize) { return DM_ERROR_EXTENSION; } e = -1; + + int innerSize = textSize - extOut; + f = new int[6][]; + switchMode = new int[6][]; + for (int i = 0; i < f.Length; i++) { + f[i] = new int[innerSize]; + switchMode[i] = new int[innerSize]; + } + if (height == 0 || width == 0) { last = dmSizes[dmSizes.Length - 1]; e = GetEncodation(text, textOffset + extOut, textSize - extOut, data, extCount, last.dataSize - extCount, options, false); @@ -721,7 +1141,7 @@ virtual public int Generate(byte[] text, int textOffset, int textSize) { } e += extCount; for (k = 0; k < dmSizes.Length; ++k) { - if (dmSizes[k].dataSize >= e && (!forceSquareSize || dmSizes[k].width == dmSizes[k].height)) + if (dmSizes[k].dataSize >= e) break; } dm = dmSizes[k]; @@ -756,29 +1176,29 @@ virtual public int Generate(byte[] text, int textOffset, int textSize) { } virtual public void PlaceBarcode(PdfContentByte cb, BaseColor foreground, float moduleHeight, float moduleWidth) { - int w = width + 2*ws; - int h = height + 2*ws; - int stride = (w + 7)/8; + int w = width + 2 * ws; + int h = height + 2 * ws; + int stride = (w + 7) / 8; int ptr = 0; cb.SetColorFill(foreground); for (int k = 0; k < h; ++k) { - int p = k*stride; + int p = k * stride; for (int j = 0; j < w; ++j) { - int b = image[p + j/8] & 0xff; - b <<= j%8; + int b = image[p + j / 8] & 0xff; + b <<= j % 8; if ((b & 0x80) != 0) { - cb.Rectangle(j*moduleWidth, (h - k - 1)*moduleHeight, moduleWidth, moduleHeight); + cb.Rectangle(j * moduleWidth, (h - k - 1) * moduleHeight, moduleWidth, moduleHeight); } } } cb.Fill(); } - + /** Gets an Image with the barcode. A successful call to the method generate() * before calling this method is required. * @return the barcode Image * @throws BadElementException on error - */ + */ virtual public Image CreateImage() { if (image == null) return null; @@ -793,7 +1213,7 @@ virtual public Image CreateImage() { * @param foreground the color of the bars * @param background the color of the background * @return the image - */ + */ public virtual System.Drawing.Image CreateDrawingImage(System.Drawing.Color foreground, System.Drawing.Color background) { if (image == null) return null; @@ -994,11 +1414,11 @@ internal class Placement { private int nrow; private int ncol; private short[] array; - private static Dictionary cache = new Dictionary(); + private static Dictionary cache = new Dictionary(); - private Placement() { + private Placement() { } - + internal static short[] DoPlacement(int nrow, int ncol) { int key = nrow * 1000 + ncol; lock (cache) { @@ -1019,64 +1439,64 @@ internal static short[] DoPlacement(int nrow, int ncol) { /* "module" places "chr+bit" with appropriate wrapping within array[] */ private void Module(int row, int col, int chr, int bit) { - if (row < 0) { row += nrow; col += 4 - ((nrow+4)%8); } - if (col < 0) { col += ncol; row += 4 - ((ncol+4)%8); } - array[row*ncol+col] = (short)(8*chr + bit); + if (row < 0) { row += nrow; col += 4 - ((nrow + 4) % 8); } + if (col < 0) { col += ncol; row += 4 - ((ncol + 4) % 8); } + array[row * ncol + col] = (short)(8 * chr + bit); } /* "utah" places the 8 bits of a utah-shaped symbol character in ECC200 */ - private void Utah(int row, int col, int chr) { - Module(row-2,col-2,chr,0); - Module(row-2,col-1,chr,1); - Module(row-1,col-2,chr,2); - Module(row-1,col-1,chr,3); - Module(row-1,col,chr,4); - Module(row,col-2,chr,5); - Module(row,col-1,chr,6); - Module(row,col,chr,7); + private void Utah(int row, int col, int chr) { + Module(row - 2, col - 2, chr, 0); + Module(row - 2, col - 1, chr, 1); + Module(row - 1, col - 2, chr, 2); + Module(row - 1, col - 1, chr, 3); + Module(row - 1, col, chr, 4); + Module(row, col - 2, chr, 5); + Module(row, col - 1, chr, 6); + Module(row, col, chr, 7); } /* "cornerN" places 8 bits of the four special corner cases in ECC200 */ - private void Corner1(int chr) { - Module(nrow-1,0,chr,0); - Module(nrow-1,1,chr,1); - Module(nrow-1,2,chr,2); - Module(0,ncol-2,chr,3); - Module(0,ncol-1,chr,4); - Module(1,ncol-1,chr,5); - Module(2,ncol-1,chr,6); - Module(3,ncol-1,chr,7); - } - private void Corner2(int chr){ - Module(nrow-3,0,chr,0); - Module(nrow-2,0,chr,1); - Module(nrow-1,0,chr,2); - Module(0,ncol-4,chr,3); - Module(0,ncol-3,chr,4); - Module(0,ncol-2,chr,5); - Module(0,ncol-1,chr,6); - Module(1,ncol-1,chr,7); - } - private void Corner3(int chr){ - Module(nrow-3,0,chr,0); - Module(nrow-2,0,chr,1); - Module(nrow-1,0,chr,2); - Module(0,ncol-2,chr,3); - Module(0,ncol-1,chr,4); - Module(1,ncol-1,chr,5); - Module(2,ncol-1,chr,6); - Module(3,ncol-1,chr,7); - } - private void Corner4(int chr){ - Module(nrow-1,0,chr,0); - Module(nrow-1,ncol-1,chr,1); - Module(0,ncol-3,chr,2); - Module(0,ncol-2,chr,3); - Module(0,ncol-1,chr,4); - Module(1,ncol-3,chr,5); - Module(1,ncol-2,chr,6); - Module(1,ncol-1,chr,7); + private void Corner1(int chr) { + Module(nrow - 1, 0, chr, 0); + Module(nrow - 1, 1, chr, 1); + Module(nrow - 1, 2, chr, 2); + Module(0, ncol - 2, chr, 3); + Module(0, ncol - 1, chr, 4); + Module(1, ncol - 1, chr, 5); + Module(2, ncol - 1, chr, 6); + Module(3, ncol - 1, chr, 7); + } + private void Corner2(int chr) { + Module(nrow - 3, 0, chr, 0); + Module(nrow - 2, 0, chr, 1); + Module(nrow - 1, 0, chr, 2); + Module(0, ncol - 4, chr, 3); + Module(0, ncol - 3, chr, 4); + Module(0, ncol - 2, chr, 5); + Module(0, ncol - 1, chr, 6); + Module(1, ncol - 1, chr, 7); + } + private void Corner3(int chr) { + Module(nrow - 3, 0, chr, 0); + Module(nrow - 2, 0, chr, 1); + Module(nrow - 1, 0, chr, 2); + Module(0, ncol - 2, chr, 3); + Module(0, ncol - 1, chr, 4); + Module(1, ncol - 1, chr, 5); + Module(2, ncol - 1, chr, 6); + Module(3, ncol - 1, chr, 7); + } + private void Corner4(int chr) { + Module(nrow - 1, 0, chr, 0); + Module(nrow - 1, ncol - 1, chr, 1); + Module(0, ncol - 3, chr, 2); + Module(0, ncol - 2, chr, 3); + Module(0, ncol - 1, chr, 4); + Module(1, ncol - 3, chr, 5); + Module(1, ncol - 2, chr, 6); + Module(1, ncol - 1, chr, 7); } /* "ECC200" fills an nrow x ncol array with appropriate values for ECC200 */ - private void Ecc200(){ + private void Ecc200() { int row, col, chr; /* First, fill the array[] with invalid entries */ for (int k = 0; k < array.Length; ++k) @@ -1086,35 +1506,35 @@ private void Ecc200(){ do { /* repeatedly first check for one of the special corner cases, then... */ if ((row == nrow) && (col == 0)) Corner1(chr++); - if ((row == nrow-2) && (col == 0) && (ncol%4 != 0)) Corner2(chr++); - if ((row == nrow-2) && (col == 0) && (ncol%8 == 4)) Corner3(chr++); - if ((row == nrow+4) && (col == 2) && (ncol%8 == 0)) Corner4(chr++); + if ((row == nrow - 2) && (col == 0) && (ncol % 4 != 0)) Corner2(chr++); + if ((row == nrow - 2) && (col == 0) && (ncol % 8 == 4)) Corner3(chr++); + if ((row == nrow + 4) && (col == 2) && (ncol % 8 == 0)) Corner4(chr++); /* sweep upward diagonally, inserting successive characters,... */ do { - if ((row < nrow) && (col >= 0) && array[row*ncol+col] == 0) - Utah(row,col,chr++); + if ((row < nrow) && (col >= 0) && array[row * ncol + col] == 0) + Utah(row, col, chr++); row -= 2; col += 2; } while ((row >= 0) && (col < ncol)); row += 1; col += 3; /* & then sweep downward diagonally, inserting successive characters,... */ do { - if ((row >= 0) && (col < ncol) && array[row*ncol+col] == 0) - Utah(row,col,chr++); + if ((row >= 0) && (col < ncol) && array[row * ncol + col] == 0) + Utah(row, col, chr++); row += 2; col -= 2; } while ((row < nrow) && (col >= 0)); row += 3; col += 1; /* ... until the entire array is scanned */ } while ((row < nrow) || (col < ncol)); /* Lastly, if the lower righthand corner is untouched, fill in fixed pattern */ - if (array[nrow*ncol-1] == 0) { - array[nrow*ncol-1] = array[nrow*ncol-ncol-2] = 1; + if (array[nrow * ncol - 1] == 0) { + array[nrow * ncol - 1] = array[nrow * ncol - ncol - 2] = 1; } } } internal class ReedSolomon { - + private static readonly int[] log = { 0, 255, 1, 240, 2, 225, 241, 53, 3, 38, 226, 133, 242, 43, 54, 210, 4, 195, 39, 114, 227, 106, 134, 28, 243, 140, 44, 23, 55, 118, 211, 234, @@ -1236,41 +1656,41 @@ internal class ReedSolomon { 181, 241, 59, 52, 172, 25, 49, 232, 211, 189, 64, 54, 108, 153, 132, 63, 96, 103, 82, 186 }; - + private static int[] GetPoly(int nc) { switch (nc) { - case 5: - return poly5; - case 7: - return poly7; - case 10: - return poly10; - case 11: - return poly11; - case 12: - return poly12; - case 14: - return poly14; - case 18: - return poly18; - case 20: - return poly20; - case 24: - return poly24; - case 28: - return poly28; - case 36: - return poly36; - case 42: - return poly42; - case 48: - return poly48; - case 56: - return poly56; - case 62: - return poly62; - case 68: - return poly68; + case 5: + return poly5; + case 7: + return poly7; + case 10: + return poly10; + case 11: + return poly11; + case 12: + return poly12; + case 14: + return poly14; + case 18: + return poly18; + case 20: + return poly20; + case 24: + return poly24; + case 28: + return poly28; + case 36: + return poly36; + case 42: + return poly42; + case 48: + return poly48; + case 56: + return poly56; + case 62: + return poly62; + case 68: + return poly68; } return null; } @@ -1278,11 +1698,11 @@ private static int[] GetPoly(int nc) { private static void ReedSolomonBlock(byte[] wd, int nd, byte[] ncout, int nc, int[] c) { int i, j, k; - for (i=0; i<=nc; i++) ncout[i] = 0; - for (i=0; iGMQXRSYEkGSPL>;Tj(MnPZxNUTc{33 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 literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix03.pdf b/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix03.pdf new file mode 100644 index 0000000000000000000000000000000000000000..740750061db59d43f4591bff6a5731126239f9d6 GIT binary patch literal 1464 zcmY!laB8KCYaqwWU`ar z-TZautRu&_+w9xE`q{^-8aw{=3y({koA1sezh?c><@sVdt)G8Ze1H0F$KE?~-|zoF z^!Vj_WtaN;e>0~RUaht5f8XBf`uRYHy!VHchsRHc3LO4>J!Xo~wb%bjBoqbbOyFz{ z;OxD?>8vj*#IL626Eow6!NTLhoVDenAsYWK;h zN7l~Rq^07QbYgd8g!DnqnE{pi0$+x(CAzZA3;*4!b zXPc_{{X})V=91h6YgDGXzU@+zyUvlGS>V<@*Z1y(6+0MC8%Y=m# zp%Kq@x!%1#5!PNZza?KcmAcj*t~>tkz^`B14|`5dob+;{KKD#9$!Wa2r+%6Lo;F4K z2fY9|?S<@-e;9`RL3?9&b&*NduuZ5VC)3f0DGp!&S+6v*8xQt%lnSw;S#- z+$mbQB}C%hjC&IIXZ-*9gMaduDg9ijc`49z24sQKr3oT^hEx`$>IWpIr|SErrer2M z5P6WzAp1bdq4@!9AIKp6;L@ZLkmVo|Lw%>j;#9D(M`})4YDs2tqP}Y$ zFpp&BrR#@h<~imSXTtb)b}(~6)*zb;@<%byNu@w180vdxrW8kmyc!gX&|-?F#W}Gg zF(*GA90bMa?lwax4k*e`DNRl-(#Q-+ttbi3NGvLtq+qINs%L1V8|>#85bWU}qOj7) zz`#J)$iUEC0jx~Hy(qu5K*29eAx6W|J-|n|EVZaOGe0jzQ&Zm=nDI-1Y!_f@py6T# z(qv#^XaIzkriR)EM(PFz>YDn#`6+l6AUsx4l$yq6pkU4gbOID8n3Cu^OJfTRb(R*uSb>>WQk0mPlUf8S2!k`LQWebg zgYxrB6hM&>r0IGf_D{UL8I^eanJjEf6w>x zzA}SW7l}k+64}J$(5M6jFklLvlElYDX_Ujt+kgVcARTSzDHhV%37*nYW`?BHYK~_q zqEJ%WoZ0ws?NxYN(qeq2UjBUUQcvEx$Bg;=H}u@|T4c$|@`3MFHA7!vYJA_s)WWG? z#xvU0F8w|K^4!y&%c1l5!tJ~SBmnYMzw^Ps%=|AOF8#J6aA+xz7}`;H(Rxii)%&og zE}a-D>$A1$Q=S;VF_qa_y?Bc=q@KLE_;ZLRI9L<1MI*yBp?WACQw`pm4o2}ZO{+7mW3U52ec9c{aN@B#w#p}s+Sr1b~zd5|w# zI|kRcbhd5V^7tcs->g2a%lT87>-tBpdU}(lPdU%{+?d}Q++@Ghtufi8>7jlV1w|3f zSCY6!Ch8&5)N1}?us?78Fd0{A$aV{aj+C&Q1K-f9=@Rb7SAFbDwyzQ$jh&<>3+}aTu}Hq0A_AQjmeLQcyZY(u9U7&4Gne z1+D-p49$a#6vq^^W{MLASjRYc@rM9JpcvJ{f)WLca_}4w2i+)GVuc-u{_9-yEcz4a z%a_3GPc#IXiVJwrxriW;hTteKoI=@4D4sSGP?AHq7_`F*JxMzf92~u}SF2a-if-<- zE9SuoAr%WDAdsFWxg0T7W8SKYVvR~7!4r1I>Ma4cHtv{JvVmpDVl&0c=?torH`xf* z*#Hz#iYNq)H0@3>m{Rs+fHzPWh9glJQ35XwB(qGh6YSm#a^(rhhP22Misfj=ksB5U zB?`Bl7i6vQ1jx0qq7tk^VBy0RNH~m!!f611IS#n;b7KSKc} zWMmi~h)pm;yBrnSD2|NbDa0FJNmS~j{wy6J~AvRj( aEq&yg-bgr}V0mwm5CjumXIau7o#aoRE)%=} literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix05.pdf b/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix05.pdf new file mode 100644 index 0000000000000000000000000000000000000000..83fd8e609773031362cc851fc4c6cab96846694f GIT binary patch literal 2737 zcmai02Ut^C7FHC|P{c9V9Ue*vp`?(C5ClR1l@JM4f@^?>gpy=aG?bZfqzSB8C=QV( zuz(R!!2w}h(I}`eQBV;DQ8A$zKv*1#4!SR_uH)?Y?cVo&@7?#`b5HrteeWDI29;)m zvBkm6UMcTCgkb?RzzdCnIXIwpf!zI~NB~135>Yfxj0hBwlc$oGq^wTanqrsYn!*g>M;+$M%1uwHYFQ`Lf}7=Smc(<}WNBT>lB*HA z!>^i-KB#{>tsgSlpL~1uw+so@oA@ZdWCyZT)`sk+y5bs!Vyk-aI@DgadWc2ejCL_GlMw*ZT1JbHX`(Ks@v}DJ?s# zEUoTB^Z0ny*mz*cRGNGPV}0);zmni;Z#ndSMDjr;2N_Y11KtZ|2pr0u85Ky zI|QD#nHk7TmJ!~M&}iE|(3%(T+SN)x978%(Ph62N$*fh}Pqm$XDOU!)8E$RARA|*h zH9eJ>uOWZfmdWLM&nUfnV@}6zMifNa9PM%p?yG}tPwNK85iTAntZ%^Gonp6|3~5zn zYhDYxAVRUZV@Op!$6<}8Z8Gap+YL?JcPoZc=}PySWNr+a@vNF&ul=+5(H)Ii`$W=rq)<}V6fIpLc7=RAxl`a) zlkfX?e|Igj1$&T`uMqd{D*pp)F?1vD-k_B<;n68j8RcC;X*rd_|$gg7urII!}= z<-Uqm;p(D-iP7Xr3kRqE6|nn^M`O89;!n!!;6)V^4k;E$2WJ0S*!`}!;q7iimiF{c zPKE(flvi2?FDxGhT80o5+N5R1%H4^nueQRAOJ*0f3|UYp{UhmFRQ?thg!MVCJiL_l zkYlefta5W@wq{ZK@fB{@H~PA4745Z)G*^f=$(Cm$b5U?K{B@MM zap;7eYvmfEsnmL3&>2fyZpZS%Zjsd4F0v-hZ%Ry@NA?JDTf3f-NTpE+&G%J zz0?zz&j|EiakL{2a`J2^5e!%|$B?HPQv4?{hrL%xjvSi*ko5lTp*c4_ zZP+_Fbl@fSX#=LO{*u#h}uJ-TlYhplxFAc=niiy8A|D%U5E3{8~c&F7%cOhcEnVW7qR%NVeyEN$b!t(jM!Fvq{F7oc+QW)A- zD>|WkT%qZ~vXR*ZT6_CiLO7aVOy$1rT|b(S%;l@o4xIZrsPG9reJtk*eGznaBJC9= z`F>AxaJyu_PZ-x3a>gx2E8`BM4PX2kADjH*J0XALhU1agGZ(8na4*K-cSm-g>20Q8 zBh$ti?fOm8#v?`e?GPnL(SZbQ>x9@BoWMYH)k)T>k9}B}y=PG~`AYaj%&a=e zYQ_7MF?q2G%jZfd-?=|tPFF_BQAh%?cK!60;N68)v_}uha@{w}mUW$6TGD?#Y3niB z*}wO{Oe$Mx;6(cHa_Q3j07?4>dG_t>%2HIuWf;f}|5RV0nWiA)z7%HPI6jDCu=j%~ zFEE_LcHv2a(a+(mXH#1`_e1Km+9pVIWr|1T@9o z2ht>f-T=FQuWKx8>}kY5H3AFvG>TA6ai~aRT!UaxE^HyV0DFKj2S5=gjE!>RLcIZp zyB`(6;W~4LoX_tR%4fYAGk?^pi9-mvB!*nTpmuV?g~6IoeL}u$!T)KCD_g{l;q70b zK=^0B315U60$#W{3=|+ZzMw?JjARS=Cjq=I-WG$kVbYx$Ob>5g;4Bu6M%!S~7$UGB z2Dl4&Vm?6k2UrMacg8N81E4_2;c;1(mMB-K;SoV|D%1rbsP>voXc7huU1U7Q3XQcu zqb)2^UcB)CDexsQi2#g%p#dTca^cee2zb059*6)wVOTT~%93UP+|L*qje#in8pC1; z&>8p|!;t?Q!(uT|X1|uhV(}1bpD~eu&4~d8nhuc3i3b59%7@1j0h%QEpgg$|JU~M+ zG^GN;4&iJfmW(5i(cz(ZG64@p5W>QU;Sp?hc$i%%4i8fPzl0{yW((BY{3$mup@=OI REs%u8VM#DEGdFJ<>|Z%nqd@=w literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix06.pdf b/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix06.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ccb863b12dfb6223ba0dd822e935af55ed5dc895 GIT binary patch literal 1472 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 Rkl=7L3prig6CRFo{|2utyj1`I literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix08.pdf b/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix08.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2a2fa1eaae1f05901f87506a41d841e4db230c3a GIT binary patch literal 3273 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 literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix09.pdf b/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix09.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a0e8800af3724c1bafcd99331902a3dfae6603e9 GIT binary patch literal 5581 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 RjRb=rAi}b;M%Ko{{{{Modi4MR literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix10.pdf b/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix10.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ed1eb77ab4eec48b9d7af592a90e941e117a25de GIT binary patch literal 3925 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 literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix11.pdf b/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix11.pdf new file mode 100644 index 0000000000000000000000000000000000000000..209707226d891f0a82bb1a1fd9f8a81ae49ae504 GIT binary patch literal 3883 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 literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix12.pdf b/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix12.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b41eb69d8ba923feb113c92dee459b7cf047192c GIT binary patch literal 3252 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 literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix13.pdf b/src/extras/itextsharp.tests/resources/text/pdf/BarcodeDatamatrix/barcodeDataMatrix13.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1044b17bd5f08b58fa8a3f1e1e3fc28d9e6d883c GIT binary patch literal 3787 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 E7Zs-6tpET3 literal 0 HcmV?d00001 From 7f87d88e7ed1549dcb1e158f8d42a5cd56b7ec16 Mon Sep 17 00:00:00 2001 From: Ilya Idamkin Date: Fri, 11 Aug 2017 13:49:15 +0300 Subject: [PATCH 27/31] Port freetext annotation flattening improvements Add support for flattening freetext annotations with no AS, and built-in fonts in it DA. This commit ports: cef16359ac, 8012939052, 920bbaabbb, b4a29efe02, 133eabb233. DEV-1896, DEV-1887 --- .../iTextSharp/text/error_messages/en.lng | 3 + .../iTextSharp/text/error_messages/nl.lng | 3 + src/core/iTextSharp/text/pdf/BaseFont.cs | 19 +++ src/core/iTextSharp/text/pdf/PdfStamperImp.cs | 121 +++++++++++++++-- .../text/pdf/FreeTextFlatteningTest.cs | 128 ++++++++++++++++++ .../itextsharp.tests(VS2010).csproj | 1 + .../itextsharp.tests/itextsharp.tests.csproj | 1 + .../cmp_freetext-times-short-flattened.pdf | Bin 0 -> 16844 bytes .../pdf/FreeTextFlatteningTest/flattened.pdf | Bin 0 -> 24972 bytes .../freetext-courier.pdf | Bin 0 -> 16229 bytes .../FreeTextFlatteningTest/freetext-no-da.pdf | Bin 0 -> 24286 bytes .../freetext-times-short.pdf | Bin 0 -> 16196 bytes .../pdf/FreeTextFlatteningTest/freetext.pdf | Bin 0 -> 24541 bytes 13 files changed, 263 insertions(+), 13 deletions(-) create mode 100644 src/extras/itextsharp.tests/iTextSharp/text/pdf/FreeTextFlatteningTest.cs create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/cmp_freetext-times-short-flattened.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/flattened.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/freetext-courier.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/freetext-no-da.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/freetext-times-short.pdf create mode 100644 src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/freetext.pdf diff --git a/src/core/iTextSharp/text/error_messages/en.lng b/src/core/iTextSharp/text/error_messages/en.lng index 850eefc75..3008b3970 100644 --- a/src/core/iTextSharp/text/error_messages/en.lng +++ b/src/core/iTextSharp/text/error_messages/en.lng @@ -74,6 +74,7 @@ an.uncolored.pattern.was.expected=An uncolored pattern was expected. an.uncolored.tile.pattern.can.not.have.another.pattern.or.shading.as.color=An uncolored tile pattern can not have another pattern or shading as color. annotation.of.type.1.should.have.contents.key=Annotation of type {1} should have Contents key. annotation.type.1.not.allowed=Annotation type {1} not allowed. +annotation.type.not.supported.flattening=This annotation is not supported for flattening. Skipping this annotation. appearance.dictionary.of.widget.subtype.and.btn.field.type.shall.contain.only.the.n.key.with.dictionary.value=Appearance dictionary of Widget subtype and Btn field type shall contain only the n key with dictionary value appearance.dictionary.shall.contain.only.the.n.key.with.stream.value=Appearance dictionary shall contain only the N key with stream value. append.mode.does.not.support.changing.the.encryption.status=Append mode does not support changing the encryption status. @@ -167,6 +168,7 @@ error.in.base64.code.reading.stream=Error in Base64 code reading stream. error.parsing.cmap.beginbfchar.expected.cosstring.or.cosname.and.not.1=Error parsing CMap beginbfchar, expected {COSString or COSName} and not {1} error.reading.objstm=Error reading ObjStm error.reading.string=Error reading string +error.resolving.freetext.font=Cannot resolve annotation's font. It won't be flattened error.with.jp.marker=Error with JP Marker every.annotation.shall.have.at.least.one.appearance.dictionary=Every annotation shall have at least one appearance dictionary exactly.one.colour.space.specification.shall.have.the.value.0x01.in.the.approx.field=Exactly one colour space specification shall have the value 0x01 in the APPROX field. @@ -194,6 +196,7 @@ font.1.with.2.is.not.recognized=Font '{1}' with '{2}' is not recognized. font.and.size.must.be.set.before.writing.any.text=Font and size must be set before writing any text font.size.too.small.1=Font size too small: {1} fontfactoryimp.cannot.be.null=FontFactoryImp cannot be null. +freetext.annotation.doesnt.contain.da=FreeText Annotation doesn't contain a DA. Not flattening this annotation. freetext.flattening.is.not.supported.in.append.mode=FreeText flattening is not supported in append mode. annotation.flattening.is.not.supported.in.append.mode=Annotation flattening is not supported in append mode. getcell.at.illegal.index.1.max.is.2=getCell at illegal index :{1} max is {2} diff --git a/src/core/iTextSharp/text/error_messages/nl.lng b/src/core/iTextSharp/text/error_messages/nl.lng index 196a70f4f..9d03dbf02 100644 --- a/src/core/iTextSharp/text/error_messages/nl.lng +++ b/src/core/iTextSharp/text/error_messages/nl.lng @@ -74,6 +74,7 @@ an.uncolored.pattern.was.expected=Er werd een ongekleurd patroon verwacht. an.uncolored.tile.pattern.can.not.have.another.pattern.or.shading.as.color=Een ongekleurd tile pattern kan geen ander pattern of shading als color gebruiken. annotation.of.type.1.should.have.contents.key=Annotation van type {1} moet een Contents sleutel hebben. annotation.type.1.not.allowed=Annotation type {1} niet toegelaten. +annotation.type.not.supported.flattening=Dit annotatie type is niet ondersteund tijdens het flattenen. Deze wordt overgeslaan. appearance.dictionary.of.widget.subtype.and.btn.field.type.shall.contain.only.the.n.key.with.dictionary.value=Appearance dictionary van subtype Widget en field type Btn mag enkel de N sleutel met als waarde een Dictionaty bevatten appearance.dictionary.shall.contain.only.the.n.key.with.stream.value=Appearance dictionary mag enkel de N sleutel met een stream waarde bevatten. append.mode.does.not.support.changing.the.encryption.status=Append mode laat geen wijziging toe van de encryptie status. @@ -167,6 +168,7 @@ error.in.base64.code.reading.stream=Fout in de Base64 code reading stream. error.parsing.cmap.beginbfchar.expected.cosstring.or.cosname.and.not.1=Fout bij het parsen van CMap beginbfchar, {COSString or COSName} verwacht in plaats van {1} error.reading.objstm=Fout tijdens het lezen van ObjStm error.reading.string=Fout bij het lezen van een string +error.resolving.freetext.font=Kan het lettertype van annotatie niet oplossen. Het wordt niet afgedrukt error.with.jp.marker=Foute JP Marker every.annotation.shall.have.at.least.one.appearance.dictionary=Elke annotation moet ten minste 1 appearance dictionary hebben exactly.one.colour.space.specification.shall.have.the.value.0x01.in.the.approx.field=Exact 1 colour space specificatie moet de waarde 0x01 in het APPROX veld hebben. @@ -194,6 +196,7 @@ font.1.with.2.is.not.recognized=Font '{1}' met '{2}' werd niet herkend. font.and.size.must.be.set.before.writing.any.text=Font en size moeten bepaald zijn vooraleer je tekst schrijft. font.size.too.small.1=Font size te klein: {1} fontfactoryimp.cannot.be.null=FontFactoryImp kan niet null zijn. +freetext.annotation.doesnt.contain.da=FreeText Annotatie bevat geen DA. Deze annotatie kan niet worden geflattened en wordt overgeslaan. freetext.flattening.is.not.supported.in.append.mode=FreeText flattening is niet ondersteund in append mode. annotation.flattening.is.not.supported.in.append.mode=Het flattenen van annotations is niet ondersteund in append mode. getcell.at.illegal.index.1.max.is.2=getCell op ongeldige index:{1} maximum: {2} diff --git a/src/core/iTextSharp/text/pdf/BaseFont.cs b/src/core/iTextSharp/text/pdf/BaseFont.cs index 143a4119d..3e32510f5 100644 --- a/src/core/iTextSharp/text/pdf/BaseFont.cs +++ b/src/core/iTextSharp/text/pdf/BaseFont.cs @@ -1512,6 +1512,25 @@ public static List GetDocumentFonts(PdfReader reader, int page) { return fonts; } + internal static PdfDictionary createBuiltInFontDictionary(String name) { + PdfName fontName; + if (BuiltinFonts14.TryGetValue(name, out fontName)) { + return createBuiltInFontDictionary(fontName); + } + return null; + } + + private static PdfDictionary createBuiltInFontDictionary(PdfName name) { + if (name == null) { + return null; + } + PdfDictionary dictionary = new PdfDictionary(); + dictionary.Put(PdfName.TYPE, PdfName.FONT); + dictionary.Put(PdfName.BASEFONT, name); + dictionary.Put(PdfName.SUBTYPE, PdfName.TYPE1); + return dictionary; + } + /** * Gets the smallest box enclosing the character contours. It will return * null if the font has not the information or the character has no diff --git a/src/core/iTextSharp/text/pdf/PdfStamperImp.cs b/src/core/iTextSharp/text/pdf/PdfStamperImp.cs index dd913571d..299b920f8 100644 --- a/src/core/iTextSharp/text/pdf/PdfStamperImp.cs +++ b/src/core/iTextSharp/text/pdf/PdfStamperImp.cs @@ -54,6 +54,7 @@ source product. using iTextSharp.text.pdf.collection; using iTextSharp.text.xml.xmp; using iTextSharp.text.error_messages; +using iTextSharp.text.io; using iTextSharp.xmp; using iTextSharp.xmp.options; @@ -85,6 +86,10 @@ public class PdfStamperImp : PdfWriter { protected int initialXrefSize; protected PdfAction openAction; + //Hash map of standard fonts used in flattening of annotations to prevent fonts duplication + private Dictionary builtInAnnotationFonts = new Dictionary(); + private static Dictionary fromShortToFullAnnotationFontNames = new Dictionary(); + private double[] DEFAULT_MATRIX = { 1, 0, 0, 1, 0, 0 }; protected ICounter COUNTER = CounterFactory.GetCounter(typeof(PdfStamper)); @@ -92,11 +97,30 @@ protected override ICounter GetCounter() { return COUNTER; } + private ILogger logger; + /* Flag which defines if PdfLayer objects from existing pdf have been already read. * If no new layers were registered and user didn't fetched layers explicitly via getPdfLayers() method * then original layers are never read - they are simply copied to the new document with whole original catalog. */ private bool originalLayersAreRead = false; + static PdfStamperImp() { + fromShortToFullAnnotationFontNames["CoBO"] = BaseFont.COURIER_BOLDOBLIQUE; + fromShortToFullAnnotationFontNames["CoBo"] = BaseFont.COURIER_BOLD; + fromShortToFullAnnotationFontNames["CoOb"] = BaseFont.COURIER_OBLIQUE; + fromShortToFullAnnotationFontNames["Cour"] = BaseFont.COURIER; + fromShortToFullAnnotationFontNames["HeBO"] = BaseFont.HELVETICA_BOLDOBLIQUE; + fromShortToFullAnnotationFontNames["HeBo"] = BaseFont.HELVETICA_BOLD; + fromShortToFullAnnotationFontNames["HeOb"] = BaseFont.HELVETICA_OBLIQUE; + fromShortToFullAnnotationFontNames["Helv"] = BaseFont.HELVETICA; + fromShortToFullAnnotationFontNames["Symb"] = BaseFont.SYMBOL; + fromShortToFullAnnotationFontNames["TiBI"] = BaseFont.TIMES_BOLDITALIC; + fromShortToFullAnnotationFontNames["TiBo"] = BaseFont.TIMES_BOLD; + fromShortToFullAnnotationFontNames["TiIt"] = BaseFont.TIMES_ITALIC; + fromShortToFullAnnotationFontNames["TiRo"] = BaseFont.TIMES_ROMAN; + fromShortToFullAnnotationFontNames["ZaDb"] = BaseFont.ZAPFDINGBATS; + } + /** Creates new PdfStamperImp. * @param reader the read PDF * @param os the output destination @@ -107,6 +131,7 @@ protected override ICounter GetCounter() { * @throws IOException */ internal protected PdfStamperImp(PdfReader reader, Stream os, char pdfVersion, bool append) : base(new PdfDocument(), os) { + this.logger = LoggerFactory.GetLogger(typeof(PdfStamper)); if (!reader.IsOpenedWithFullPermissions) throw new BadPasswordException(MessageLocalization.GetComposedMessage("pdfreader.not.opened.with.owner.password")); if (reader.Tampered) @@ -1203,12 +1228,13 @@ private void FlattenAnnotations(bool flattenFreeTextAnnotations) { continue; PdfDictionary annDic = (PdfDictionary) annoto; + PdfObject subType = annDic.Get(PdfName.SUBTYPE); if (flattenFreeTextAnnotations) { - if (!(annDic.Get(PdfName.SUBTYPE)).Equals(PdfName.FREETEXT)) { + if (!PdfName.FREETEXT.Equals(subType)) { continue; } } else { - if ((annDic.Get(PdfName.SUBTYPE)).Equals(PdfName.WIDGET)) { + if (PdfName.WIDGET.Equals(subType)) { // skip widgets continue; } @@ -1235,26 +1261,95 @@ private void FlattenAnnotations(bool flattenFreeTextAnnotations) { ((PdfDictionary) objReal).Put(PdfName.SUBTYPE, PdfName.FORM); app = new PdfAppearance((PdfIndirectReference) obj); } else { - if (objReal.IsDictionary()) { - PdfName as_p = appDic.GetAsName(PdfName.AS); - if (as_p != null) { - PdfIndirectReference iref = (PdfIndirectReference) ((PdfDictionary) objReal).Get(as_p); - if (iref != null) { - app = new PdfAppearance(iref); - if (iref.IsIndirect()) { - objReal = PdfReader.GetPdfObject(iref); - ((PdfDictionary) objReal).Put(PdfName.SUBTYPE, PdfName.FORM); + if (objReal != null) { + if (objReal.IsDictionary()) { + PdfName as_p = appDic.GetAsName(PdfName.AS); + if (as_p != null) { + PdfIndirectReference iref = + (PdfIndirectReference) ((PdfDictionary) objReal).Get(as_p); + if (iref != null) { + app = new PdfAppearance(iref); + if (iref.IsIndirect()) { + objReal = PdfReader.GetPdfObject(iref); + ((PdfDictionary) objReal).Put(PdfName.SUBTYPE, PdfName.FORM); + } } } } + } else { + if ( PdfName.FREETEXT.Equals(subType) ) { + PdfString defaultAppearancePdfString = annDic.GetAsString(PdfName.DA); + if (defaultAppearancePdfString != null) { + PdfString freeTextContent = annDic.GetAsString(PdfName.CONTENTS); + String defaultAppearanceString = defaultAppearancePdfString.ToString(); + + //It is not stated in spec, but acrobat seems to support standard font names in DA + //So we need to check if the font is built-in and specify it explicitly. + PdfIndirectReference fontReference = null; + PdfName pdfFontName = null; + try { + IRandomAccessSource source = new RandomAccessSourceFactory().CreateSource(defaultAppearancePdfString.GetBytes()); + PdfContentParser ps = new PdfContentParser(new PRTokeniser(new RandomAccessFileOrArray(source))); + List operands = new List(); + while (ps.Parse(operands).Count > 0) { + PdfLiteral op = (PdfLiteral) operands[operands.Count - 1]; + if (op.ToString().Equals("Tf")) { + pdfFontName = (PdfName) operands[0]; + String fontName = pdfFontName.ToString().Substring(1); + String fullName; + if (!fromShortToFullAnnotationFontNames.TryGetValue(fontName, out fullName)) { + fullName = fontName; + } + if (!builtInAnnotationFonts.TryGetValue(fullName, out fontReference)) { + PdfDictionary dic = BaseFont.createBuiltInFontDictionary(fullName); + if (dic != null) { + fontReference = AddToBody(dic).IndirectReference; + builtInAnnotationFonts[fullName] = fontReference; + } + } + } + } + } catch (Exception any) { + logger.Warn(MessageLocalization.GetComposedMessage("error.resolving.freetext.font")); + break; + } + + app = new PdfAppearance(this); + // it is unclear from spec were referenced from DA font should be (since annotations doesn't have DR), so in case it not built-in + // quickly and naively flattening the freetext annotation + if (fontReference != null) { + app.PageResources.AddFont(pdfFontName, fontReference); + } + app.SaveState(); + app.BeginText(); + app.SetLiteral(defaultAppearanceString); + app.SetLiteral("(" + freeTextContent.ToString() + ") Tj\n"); + app.EndText(); + app.RestoreState(); + } else { + // The DA entry is required for free text annotations + // Not throwing an exception as we don't want to stop the flow, result is that this annotation won't be flattened. + this.logger.Warn(MessageLocalization.GetComposedMessage("freetext.annotation.doesnt.contain.da")); + } + } else { + this.logger.Warn(MessageLocalization.GetComposedMessage("annotation.type.not.supported.flattening")); + } } } if (app != null) { Rectangle rect = PdfReader.GetNormalizedRectangle(annDic.GetAsArray(PdfName.RECT)); - Rectangle bbox = PdfReader.GetNormalizedRectangle(objDict.GetAsArray(PdfName.BBOX)); + Rectangle bbox = null; + + if (objDict != null) { + bbox = PdfReader.GetNormalizedRectangle(objDict.GetAsArray(PdfName.BBOX)); + } else { + bbox = new Rectangle(0, STANDARD_ENCRYPTION_40, rect.Width, rect.Height); + app.BoundingBox = bbox; + } + PdfContentByte cb = GetOverContent(page); cb.SetLiteral("Q "); - if (objDict.GetAsArray(PdfName.MATRIX) != null && + if (objDict != null && objDict.GetAsArray(PdfName.MATRIX) != null && !Util.ArraysAreEqual(DEFAULT_MATRIX, objDict.GetAsArray(PdfName.MATRIX).AsDoubleArray())) { double[] matrix = objDict.GetAsArray(PdfName.MATRIX).AsDoubleArray(); diff --git a/src/extras/itextsharp.tests/iTextSharp/text/pdf/FreeTextFlatteningTest.cs b/src/extras/itextsharp.tests/iTextSharp/text/pdf/FreeTextFlatteningTest.cs new file mode 100644 index 000000000..7fa924996 --- /dev/null +++ b/src/extras/itextsharp.tests/iTextSharp/text/pdf/FreeTextFlatteningTest.cs @@ -0,0 +1,128 @@ +using System; +using System.IO; +using iTextSharp.testutils; +using iTextSharp.text.pdf; +using iTextSharp.text.pdf.parser; +using NUnit.Framework; + +namespace itextsharp.tests.iTextSharp.text.pdf { + [TestFixture] + public class FreeTextFlatteningTest { + private const String FOLDER = @"..\..\resources\text\pdf\FreeTextFlatteningTest\"; + private const String TARGET = @"FreeTextFlattening\"; + + [TestFixtureSetUp] + public static void setUp() { + Directory.CreateDirectory(TARGET); + } + + [Test] + public void FlattenCorrectlyTest() { + String outputFile = TARGET + "freetext-flattened.pdf"; + + FlattenFreeText(FOLDER + "freetext.pdf", outputFile); + CheckAnnotationSize(outputFile, 0); + + String errorMessage = new CompareTool().CompareByContent(outputFile, FOLDER + "flattened.pdf", TARGET, "diff"); + if ( errorMessage != null ) { + Assert.Fail(errorMessage); + } + } + + [Test] + public void CheckPageContentTest() { + CheckPageContent(FOLDER + "flattened.pdf"); + } + + [Test] + public void FlattenWithoutDA() { + String outputFile = TARGET + "freetext-flattened-no-da.pdf"; + + FlattenFreeText(FOLDER + "freetext-no-da.pdf", outputFile); + CheckAnnotationSize(outputFile, 1); + } + + [Test] + public void FlattenAndCheckCourier() { + String inputFile = FOLDER + "freetext-courier.pdf"; + String outputFile = TARGET + "freetext-courier-flattened.pdf"; + + FlattenFreeText(inputFile, outputFile); + CheckPageContent(outputFile); + } + + [Test] + public void FlattenAndCheckShortFontName() { + String inputFile = FOLDER + "freetext-times-short.pdf"; + String outputFile = TARGET + "freetext-times-short-flattened.pdf"; + + FlattenFreeText(inputFile, outputFile); + CheckPageContent(outputFile); + + String errorMessage = new CompareTool().CompareByContent(outputFile, FOLDER + "cmp_freetext-times-short-flattened.pdf", TARGET, "diff_short"); + if ( errorMessage != null ) { + Assert.Fail(errorMessage); + } + } + + private void CheckAnnotationSize(String path, int expectedAnnotationsSize) { + FileStream fin = File.OpenRead(path); + CheckAnnotationSize(fin, expectedAnnotationsSize); + fin.Close(); + } + + private void CheckAnnotationSize(Stream inputStream, int expectedAnnotationsSize) { + PdfReader reader = new PdfReader(inputStream); + PdfDictionary pageDictionary = reader.GetPageN(1); + if ( pageDictionary.Contains(PdfName.ANNOTS )) { + PdfArray annotations = pageDictionary.GetAsArray(PdfName.ANNOTS); + Assert.True(annotations.Size == expectedAnnotationsSize); + } + } + + private void FlattenFreeText(String inputPath, String outputPath) { + FileStream fin = File.OpenRead(inputPath); + FileStream fout = File.Create(outputPath); + FlattenFreeText(fin, fout); + fin.Close(); + fout.Close(); + } + + private void FlattenFreeText(Stream inputStream, Stream outputStream) { + PdfReader reader = new PdfReader(inputStream); + PdfStamper stamper = new PdfStamper(reader, outputStream); + + stamper.FormFlattening = true; + stamper.FreeTextFlattening = true; + stamper.AnnotationFlattening = true; + + stamper.Close(); + } + + private void CheckPageContent(String path) { + PdfReader pdfReader = new PdfReader(path); + PdfDictionary pageDic = pdfReader.GetPageN(1); + + IRenderListener dummy = new DummyRenderListner(); + PdfContentStreamProcessor processor = new PdfContentStreamProcessor(dummy); + + PdfDictionary resourcesDic = pageDic.GetAsDict(PdfName.RESOURCES); + processor.ProcessContent(ContentByteUtils.GetContentBytesForPage(pdfReader, 1), resourcesDic); + pdfReader.Close(); + } + + private class DummyRenderListner : IRenderListener { + public void BeginTextBlock() { + } + + public void RenderText(TextRenderInfo renderInfo) { + } + + public void EndTextBlock() { + } + + public void RenderImage(ImageRenderInfo renderInfo) { + } + } + } +} \ No newline at end of file diff --git a/src/extras/itextsharp.tests/itextsharp.tests(VS2010).csproj b/src/extras/itextsharp.tests/itextsharp.tests(VS2010).csproj index 514adc855..f57006116 100644 --- a/src/extras/itextsharp.tests/itextsharp.tests(VS2010).csproj +++ b/src/extras/itextsharp.tests/itextsharp.tests(VS2010).csproj @@ -91,6 +91,7 @@ + diff --git a/src/extras/itextsharp.tests/itextsharp.tests.csproj b/src/extras/itextsharp.tests/itextsharp.tests.csproj index 1c6660d51..a0826de8f 100644 --- a/src/extras/itextsharp.tests/itextsharp.tests.csproj +++ b/src/extras/itextsharp.tests/itextsharp.tests.csproj @@ -76,6 +76,7 @@ + diff --git a/src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/cmp_freetext-times-short-flattened.pdf b/src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/cmp_freetext-times-short-flattened.pdf new file mode 100644 index 0000000000000000000000000000000000000000..de5a4c423d66f1ac2cf4d37c9f4d427867293000 GIT binary patch literal 16844 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 literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/flattened.pdf b/src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/flattened.pdf new file mode 100644 index 0000000000000000000000000000000000000000..18db54b3be2b193e52f47a0125d4d2146aa18ad9 GIT binary patch literal 24972 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

Dz>*pCqd+(_)-!;oqK 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 U|9|fvilQ$AWe^a6>8mmP2U<2ai2wiq literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/freetext-courier.pdf b/src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/freetext-courier.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b6e6ffd97565dd2bee30c5f195a9aa947507d49b GIT binary patch literal 16229 zcmaKT1ymec)-DzZ?rseP2tk?#8cC4g8r%sGq;Yq5cXtWy4#C|exNC3^?)J!?JO9i- z^WN)Ki>AKXXP+%qwa#~XZ)#Z~5k?RbD-!j_=GYVx8-N*LscVA7%?%VWHnW4+07cAn z>>xrAJxhHEPzqvUXlDcfv4DAbZS8CzI_5}D(BP0}q^{36LJw}eXRRe$Ri?8&%2id! zUn`lF`9JwLyr65T=!bNVq(w(WhZI}+xqmOyoH%c@T^Du^i=gnZ{6fO{cC;Y-?I&<* z6Mse=C9my(FTH{8f^I%uWU`t~FZY+w?TRv&*wNMU7ZWmO;yR0g$U52Eh84h&;sB(%wc7VhaHO)UGlNtnFm|4s-yhy}pG^_r0X3AOFN6#ZMM1ue}i zZ4|6@^dPUdtDr3i!0|^JFE3E!HQTR{q9O}`^KawgLS(f+qre=h%-7bv7Esw6B!uV`!zv6Y56 z%3GT2SjZ}TQG9)%Y;5fWjdW}PtgL^TC>+;zLeWym!uZc~_?o!Cr2j(ynp4GC-_FQZgZ)(v8yg#dm6Hp=!odk(0W$+Q zSXcmHX6C=}Ki?d$`0Mw-dH=_yzn$R!^T=Dg-giJDh=Z{nL|#H* zFN5?1M@5ANyuh(mj@EH3N&xjGkqaVV@{<@YoLsQDmn=+xAB}_18xb5#I%R#u4rtLp zNr+nFjK^nGVsM}%2U7E+QM%A+=AhW`&<*0?4u7{mz^rK z7h9Gp&hNv{uUOc_JvT4}7|>{{&>iar25_RcLNL>htvt!eg<^d**T0#(^qZF$+GS~M zXJ0&{DLDk+!9yVl&#-fQ(BN;w#3|JD60*F&4PD05u>^ov@UjrIODQ*dD$K46cIcZ2 zlM-pRvWV1130v4Q!kT4QQ>fQ-!r-#LCQ<(~%yC12v?_|HKyBZ=pPIT&lY(N#N!A|O zrO7f2W)a3A{2hD_1NAnphpWW~E%c7dC5S%R zEQ3ERLv79Ms1(?W2X*~UJ(aYkEnW$#)*Sxx_Ijzz2>|N+4OH!F+67sFnO02C1_~{5 z=+TjxEp(d4ANCRyxMrF|zwvj9@&%5{J$X`P&)}{C<6?U#s zBK2*kvl$3;*8I#mVX&eQ?7kzhc{4G?FnmKL@nW@tT?Ih-d5K}bCcrX@!5DvrtLEpO zheF~9%|ko*npifZT!~f6azP#zc>mn z7d=^E7K2#*t+OD%EGG_ZuV8Q#M$G5CahgJc55C1&g0ei9RCYv7Z#8}IzaxwT*x;X_ z-Tg3=V5W3X=b?UhEmVFYc`MpA{7c9QHw^*5V`*KY0go50z6*by_!Nr4U%M;z?dO5F zuoEJxZ;8)@1fo>mL1R*wMpNd(6bYw9q2&@chKog8Z^6O`X6Ymm;Pnx12C9Xv>niKa z>Pj%rBup4!q=FF+(!z#{+4|=EVsjeGE8?i{;oO{0N(p5#w^S6kT&`8JPhzGpG zmw!i>TiqoG2SutSTaSQ z_bVr<^C*Y}rt+L88*0DQeq4ksGLwpO&bKEwNV^YrVA4#ov9f_}~^#8E+5|9UoaNrDQpSGm~Cy zUMw@sY(itAW3piKFvC<5K2|X1m@$^F&GxeO7uVPj!*tQqG&)}6UvoUR(@Q-IKi8{Qo>WF zS6HKJm?K>?ime&Lq`|>o|FvGhQ9wo#s0!4skUPoZmCG#4%xxEK*YF(b7zZqV3*}Gk zEX)eYYS+oo$ywKiNX^Qn(h?}v5B8SkbBO=WPpc#L@X;1`AY=~cyVO=GoV zD5g6`G;Af{=Kk!;Wi_=@k=gHD-P{9iInJqf^vFD+s-fw4D|p%r#|#RLhYaLubZT!@ z&1(-T@4FX!QcN}V-1`GeHuY*o^H+B2%8D4*9NLfFKc#3^uHZFGH;-MTT~j{LJb(~* z0-XX|(QfAL9NstkxzAu8?yWbBo`r29(7MuAO^Fw*rK^q7jiQd`Afw=);!iUY*i2Zj zH;~vwGwCyhX**eEO)D+MZ>k^Ok9?U6-*xCQ?^&7WS$JxAphuTPj}{H>k1L4XB^pE4 z3QDX{iB_qokGau3F*zyV{m2{48_tW}=FnE+4!qTQf_ZYdU%8k&-MycCkb&cbD@EKx z%7qhwQ%2xLW|EEYL1IUpJujwgxdC^9J8D?B6mMc7q1QCKojl|ij$OC(G^43N)* zM^23E`p&_o=w@<7GH~-~18MU&6YJN6nxjRVy6vLjvGOSGPBrTfWW?m8YZx!V*j+{2 zQstN0jgH%JbFs~V4>7xa^t<6_nzxY0Xt+ebYQG7g#2(FHJ@ImJT=7j98UDIo_SM?w z-dja+QE@qRtVI(=KaKrrZ)>LnsC7ar=`~q-Xj_5ZY&pz=O+&^rzm>4FKTkwUy|+~} zXikcFmbwxPdzVV>tA<=-QoU*@3dtOj8^PSU+)CN97$zOO7<}*m8-N|{4ci=^10FlU zzfIA~{AbI*E;UL!YIZiQU$q@Zngh(m7EXsnhQlGmYZf7^({kVCD%-vp)tv0~2{a1G zt+z6cYM`0*n&FxquNc&nnJgtzYE4|}4sV2P$WSlG9ImOktK6-OT>Blj=3VDKIR0{Y z>$tqK-*lmxtgEKAFkb#kvuu0hJo~)9S>>orSx3YA8@h3%eq=36VRfrSg^B1)!9nhU zH&JBDPV0ed{c-wY|I%Fhnz`o`bU17;0xua3NsH&ejjU-Izj?3D@_K3a*kSfTQ@f$3 zwx`gs*jeA?N{&U3;-;l?WjcDC3-tM)g$CmXepIpJZK~axOfRo2Umf;Ntk61Zv?*F@eRxz# zEHNzS(){F}?%sMF@Dx5v)|`=`edJ-hUw2~Ox^GqUl(1PA(e}oD_g?b>xO&~>z8&$B zP7E6gfB&1Q&GkiVnP=a9^=Sg32wjVB#D(+8=t=KrGn*Dk=0ip?U)j^l?VLeT>*dk+ zxo=}NL57h54T8Xz_`3?3?l)saWAq}mA_t;nqGMrqVJj|Gm%XRMVTn_l{_S+nKW^eD zN-{khA6gA{2YXIUCk~VOBvuRCxbA1K&3EwR!iFWuDzeK9`r8zqxX+w zZe`*#!}%QD5FgK-Xv__E)^7YR9{!ud{k6LNdqMjDCZQ~x|Gw_jjQ(lT&5Yr9;u6A> zANXzI&a{I-LZTz^S+*Yio1`gKA%ub+q1|0nB1Hh*_SOMBeDvYd%vc@RyV{YjC;;}V z&t&Yv?kuEevr{!1KQ|nSLjnx`A+68MF-+oAYR)I8hLn8-o4|GJuPozoa7!_}+G1dN z^tq%$A@;-1-bPEZ1^AfkVlmrDYhanHxoAFv+FYH;njZvpZY^}I7es+catDq{VH+z~ zI@0)5`9807=%NwJ?5chC%w+F=X_&HN=slg|l0=*^v|sM>38jVCQc&QR9#V{$>L|>c z&tgO7=VV?OE$&CWFcja;$-FT{@&*|zB{kD+o@qj&H;qpUWbsd|{q0`tzBe>fxxG+w zG&UGbq7Q8cYyV%u`-f`$bG>h?_lNOva)E$?I#yy3V?!gmKh*1W`TvhAj4UAbKU)BX zugv)`&LZ#+*31ZEdu0-=0Cx6Qn)Zi+ye1050s#HR!2SZHbu>ck9Am+;dWZ8cd|BEC6RsS{+%*FOE?)DdD`=>jyfLFWz5UGFi z{r8FxTRXsCTLFJ@YJeET20{lE;(z}tVsB#%u>r8K0Tc}Y%uHOIug1R;;#WGv1Y%|X}_o6Y~)X8AYppKSC0zxM(Hv9kQV5d#9eTEWWxZ}cnA71>R3rtW6- zA&oV1^jt1V)inAWwNi<^ zM(2;hdZT2x%1)DTEp^j)fr{DUdL;9S;`jvh%WLI9w-PpjrpMUq=JPEfssk99V%s5y_Xt7H$k!C9O}fK0!ayu%a*95VaxztS&HSSki6FM7 z`$gi4(Kz2oOe`n!pT*Dd$t-s`cbDM8fw+CPt!VI^c@u>KnlfcYi^Ee00}rQ9^-0q+ zarI{GT2`rB<4cng;q!e3MI^eJYJA?5g#Za7>>-E6(D>E!LAw~fGzL;}yd8GFEr>D} zsTz*;#rM{bGAm(<`iJZ8-BkVc#{)hV+$6iclPAz=TEw3CeOQ*f34+P&oiphoVRtN} ze$i-DS)-qAk4qc_9xvxRDMT<^lRs;&j8o(h?kY_I6lJs=6|5-~3X}|N?xo-9gCHa0 z%p&Lcydn=dJ!1*)5TagN*Fk~*T1~$gB4XCYbW(qX!YWZJD{ZJ$W;8$A7rF}GnIx(f z;b)|8T^e0<@+rplg?1)ajUvP!3awbJWhDgkGf!#6p$R7ZIM9ScN^W?mTHx-1{`dnD ztqaI{?1tcvZd$h>>*%OcKdX0=Ts8y0OKHN1{Vl)A&_rdxrNO7c2I;q+zFk0@N9BBr z5e#emRu)=yz|;@63wp$sZ}C%vPUi~A;TJeKV6!?EVyM> zS~C#D5c__o_mc2}IwJda^X>3Ae=s1gtE{W;9z`TtC8z(8g==;3M^$BUdyaYFIdbuh zj%2;gVZF}okJkeelUoCLZuavu4q2nK2ABKKpJsVFvmPhnMn$T4Xr#{_ZI(T47xy@m zh#lfypW6cL;3^{%{SK=lAxSgR>nT-}7=GqgS$@hZr`YQzW_2`Q-3tM-tq(OZT!F|N zGl3)5X1{;6l-R8*1&%0dH6KI)qXs+c$|smg0ou^aF@bC_N$^JSL0utLV#0gk>nt|u z!A95P4nH*KnJf}}h71l|L<(ur$2%~r5w~;6P#{^WF6wiJWX$NvZx%|E=zpd(PBE0> z|3GejL-9`WEozrQmP%CL6t-SpGI*f2F(4UCmEfKb2kEkzq|8IX4u}ny3b2J22PqP< z2^M6HF@Gaq2_v{B9H9!pq&loYQ4L`5F_UA6$NM>H94#QyRB^_x!<8T&HRJ`|@%D2M z*-f?&Rzl3ZIG_7~02vgP;R3@w&+Vn@+!_SQTLv-n0yd6+p3aE+i z@t3TgZPQ@hL(fEH9QkFDe>(7n#`~@>I2aIv`jvK}ASo+M5!wz0uJtz?vl!}RXzdU~ zD|(~1)jb!~)RJ`yJjQ&1y62z};g|RccZgkXn8_7t_>4LxR^sqX$+d{9r0Y%S;mp;< zRo>xEDDsT|gnu6LO(?2~U~N{dPP=NBvJkxl{dFh>7zZ^z;5xK<3H=A(lt;Gak-7F- zTdQVacgZIe7Q}rKkYag=pdk*^C@m z`DEvPe28pD{aKaHSjgA)lC4yY$UKnP9GTc063%{^Ak)>;x9no_i|(l=Lo2_)nh|LB zP*Hh&qO-Kt_2VSK+*fBQv8zRs!fvkb{BpWW!KEUDX?#leCsy?nx4s5Z^^Ct+IQu=I zmt=s12lb#Rv*5D3JHh|~^y23smNG$3S^`84XU#Tb<56BCAS#H}yRwbeBq;I3Sm5hF zI6>nPehEDgC3;+A| zGt=l}ve0uxEmmbd>gm1Q5^+E4Ror(&w^EBWRHK4pbJ^S+Qw=C*54 zbQ*O1Z7)(r$6ZqP5jLIA0dRSk8T7)dmJ11B`vmkd1|czD9AanU^jMNnXeN53dg3@Tc*}YlU=t0a zoDIAd@`a|Y3G<@`pq(WMz@R|aV6okj2W@Tp>^TJQ!2RzJ&W@Bqn`U@ zd6%Q_BQ<@^NBBW|8sISf_OR09x zA#~#Do75SMsH^aEW`@~ycb;PRmqTqk^M-sUhVPjz0rr+l*}tdJVFwk#qLbeG8YaIf zw}*b`m_?OY8uJdpJ0%?PN?7XpGOC=qxG313V-eHo!hWN=;@&h16vH&6626QYoh`qC z2Qiu$lQ9Z(C1>PZaAEiCa-|#BjlvOQMzbj;%%8l1xgu4j5!)mPiHyq zRARN(2#m53h3mF(#^~P|Y2u*dOngjt`^8#a92+_LZXHEbJdWndx{y~oKXeiWJr^+C zE%ocJi~acpPxM7XeN1KQ1)9?G%D}=+mpQ*8h4m=8W*+Ex$Wxz$P+GZom ziB3vb+OG>we#-6jdlkZ624dJNe%i?7NP<-Td|J!3gs}?^(chxNy+*96epcoG?xU=R zS!MD!)RMM={_q{X@+~0RQ}CYUSEN@vtdI@;WHa;{0?7tgpiy>pLvv|FR4Thar-xpV zytuS10~FEnav;@aq()=e$Phcnq3p^}Zdy2KY}av?za^gA4%Y(hM1Csc^-d9a#$`8& z^@W-vCL9#9LiyfoW3X?Yh6q;R&cSk#Ak^DCQO+CdT6s+?u7*#5!-8fWsRcv-+vFj~ zxd8#Jc@3Ym7hS?{xY}5Z?-&#DnNgP~(1uVa(oABWAIhi>w!r&S0!&HdV=xqQHoyf* z$}N&I%CTrf)$_ph1G^a4fv+|`B(Iw_RPLC~MP1!aIMDFfVi{nA2%zc1kiY4i3s z_vd8qnVeHaCUf-3DjkEcSMMCozxYkeMQP{XF^c;!&_<4zUGm&2yXz-%ej$;rpsE?b zJSSd+FZEr1-)g`MbMh;7>wzs(I#(v|MaUzh#tzrz{zD@vD;X8GS@HP0V=5#%8g0tN zXb;(T0j+|@T8Z&V>V2+#ootc}4aIy>k&$9h}u%d(Xi$e$^?k%qWnJc?|p zDbf=i3SQ!*W9b?^7knMh82UJ6=sSHe{U~)}32->XXYegLkyK(%qGGq^lKM5~Zz2cy z_Hek{4LNF#_w)8er!4iDXl~J12e$PI)ntA|9S+`{DrZvl53KFcj-ZTUZ;a)p=GyKz zSJwCHqwTa|EQgNYFty}?SR!_nN+-o}OLgH}!?gHSrdBSsK1ypBRItJ#Zx*^~iy;D$ z+OZ2H)I(s)6gBbfmw1gib7Z_&4b{~%5TqPU6 z%rkm?aCbky+{&co6Gz9U$~9xU)?vM)a9FRH_T`G3Fx?Zm7aei)BgH%NVJH+R8-LG$ z7t?jz#nT1!(+(!?f!!dUbSu*S`0Xh3@qDXd%6z{<2l%W0n-=vu>HO%A17kB$`SwX` zP#LKD^o{-~v7ab_j?wO?j{SqITW`*Z&uQ+UEWO5=cUtgrv=NG$!&ie1(cQy%B|Sy7 zzqc2VUj*W=(?O=xU`=()%)rg4V?0OiT;p5maggXSJki&kF;w^~x+Ow&)rL ze<3KgfxWf6MSZT}UQRAALM_&kSR56=xvCDEj;x}`d;C3dbHA%5j;VV}CUFYv^ka(R zUde_2iRcObDdBlJvhKLxMIy7~Lht@v#@e{TCFwoyQxtztGL&&dHI{NGmZ~v!>M&k4 z{b{Me;TcLLsu}X?IMorxry(s|8~^vE=IzYyk1##nanrU?J|+(IG^kR{hD!F#Y?N&v zp3QBTZqUk$nMBWup-YSrJ_Z;EFm;0i9#9cbPl$NIL}BSxD)mI#p!_d#s-?SCzp0!G zGM_%6(C&%Q$+UQ<`)E1&LmML;cSR7+>#nP>ORulxmF#ozXIYNx=#*75J-KJaKMAVJ zBvu+4MPtMmY<$>7i^)frKUr|Trk(hLUvpzrbo=FA?}wI=ZiAlJ7k4$g(0YlJuBj)+ zms^9;oZQX#?;tFp^RH%hClnYiTAH# z^L^kJSW3pVr0+GWMYFiErjXLcv=NILi^gN+IM&})O+1ZT&y@|W+HjxHiGxEF{rdG|0xh6xl3yfZRvNtq*Bjo;|m` z@{xCpROrFhBkJA|GNI5DsZlDTjEY!%I;th+-G%WBX=^fulh%FH%C0)joJDJzw$HQq zCsbdY9942HznoCE?gvh)PctZx4|FCUi)4OTn3Nf)yw#W=4Y(xTU;C9%hr?0f`ppop!$ni{*~dMVRw^oGaCqLR zNr|8X(LUsBhQ~Y7Y%cvT_v)&v1p^*Aa7(O0K9e2;znRWVl!NaQFwx6CAIDE>3Dk0F zhSmivXcuR`mRsalxE$A}925_Q6m6f)$5l_pY#0eKBGG4k`#yd`f4bv(Zlfu^pi{5L z$Yl^a0SJZ>*mnwDTr9{9d63tw`e>=e1uS_g+bcpXPk7PNAK8eo>w$gf9 zDi?|a&%#lhc zn&T#JdrnC=S=3hXYswW>uC*7^vF;~CC5H&R8-5l&rj9!C(P!Jy4XD`f4n0FH7{KKS=y&5iHo9j!t9#!a+B{=b+*v{MkcupNF>s2@LH1!h z&Ic$zw3$=QT2q$eAc|MD$QxPOm0)P}F~7#P^f*NFLE?^N=I$+#{1DO`)_vuwd_rzD zurEqQlJ{{xP<-M;9oC7S`Oxw-2g8_9YZ&!p98SCvsIj9QJ62~^JEYWm$Q=?B!f;0+OKZs16_WB1OR}D-mIoics zv*}l=VL35W&DC@|di_SvFeBWcYE|+Asjs;W&76=u%5C`zUR)bD0z*!U-*H8^lYD_k zgXU_itin7m2)2-0R&RUgujP}%$7EQaV&OiS@Rs@)dWA;dIAc1jD|4MD+Dgf zKQjj+J;r92nG7$sIm?1aK=Dh{jJJdze-T_DyQoC1(I;viMdCM=wE#gT{6=vYZq-RT4Qtt35{hkG4T-T zVnkuOe#rGfr0K!V=gU0@9o0daV@LPO^DFU0Sx7A$Z&SnIOh2ZjA~3amk}kj|sJhLO zrUDI#7;NdUB8o;>@xB$lS89C|rTsj=t*faU-zz{g+NayETa^(|Q!e!8JR_q9=PtD> zIAjxBDgIf`m$$;p^=*}6$Xhogq8^z{Ap;?7a-qMY5=W80y(>qo3;gg1o3o0=Op zJs`PXf`nDIXP3@p^9HPT+uQy=sIm|sc*!f>B}dn?<3(e;KUK{H`Xe&ABO0$s z4)=qV4sCm-BK17fy-Vhn6vjpG&$V!KVe*)x(NB&1gE2Cdq^Eq0^JQbp3_k+NJ}{=| zs{m72>{Hfczx^I<9hypQA9(=sQsIuk=Pc;QFJGX3S|AM|oz=Pf(Q&f?eG`|R&1v(L3K*CsKt14ZHL zSRD;JGnUDdJfm1GKI%$ubB{guNNbGkZY4_-(Sb79s`)c6T8TUJ^DrpQu`k5(`hTiK z9ZEE~tSqg#t`sb1FCBZT0>L-lDB>D@GKl@`IS1)2bd zh4OiSTL+U}R*)X>_)BL#yCups6?=n@V84H-%bmd3H}vWn9$(NM!|DV)lYABGsL&fb zGqcvz>vwv~BWWl5gv(Lm@g{vJEc1e?P3XjLA!f{64HT~X!tB4eKT3oV{LH2)Rd?=! zXV$r_nuNn=)rZfxW2N>CNMPL7m*65yQ3Dz~*mg1EzeBLKyw7e`$x~+k&@;ae-;=ZE6N_N;8)aL_J<3D4Rg_}zRP~~!e2z7-N{$*s zX{a2qUTb<7mCXLuJs*p{0*LtOG=7J<0Gg{p$+jtH$moN$pRkHlHiyKeda%Rup-124(V!AkxSHJ8j@w*K|(MX{x8Sf!Lv6%Y#g6f+DbZVtp>1S?Y8p za3ieEicfZYV3q~yO`J23+NzGI@$<^D*A>>=1N=`Lq6*aDNovPHzX+_~Mp%E;qg zD}|a|NY_^HcO8!shZ6r*LL7of?~GL-2v!ndT|`tm#qDUm%lWM6#SRu^sTy22F7k0F21Eo$m%GjgUKw) zO$u;DB|=OKzEl*ACIQ*8nA)C)W~n6#Z_4pAS6gluD?hE_q2cp3v_Onswluc4(cK^} zqTvb-YW}{l?F|npZ?;(_hVw@?&sxo0eYki(-b8!?%G7=Zv#?g#oj$t-t{@X9Bt8?D z;Ac{MxKNmOXG8ydLyR}x;9afSx*S{CWLp$hlGEs5v2N2p^};!Fj2Cqg*yswsm1eMQ zZo`=0&>c$~q2Q-7{h262o71^v;|OH&{nXV~;F)V=diPj?pO=WJiQDDinIyvTfe9rq z3)zyx7YAzM+-b(kU!BC`Kr2;rcUR7x6E!=i>UG}&G)kG=Fif$p737EbEPN6=hGWZd zO80Wnzns0j1CL}c+4q#KDs>}7#FTclpBxoA-0xzQyU*Hh+M8%WOfzou<#JN1j|j#! z%@rxbns1X3=v3d)!13Afeox>~K%=5=?mAk9#c5>~tKygS>(9$D+u|9X2Mm#sXW^Mt6S%2b+2V5pVLI$9=9fTV>u*RzgsRKPze_?73RhsH`C`OyZ*-@{i=q z314ED?RGGlsst-MVOWGYg%MDbhhO}-dA{iqQlHOW}y*-o`59=;gv zF{IVDXg$r@I;x)BrZ;g>sRZkcEjss>H0+jiJ+1^fbqRJUj>q7&Q=i)3X`H{-yN9+= zTL!v${wBLYe#VEX7@(<`ipPJ8B*L+>-pn%~@g*QC(=RlPqMfmHClFa6&!IUSH*O=+ zTgv|mSu?IdKXIej&X{QsoZ)eZ$mCXjC)AUehXO-8mSB11clxwJ@S5+Z$_9L9Z@i8!9olPRbFl1 zyBS3U4zd8X-9pUww{g zq?4`EEBICAR43)SCC;ukB*%EKkG6JR=G(S3)p_npY=_xJ4!el`P3!5;_D;8Cv@_fu z3Mv?Yxn;KwvY%67-TE~!OiBEK8vtm7pC&ds88aO!CNr-`qGfy|vhG!95qCv1fMmkP zIj^uL_)acXID+!gtYaeUkf8gp7w7uWaWb zU1Oz)!rI%CVYV4fB&h)P$2 zEr?tdi~&B>qOZ|9x8>;h_^aWUQhlDp*?!B#IV5NH*W*MKC;1JN3^qNl!^W8M-5TOp z5(su}Fq4wkjT7&zK6B<|@Z^q9#V>@q2DuB9D;@r;oGU044{uipwO3j+LjY#FKsJ&v zY3?n<91Z<65MZrwjw=tKSl4)J1P;}YqmECgnnl@os@qx^q@r?cFYC7t+WQ*TIND|* z_EV!Nl7#IDEF_=8Vko5%*I9`sHMijyB1GUlnRUvs@U#zjVI!b1Mc20l7Zg!Fna{k2k0XiC;Y)kKO#ILVtAp1!%+)m(VfBssDTJ&D=58DN(G5{? zT?YN?b6vr@s`6fhwX^NMORKfS9b5J}0J!!;QP;mQv{!hNvRhZLzP)+8L4A=DH9G55 z=VdG|cF6erhkkjtV=eV+d6!n**pf;^Z*!K_yuIP?Alse?<|pV+g=AfG9lPOU_$`JX z6>i&XGF(v2yiJQtRg4l@ax)adrTuyRjbxzxCJXw-pmY>Ul<5MEwVmFNh^eB{ua7co z&xtu{bK+*a%|yvW%S2x4QbCaJBy?ZJ1`}7c%whDMNu{n!e2Y#vm876Y3tGYGKvIjW zeK-}jh4a3FNy*U!7ZP{ga#zB}pY*$D8ne>mKL>-77KD$n#KDEn<>Hj5TAC7p-% z#ty<;X%rp)%Q}tr3#Pn4$H&4Cy!3mug$GCR+D(sH>BGR1RFMkqbIWO~1F*^3iriPZ zqg5;q4qQuvAH*o)IxDe2Gqj}+13=^3M1w`b?@_9f}Gt$N=R=35>azG zZX(0m*V1SEVZ167yWJGg)=FNF3XV!%X?$ITn$fiWd{J)e=qW42U{##vIgFqs>*!A5 z85DR0v?3=~2a<&GcrmsCL%xAq=6<~<;WQ^!c#2jW2qV}4#-cOMm#_AEk!r&2GG%{K z;L9>a7S}ST{EEDMFYS4Z%rt2l$x29*RKBk8jXDl&g>0Pe$hF{#CG>gK?|Lht8;!5! zF&m|8UEwAuh-M~X#L8bwtQ4l95Oz3Ku~01yEEG(P#mO(l=+>)*i-pn*ijaRQ?)dM} z#f-%@Gw(6VbtC&uV9h8B5QpYJBIpGd=(^g!>0UTeAxvnm_D_Xd{+Gt&p+&=waiyU{v zbeae+X7md;Kk0q~kRN8FzMF!M@-%sqR?idYI7K#<+JCtNdIWtOg{*3mqM77Y4kS0v ze$+IS_0UE>o3)oJU|khWS2*b|x>@&YYfYVLA1Zz3N!%Aqj+q(bU_(9;oOl@6qdyTn z!%3^z=SG5rQUL=kHWUykH1=!H9lw0FITuDY+2bZ?Oyk#; zi_XX$FgQv#|?Y-C{uA ziA28cHYsILPm8RtgS0c78I4|vZ#k7zVr~JH|x`Rf+iZk{km*H zG1eBQN_iZ7w8@z#vFXuPc>)M=ab4etO~9g>3)8ClA`nv2Ldlt`k6OF?s*421mgx3& z4wYFE(P$zcx6o#xV;_Vv4An)o9c|JWKjC;dH9Mx2w=m*0AGsaH#B+|prmqy;(2+ILhyF z)&Xk^$1`R9W7|+ZGS!pt^y?!_M?0z&U)#Vpww>ul^GTV(|w9iNjDwo?DrgZhz{K@GK8f6&BUQn?60 zT*<|RgNxg$XLTNvYv>3&UQ@r0&a_O4=5&GHW<$H1oo5wd5 zr6rFLDouDC=mvm60n5J2?(J;qb)DDxox;NeKaB`Im#(tD zJnZLUBy_%#yIF#!V!N-IpOx}GMSF5Hk7!oplk7@#&O2_`O#~~>_h_5@Vdv<++rnRl zcuAw|A#aa->K75wyjNkAFjj93lnb ze}DnY;wkC?YKu&i2IKmMzA3RjQ;FDzx8*bl+i@Oo-DLz>_XsJ_9CRQAw&r8suDxAG zKTVv0qf`)pq(j^xu#gSe1u?Z^DFDQVuzT{f6B%*&PwV3G}R@U_F zy+6EfUv4ba15vynizx^h{CAzTlMTcGi5URmM0#zP{rmH$P?!}AFaZ1$W94|Q#{TmG zSo{yh!u(nZ{2v(mYqRZtV$6Tqj{j5cwe#~ou|IX%|Ale=_Z*z8uWhCOTOWv-<-g=u zIavS8W;SNd*Us7hJ(i8-zinY-<9aQ9{$Fw+mj7D}SXutlw^zB>LhJt=`&y6vFU-zH z=d}vm=1=pwxDY^to1ImM1H#6_tPe6^=G4bW*V`W@UmxWtqf~Dg0SHf3ZITJ_UiCg7)Vm z$SgLuKO_*&Y_h4GwrT!Gvr-$YRVn=wtXh-WU(1Ky?)Aq^!Ayw^<1qm?kIdrx??S@i z@GwXy%r63elEs`5=g$=S&z=O3*z_>F%3_7&njIVr0}^Z+s84vANvksW^V|-VGB`Tg zM`coadX4;B?>!=zY*v31^o|STyW&(ZwoI*paaC4xf<>XS`lCBb*fI-5=a1=p08Az` zR42Uiforxw*=xD1AQm)a* z>4jNc?o%~$FupDE+^34&_51aA&I(W;j$0aBI zUJ_H&RB3%maIIN4Zh@IGDzfLbqHR5=VKyBH^0ES=trwSu#L8>sg+o&}N-XE5Gg4lZ zmbf#o)$Q%jje(CmWV*O9Q~9XJ${AyZcn1AXIsP1e&w&1Ad}f2$!i$qBR31yTBK#vf zgAyGLgUm<4Q`u(0ATxn^%pnFwgj5Al@%c#q$X`_d9$SwlJS=BnJtZ-JDcZxW^EHfu z!+|m@WMK%8a{f)>;q<30yac(;qkg_6LDgvoM6JbY!)as|e-sMlsqK*fh8L3r1Xc)N zYgAd8DhJnWl$qE(2LG2LJ4rkrc$HOQ(Z)fZ<&W@q8)RE%fl2F85u}^W7j)U5?9nKg zNUOAIth2%)S~ME%kBY?lBO@aHkr=pt1QO|wfx|oBd%h!}_t5v>EUU9mfA#|K7=#Hj z2N+&u*D6$85(xY6tpo{K7mVqT`kSe2S?}QUYKN|`COOV zenIlM_SKQQwd%&CyT`k*e=PB?vWdMGq4ULqKfF6Vd*GleXTNqG-ruXQ*z45O*jR7U zH+_yisUfH=3 z$PVwz&Dp`oiv7kotK*LCu<*%S-@+Ly6A2bd{;s-F__I-+gs67%Jg z%duZKUir`_oK`q&#^UjmAt)8$MPX4P4S)4&@4h+J%J#4QJD#7yYX7)&CUo=GQ^P(j zdoAF+&gzxCN>jdU`eJd~6s1q{!rM<54i69NF=D|M{a{VP+%8GWuXUVP`5o^Wv$Xa19@qWR-P^sAk_T+)dQ;Zt zUYEm*YWGbW)ss|p9cUu!ZD9i$DThK zl-5h?tzXh_+9gh2|{Y$+873@9#Q0TOPcB-96w0WmF(Db1-H3 zgkjtX!5a@Q=2LV5F@aHm72`55O;wUC!zDB4u=Y;a>OXg4zl<5|tVw}`S=3Pku$GCX z9-HZ!>B8;c_StE=B`)4@e2bJ-fls0)!AO~?oX(n|(JX?il9>-rV83ar7YL;MDu7`|#1Eh=R78nQzWDk9}Ry+)Fi4HS5Ks7o%SI zy(qiP?Op|+_YK7zv13iI`a)#}=APuab;x~STbSG{E}x}*NbinsfYuW}!4)qOehHtKDr zU#?%J-v~c}Uk>^_W<;(j_fqbQ+*jxe2Q^aPL*CLC(pQJ(z_T}gxXO>6SeAm#FWLLP zD6A&B;L+}=62;Ckv3fhR?AoB1j487sfFrYy@EjnE1{1^PmU0^Nqd8kkwicWuot(As z@~P|o_vfVmn@;b{U!8wamM7c(R589deRs{|?b7Yj&POT^$FKer{d`v7zExW&8I-k` z7`%J8>iF}HS0AkIt$(QrMDNCwU)Z+qp+vHWc;|QQndui3x4Sld5Alsk5vOb!`e^9f z(D$Lduy>(jCBc&4#Kwbf_qCq6e>PViqe!~2T=!g2cCGNy%R?o*!XDdCzE7H#8?*1x z&~j#ZbxYrtfVRLkM31Ny&J`7XzuvRiCzU5B-5&7n_0yx*KCOA)BWQlm{+pDd$6F-V zg0JZNIzP?bW+NNtfI_Ue$~EnR_2t7(nY05GQP?ib&W;QQ=?Z!uZSvMvU=hg=^FpSsG(y=4w*l}ZrSzq#v|H_=MB$%o`0Bvn!UcP;lAb2 zi(OZ$_omG~Es38zX5`q>kNbD58dSCG1$}Sx++&Ux-gh(0SF~lkIv?_C?WdS;svqgz zImri-Yw$T|V^%3BdnrRG&%3gKLr)S8%xzj+zbh*(YkM$iSIw?Jw8;m*9lQxnl&#(u z5`&5gs(_tAZ-?WKU)J9KAQ-f5W=%SMl2sC0zG2-@`WNz=37aM^mH3wF4%Dehs;!qf zR|mXouFtJET^W7p^QE>0m{^P>L0xJ8x%|gz%m;nnl4W=H&VF!=>4-Uf{OOmiIvzfHbNsV-qg*nl_WIr@F(ogq zHf?JCM_fFxKNdv zaC_RVyAeAhvcjv@W}M&uJpO{Y{mB>H{6V|luuI!nd)FdA+CCx>hF@ zzX@vJ+H&~1bhR}9&ci#a4i|)L=hNpuezWN2meJQnht1g3k=VSZWn*sHWi_oj{o0Vt zo3L9Q3!1?5%RZ&78n$Ap$QFJ4VEv6Pd-v_FyRtZ^bk3(^mR%1j+I|RfcB}VdW2Pl- zNve3iynXGRG39yd=Qb?RzB$xrtauYw*1rCE$-2tll3umOw883HjwiiX*Rf?}x0LR! zAEs2!@0jy2>P=EzdrgmB{pQTL>W*yJv@05(ZwvBaP0lNxQPO_<+uhh*70nI5-_F~UDYAPgT%L_5>oY=?`s~p_cx#Wcx6q_&F9Nb2LC+#HM?f_ z)&-8X3bp*w*^l~~cN=F=>vmRRTko_OUnyVL-*jjj3yW6Q?XH~Bvba6JP0@TI{Y?Yw z8!LP3+8K_-UO$?gfyUUEkH02=Zu?(X_?-*fKNqC`!{RgY@9WN(^gncG;Qf;u-K(Pt zSIn#Zu0J)LNo+^*O2g!7x2q3f79ViT*tNXd zm-D*n&$dsicRfEXP9IjV)+d6B!5n5P;SpCxIrkW6a3nt48oI5=ep@DFx!-;pcc<<| zthr(4?owXnb)9@0g5S zboE|A!>nohChgdB`SY=XhA$`YeA2yceQ+h9^zx)&#{+5>!7I7oVPk-4(SwyM7-vWK z&p41a;Ok8CWnQ+jf5G}4nzs-d(OCjOHb28-^b2Y=P%H4<-mCBPX!ibRko&D}4g|c~t zZ5ARNLKGsxBmBdW5EOyIApB8S^b{lpi}Vl2V4ye1@E91t_J;rlsM&wZ*D1z71%$HF zf6IW^Dmg;sZ$cUdL@M? zh@vz+yte_X+=2!365i?;{iAe z?*zC64MRZWO2i~kFC#e}O0p(WP2o{=6s-WNt~Stc`gkhOs-^MJ8j6+@$8d8HVu*(V zsj)-+^g=PyARsw45~R>9M>_RVF;yTHYv2$KS4k40l>~#EYc!yxA}&QLGMHp!ZY%+0 z!c}50PHt3!N;20a6HyTmty^H=lAwB=|EMRHiMVhXF_J?>Vj)^3RF7!oiZyXkz2{k& zpd=CDG7&Zbs;iKrsBu!HAweQ?GUZ6FK~A7*6i6Xof+Sj{0;xuV;@TAkiC%(qY7{7@ zQenixC1S2;{6R<_t5hh}$Pk@6ktAv*va(0D-OKy*Vq>@uVf z4~-op7Za{98WN-ku23j25TO33Ai6ln9te=_Xe36bfzw$RvJDYNClz3k(0D^*z%__O z8jS+MG)qKWyAmPQOTufsKim zk~ms88nRRZozHMF@dl795MY=BE{SPlpjn*Aa5kJP<{KCZ&{$#=h&YzOg|SPFaRx}= z?l`r76|aWc#z_F08b|=}MB$%yCjHA!xgsG^LV<%;p;AfJ z%HVwH9*B(qH3FO?k^;x!WqhPjF1Dzk_jDCP4O}l@pyt2K1*uDdQkNf!;&5C8oNi zVvd7C&=}-U+=ArON%%Ibryj)1;}dX+(GejgQw>r)1;G?LO^^>5}~~$ zYLXb7ItCwbFz|pwOk%hgZi1VM@Vrx_89I)Kk3s>(Q7O^sfMnOp#MA`HFA)kTeu&9L zotO+lW6p)*g$6DaVT=+HU-9Mn+TI#3}sG2kp52=z_kq7Wh5M{(2~5eAB}o^gkC zqXj9D{~2N>0L!CykuXllH!zuypLF^v7m7;~8B;1kFh$UN0@St!j)1ep2CQ1*(JA6D ze|JLqCBi-NL}C)crD7I9pa5DmNQC^83;7olP9gl==g?{%N$8R)J+_a90=EnDYpF>M z(f|S)5SWpMco`ZHs=;`GYz8zQTlq6)dHfw}7wWf>2lUZg_?mwJ6U+Oi-`lAd?#Rpo-r)E1i`{H;7mx5owR%khJk0G z8F)Q{$paj89RbedD&i3?>f7@i9TiCDm3E@f{f&=N#;_-V50kTCgsF9nXj(X-kB%_my=YwGC)Ti2` zTc(bHVd^9{h8FGo7s0O^p2B1ET9C>WFpvzs9?8_gU64Kg2igCNMP;}ry5$T!4-J3osLqXlrBu1RK!S-AUk#Y7bV2^{{ij4YyIE4 z`v{MJ|%&{0|`*v(?IJ`IEC1$pU!zgDW<3uoiRzErt?6zK(EC8 zM}z+-dHs|1f7lnD2+eQM8Xk(BIw=nnLF-kNXHC^(2sy92*S~iIEAA zW3q{mO+`RX41x?g05BD%PW2NzlX;Tmc5*?6IK%<(Z0c3j6${}F@1p#z%$Xr0F2hkjI91u$Z zL)6fWr*`0o07VICB{;f+f(G;i9M3@&00uZt>YzFSlNqN0Xe=O3jWerhR=^^`IXHAW zU=!fb0Nn!E1yE##^yHM_DIA6kaI5hg2a^pT%y_Aq=>kw_yjIN;0pS$9Ma>EaA{BVJ zgRO=-hY#U!NRW=9We3Lw;;jT8z!icJB&y(WLqLjyU{v$WAYDRm0(?HmB0wX}4*@xF zA{h`^K)#vC;|L|7NI_IOL?louA;zgi2v8v)A~<3L7%L%xYKaKcDoD_ZlmZ&`B$-+o z0h%2o6GvtTt&pZTavf+FkU@t+3c9RhHb=<@kp!|5P?124o@@bBFc3>2V>q#B9AKr8 z9cmYjAfbrVngkq$LNTbd@i;n~0$1xyIJT8a0Q3eN-%RB@40@bcPt`e$dYs%$bvsN3 zT&$Hw;FwJ~9h@cv;^J{;0?i1-C*Z6C8VazuaSkh;qPAji2m)QkNdRydHQfr>DYy^< zJ%r=n;c;dL$Kh1q$pVH>?K0sR00YT!yYU=2ld48Qd5oE<1duGeOwV*UP%3<^nniG+ z6YzRHOA26M_&6)erjFp@6VPlNC(?k26WC%kHXM(Uu&oYg-#f&?!Epg2fxzHMxL^o@ zYULzw@nQm7z$G}Le}YJ^oC_&OX6CxMWHUjn;88VHBEiVvX+WBeU}f;oP6nRfV(>Xm zXjVfr_;DbcNC*)KKn=%4Bwx-CR-I|r<*}$ z3m_ZM_6N#w`g#qh=vU@1%YFsiDH9>76;gnP=%4~{v#VTk3+{|`qoHQE6 zjKJwhG`>1c<}xa2N+2H4nh`XkI^O8AuxSp8g{ig0(J*ieoaZ3Y@p`LV>(bJh3L74W z0O?|hE#8IF&^3|-J}w+bwJ!#xY~zNTyrrV#cG9 z;e3Uji3Ct4e5{xSa?k?2mce4EF(BW7V~Ha%cDxD0(n-RV_;?p9Au@u_w^>->=7?~- z!^9>DBIEFG9h*nNO87_(TLpwr@EA2a9tc6>BQY50kP>i44oeBr1jKlb z%n3&5DGrW_in9smC=QgF#|qd07hn>&a2}1zz(A%c6mq3;M3i2l%g4nr6na-UpF?Hx^hiEm z>10s_m;}B>$p#2mDj&mSqlAD-Kqhh$5CoDy2y%@GvQeNT@?wc}vcSpYixI4N0Zc03 z77HV*J%VQVmw;H(wJx@1X>ZH!GusiiY89W2&Xd8MyWP7 zoF=7MXj(UpZZO*;btD$UWrjO-QY{mP#u#!Q1Rf8F$S>+2|=)k5WGan)R~bYw=_~2 zheX=#ay8RIL{ThC0uw1hY1}HaEiw)j4pTD|a9Ff}uW_@ee6-E3lZ3D>7&2QAV~GeD zH3~vcp*3i@$;?R5MurRIad1|gJUl^cQLyY05fr(Nph7Alw7LWv3kyUs!l0}-g2&f~;5Eem#70C~jgYB;FrdG1UI^D>8a$Yh2Cac`%Rk@8)5rp> zh^BRfFrd)O*5gDh5roSKNklD#%i0xWrW~RL?iScFPI0K|PzEm%@LbPrV4#oFirqJO})?ZlwwDMMiApnJFfUsF7gn2`l zDU$4w$ry)_Lj9N8~%Spbp7ghFQmK$HM7H5d+MNRVzL zTv$kVe2&1@x&Od1V$uJ=X5(cc_DDSFFfbt>VS+qF=Y9uHj?zH;JQ(}m_lzJOP;SkH z@OX>~!V)ylJ`99)gNA?bgKVE5Akqa$XrF~7{7)VpIXwG8p1mCXKkGR`9{lgvEylBt z1lg?3pb|l}VyaF?GC(#>=Q*QIj+7l2nls3d3vsQNz> zUo-$oLjKLwm0D%M)sEK+&6bUNTBnTr!gJw0!{S92S!b00D3r%@1Sy_T^pRBGxwC>L;zI=7$8{OL8Ae26r71e z(*p4vT%4L_2I9>)i-YC_EDW5D<4K?NIJ<*R0<2JCt)}w z$xRagw*t?G)_ovJLXZJm8%VYiVjVmZNP!a!YMu^SFcRV%yf}~n5S$J^9b~`>ZU>(W zG6e*LgD(Y{RsxE{H-Kz40p<|UK(2xaEmh({ek4)I5r%*gXs<^tqJk1M(Ex}{VG}eQ9vP&>60~L>lS>5&Mg~vrq&f*E22aVQq6j7jFP2M% z5zHKqP;5dRhiB2yTm-9t=ho1L1RI)%;nEWbc7PYDp~DGwG#_v>XaonG5ACfA2~IPg z?qs+Ka0Qe&bLB)LTp$IxW+KTfkb~R=BAFskf?On#tQM#=To{om5ST!oi^wDhFkF5F zk)sxpGy)}&_b((6_is!EPyQ=J{_R^x1)`$CmOWerjPAJ~(}1CwB6mBFsEX%#YmB-)=J>kprTjf7-^ekcGP z3YdaGhx=R9!T+1P_kTMs|Lbf#0@~rnK+A~#{$vUQfj}Yub|!kqeBVU=?L%Md+BTz7 zufDrF0k!d}GWJ^i)%w%)iz)rPb1mSQ=^5m~T}SLi^y=qTlku^MlP1=u&zmUN&7F1n z@XjNejo$lC>(a)SpJH!r;t!b^!ANwG64PPQdIZfr}kiszSB+`V62 zcIUqS{h)B;y%Vd&7yAz&zgYdQwa3bzzAfW69hYATB)|r`#*RB5v3HC(DWWW+gFE1MJ_qe zc>L$c1J5%b=kG~8)^S`g;%95=xYT|IarTazCU8_(w|5by%h$jBe0!2SjM?9(INLU; z(25Ai^f};->R9?s9gx5N=ETGEUwyxMq-E;c8OR|UZ08%>5g#|NdrfIwlh4)l(B1j& z8hwAnnanWdu4`!}$C9mQ-C3bSqa!EKdtuPWm!S$+&eVn>b%8})0@69-yXm|1?!xL; z(473S4Hp)6`+j88J$}^Kkg(m+mwPEHtKJqZdt7#b+^bjqvs)W3l=ABQHlc!2=v&i) zzKr0~=-V5{pCJ77nO8NdDwvzAP1tGEeK|%PIeBLsDxOURm0LdsQoM%OBuDfmtls@K zdi)9RR@ky(7pWDszKU=)W@_S`Z;1Hxw2#Sg6KGh=#SeP|*N$9fp2rGI%k$pceRH>! z%8HLYYx~~o6WO!>s&3kzY%lReeR8)dudCJ>_ot-^yWHt!?}j%#?Z-K}uBd8z6{eu4 zv9bS$ai;q6`R{8I!Dycfu+MAdz+J503 z5?gow@cwIt=|EFkt#DSd-z8k6FI6PL~at?)fO^1{=;g zM;_yk&-U_}d8*QUw(@i9;2XV8Q5MatTyFE;mztCOZhxw3!)@l%-2FHDCmX-yCkr2a z9Q0IYI21TLX{SHCqOB|gyTbR`?G;yB3?H7H*lnv5thg$iQ~ov$mUij%p}jRz_V~~B zf@iEiciqrk(|u*t>iuNGYsyokWy>l}%XRzVn0r%9IcG1&zI79K25z~2s(*a17X@Q_ ztMcpI(!1(0@O~SAtKG99lfAqprTjs^!!vF!*cQ`Zocp-4B4+2A-P6!Rckj9LdE2Dw z)HOrC6~7y`w(K4dS~Tp5@Jg?fW%|U5Ea>ckgQMvbDbREc3nQdv$GH(EI(^o5xW1fQsm4%?Ib4 z>>vEy!5lUU7z7hq}>!UYEH3{ytYeh7MVO z;KHZr=f@0smRoXpbikN?ef@H7PKdaC)n~-M8q$~M1yPT774>oZ)in4T#=`cs+ZMln z=WCcaQyi?tFP-0v-Xrldt{7?b9cfgp4R2o0syciApaq9k{*Bur|Ea|JESkq&M?_SuycE*Lb zjeVmC9Vu@~e(lasOW>{7g|FTu4j_$cpC8^aato{P?}>fC>+1Vuy8Q@0m+o(!71{B% z=I4V+3sVPgbe69m7u79*Z7IFGFyg_7X^KxThJRVS|J&N(Umi?gV!tLSKB0D2%nz*` zR2!rCq)&f8CZ(y@9F%az#9OZmc2kn$>xN9Y{EdFUZ2UD`_1$gLBW@m5g+*WF ztJ_)MsxFakAzJ3WPG!lGXzU-|w#=~mH^1ASSbiQ1diEUMihnJ7%K~SlthqT+k-zHO z(O${wXV2G+>9tm#$$O$|UUmKSx3|}y7c(D~E?F(AI8r&idC~FEgF&mC#IM(X<0bml zPu=6}b@9@-2KM~+#caK8^O8Nc74WbiH1AP=>hJFJky{qNp1E@}@>&shRdnC!19F!P zND(AWj!9r0kje`-9XcAH8GkH()hEmIP{rE)4|fjlb{TQRwX@p9k5iZbvT+HbA=L}Z5Yt0rb}@9i~Hww&T&|Az{03t&cvW8uB~r zkp7CFS*JO+ZOz^vqk|>|=N~nHUyYgGI5)d>%kg6DA+AwKZ2MyGSbJhgX4~zToCDib z@n2v27zLljC+|Go))EoaFX}|auJ^u*_b1T8n=Ku(J?~GH1xDXF<1X(A7mf^?arFZ9 z3xz|U_K&$U=FSCOxxBCOUBehmI`&fFiJ5t0#`!&M_2|P%*<@q2_;l@o7BtNSvN>!6Gq%-CiGo3zEY2;XI}n+DA*Kk4d_3~=;X{Q{?ep+w5ye$M5DgbGr2$SgsT@a9_9X^x36*^u3Rv` z{X=WTmmcqS{IMx>r#*^i+qUw{&=T1FIS0!%=9<$1-GXMIdXzlZ zcdQR?{Dm2F9v&Q#S$i~nUfSA4SL62ovA^)c`G5mm>!vJI&tY1;CjZ`jUr+z^g}7Ga zlhj2gyWuS%H_E*p_ZamI10G}7J&Sp8l|afp^Rdv( zyAi_qz*zmxOIq8hPlffAf|K4Syqse{vKCF?``&iH+JNeq7?H6SvHDTKB*U{y=kEpj zbpyZK&G(0=EMA<$Sv;^s_;^lM*$gnk6nM|)M1SSH8}A~TVuyD#md#);3SR%g`(S4O z-}~2OZ%u1%^ip?eWKJP3oLn;gZ9V4AO>oMFvDID2aV)S}T0s4%l7Q;;UgD+|Pv6=y z=3ks`SuzUx1;zNJ0p+`@&Nv6R1bCM}rZ(-ux1`;@l&$RM+O(N?>mjjj+mz;;VE6u* zz#EO@jN^|Kr7j6sfleQr9`xprZNP^ixfiDoy}-m@`q1osDQL%==Wp(^Tc@}-5pQf) zj@jo}IjHWty@`=rb2n{n;rB2~a%fQM^^)eOZ^9&HP9$R#vvhpf#Q{wt?|0v`^x>q6 z*yyf}Pd3%Jp|>&%SUWoK3s#rehPYcN9~+GtGk%bv`1*wR<9&hy=LY1YFJPYp=M)_~ zNWFez;v4LnsGUj4i5KM!ua*q>yfXcJK~Cb*>B*0r*_#)K%*#L2T;ALzZ|=>Ld0bd1|MBmyVUV1^n4^M8_p#gxEreNh)*C`U+Ghtu9&`ub70b^L{kk6#B}?R{;~v+9CP1=cs^ z`;MGb_I+8||6$7YuTxI!Kp@w>670D_8L~&-y<*KAKy>p_^PH*7xkaU@ZobcVCe9`I zg87^rR7B&t1Kmv@$z!+&vi6)Fd2~d1(y%*ilfI8|Ek3SAgk4xYhtQT<8+vEWtF{L3 z`Lv^qdtnPECnYsC*KZA)LFqSWe1Ty~iwyOBoc(F(t)Pv4L-;~N=Pmau+GjRg5Fn#L9 z>f33B2^$`F$?KyGIkv2K=CpAzM|#pn$AwF%`rn#HHU)m~VqSC|{_@1o?Q?tVDqmZ- zO5HDMO*CyGaqjOYi^hIlG305m>ZYWdUS49rl=rEQYM3xTyCP(;Pe}iT{hqq|i-6KI z)D*e2_&kbre`1u}StHhMR?jxM-`p%4RydnH$EnYtw+42on(8j8gF3S2WK<6LoSI=l z4naLyEcvjw_lFCgapY%%>R;7QY?_s{cPy7Uk$fVjIBj`kowVB)Uy&mE{qH%?-&B=l zO*wOum2(s0JbZIptH2%7?$_SEef`gesfXSdbx^mS`mAW3koWjHuX%K9bbA`Ga$^_m zx&s4+rw59)gEn0mdLZQEp4fMvdhhFF@U6Q(zM=oL%X5ZUmQC7YJPDuFFkr!i=|Lv~ ze&k#{dsIB`P73Yp?Pn#=dVRY4O#dv1OV*{|A@`$JkNB}%yL`$S%<{HAJ^D2IMPvNd zY>5*c@tcb%WN^fLUhV%d-dVJ@eRA)h*Ti7fiN#x%%yBOB()M^?wQj^c`BUjr=F`VJ zcE7;_`R3~~S;@XB?MeCB?Km+jXP;V=-ajMu+2mJ!GYWg$Ypiv(1l2Hxm3`Ih`o?Hg z9G;_*A5|=3BuQ*3N2rZeH`~KDUOHUUs|EFN_M_YdxmUBs6ciQos4ZO;kQaNbe(*te zkMe$N7o59uAf{l}=D;NIj{I?l;J8;?)TT$wqMoHI`(+&YExUbm&FzYPeiz%VV!VBb7!jL>`5y_Eb8ueJ`FxIMgem?cW^yJS!Szdmc)*`eaX=zEW2oWhJT zS(UgC$WiHY0)4g7`e$bRn9#(Jj3Y_6_^=~0Tpjn+zi0vl#`-8b} zi!ZO<_2SdLtOGYPo@wx5J|X$@e!t!r^6};TCQA&nR(3=ZhKtnv#@5Zo5Ox&FI$B~D67ui>3UZzIvf~AIp z6=zJX+cWvOt@g#EQzvWo1ZLlojBdRCX~5_sUj0_o%+!9`s}*t&vb2;#CJE}{jk~kQ z6m4I>Iq;BHz;tb1^HRJ>x@bq!?Zuqj8Jphrykg#ny}a_$@`;6sIxDSsCV^)gkDt{l zDx3;yG-+E_oVnEGTpeD*&ME5oHCHj!S9@axWkfEQm^55v^w~YGJges0*^i^2BPDgi z%J%X_EpuzP3~a3-(JqfTbM%j0KQ>)+&Is9N{q|~FH0z7+8R$pS*QQTDfup=HKhb72 zw#({p$W_tY(EIlz9KG zaLFh^p$JhOJ(`MpR~XapFCR|Vj`(opvf;rqSQgS&nSU?h`hnqppwBKZI;*+de@iLY zymuyih0l-7Z6&%Z_bXj&%vD78gIi(WMofJ&{IjoHl=e6zC#E5F*zuARFof>Vn6>>=Gq#Re9j#vQdEYsqOSq?*6u$lU1Sng_$e-bJsz0(;SN?vY~6fx=2GrE=~bZM?%?*?LWJ z{s-ep_Q-(;*+0f_3`<;k(AVog#zgX%lgP}xpkgxF_wB576mCgm`Yd3{l~q~KyKgpn z$FKVh)BEo8fPmTEPACRdmc0Bu{PQM4ovf6K>K)QMWX-a|kgG@PPZ&1II=bMAz6kEP zj>ILx(c9PjOm5HmdMa9PF3*2IVEOFha{DM=;v^=lT<7<%e!gsF)XGdnv*n5(_ zaARU+<#RAf+hxka)dj`KhThY*llM(;+7&=gET+^Ca?TvI;hkY~ZSa_787H-b8z`*h94-}?Gbqd$!g z&wr6SV7%^oOZS{^j}oe047n5;ayv1wY+OW6!p4%mJy^!@0>bw^cId?!x>}d-z^tVe zr;`B0w+SB_qu%sGr-YVGNlit~zuq=ZrRq0V7HY3tG1uGsli(`%%CzBSk%i;jsaw+D z!Te9{eP#QDj;4h@33xNQp~vF^XB(P)n|uY?2Uj#-pMB_P!BMebi|cz{uAk%R;X*(4 zAzm2LuQw4RO1#K1TX01#^v8{1TMnNRhtl3>R)?*-x~HxF$KmT) z8e8rG;NX30X+?${H$uzWI$&t8;0#jNs>7V~DrN}A)%5V}+fxTt##A@73hzD2_RIG< z5z%wg8gKp7&6|2mshq|v8Z>|lo`hCG#cyeIf8Ki`kCA7e z1O2X@mtT{qL`91gZSNBZx@jJ`fijTz) z8jDZ4cp#s4{=M~b&!-Kjz9YVlAUuzG_Vp}+^8`0y|G`hqu9ADPDBFt{%a(|PNc*Kd zxO;|fd~{}aLks)*uIg8RK&J;UtlK($-LaNY@7}BuytAI8rz#dm7w^9NfOnnL+B9cK zLDwDd^nM>T%U1Q@Dq!ARqAg@+mZ+z~#!L>|QYeDuA`@~Sv*&%dR&n{}rju9OVA11; zTr7-;N3HZScVc{^6_aT%+eLC;q*bNKQP^PJJ=8Ngo zKhH8}Rllm=$n*7pf#pRyNRR-O8maf$bq6*=8jp)OY+A${CjePtxFhI(`5 zDnYJ&6LX_?ZNbKU19_Kiep`Di&^S_*K{+9bF;>BS%>1Gle|zoTd&{hL-76GA0ejCl zT^Mfe-7-G>s0?>u*=hH8uzFs<17%T55#K}WYPwJ1?(cIA|C`NVsMyppLGkeF=EgT8 z9;RK-)}8N-yocL#yx+*4DgzvQblm(mgzzWRr&8Ap|6^O=9;vIUJ6zVh|AzN4l(Ku? zchtm%%h!j!P*SlYawRaW-C7kkY=X~VbyfE#5ecndX4~<@mno5VyWHNJHz&so-$~eG z&)r>k|M|M*2^BEp2|%>>;r@ohO=)d8UmH6jta+?t{e>o_8&g`iZ6>Bwpm0gMo$ckUmf&1 zck=#V!FhVbZ+pX6?aizVKm<=ccW+cd$kI(qLWd_vCT)GX!td(d{3}m)?rPcCFbb1> z)G6e0d0RNO_x95ltkF*irL$5K8^o-oiC43`cx66oofW%o*x8L&FoLoP&vvX&j(}-n zgg+J~vhbG?FSA}|eYxHHR`1)xM`51xYwR;K=N_!k%ovIt+FsJCtN-$C+OuhIr=@>= zHdKT=5%lv#lkw9dTf~E~-p5uX;(q2=ZFx~%bbr*X(-!Zt+w2X4ItVqs#k<%a>yPdz@8f!>byU;d08UACD`e;S^V+fia{x}_pa2Htz0)SDsxG* z3wcOR9kMRoP~7-(N!N$q5uGc~r*eP8#9=%34tmOadUE-)k4MvrB;7|HtVTQ;9^Z3a z{M49`NuP$$`)u49TzMq9CA)W4@9dsbimKQD)y91WHPxrf5rd(p`7FR*E6hnGp(yL*4 zZhh?^F4;PI26UR1c`f&y-vSCU`?Ta~;d=7nIhrh^+F&<;ua-oR1jLuyZ}Z}l)~3P` zWypo6Rf|b&;?}(*gT_}tr}rna7mtFxLw_NU6AZm$#2`kWn$7+D|CT5U*$kDq?Fr&N z+;O<`p)`^Nu3N5UrS_#yqs(rXgt~Q6k=C0{Wvc^D) zQ0(Qb-mJoRj#sSDoUP8BtHFT)>1rCM_V&rtVFs#FIL+TLTVY>sioo(}Uf%B{Ve%g@ zAi5UWX}X^GmW(-=Gb}&`O=?&=wr+Rfj;r^drzonMX{AA#?2A!(_v92q?ebJg3I>w+ zglKphuX@JV6!VXZ=`&{PPbNyA&eBoQi&xiM*wX0%Du0&p!|^ z3n=#H4jAt?yz>4VE-rE$`IJws!U)PQQ0B687LWnf*V#yu*3D-#L}Fyh1|ms?>3r zrKfx>^N=@nb3HlgeQ&3i?+K@6VsT@Cw*5&t@o}nq3bHe{#CR|oX_hY^{74L%v8)n8pP^Dvg3f`*C1Sc3n z$C94?CK>L<10tScy#iMh0(9>=!4!LF7H#)NUygK5+)__X!PL8{*qS^vWzFj#Qa9(S z`?7DC+b-7OvuGXhFo6e<<{$yeQldTmr~!2wal*ulK)~1JjKKh)*GH7meY>e0|3l=L zw;3_*?T&Bk^3+OFOyub6&rmA19$(947*XjHV#_J6z~24dHX9C8`-YwDrOhux%Umcg z-BPF-Zo;!2Q@x78UQCC0V5PBI-(u*R*mhh`4fpV{UsyexL$HtEFQ#L_6+K}|7kkNY zJpCfsVIAo9eygtRJ>g{B&+@wF}Y9exoeu^JfJjtK;5nJgRw}|wa9vlcZq$aa4CTSS@*h%-6 zH0(^*vYx4piqY%lAdAIQ3+7I*=P&LEH%AeszLVijDD!Xp*vccf9~uyeWgA(QrEz?l zpzdei5))1k-f}Z0U9vXQrj#9sR1WaPRGJ}NYOJzZjQ-wYS50PZdRop#X zP{N5HZ7!``e{WneHV`|-pnHX6H?Y7UyDF~TwVfq3({!Knyb^A{PoGcR)Ssmg`E(lI zwqpq5TL2MQ_oJN6(np(hQKR@L(ILJDV1C$AAX-ufVi%oinV+T!@ z#hHdl=S`%-?7CE#cSYx0}*GOwa8cBEgvPFYmtf|ZYE-4i_GBL(nR&}P{zW3c0hrL0=Rt}0i=<+Q_F5kWIA=8>yqdt6AnK!Sevli*(iC*_= za8f)K%-RF-&3@G~52^`kM+~vHnp;#g)qSfrm|&%h&fGD(#>K_<*zSF`EN*qLV4Eq% znpEN@b*tO!G9ACW+WZPZx1ED837+ONVaJy*D?hQ#P_2HTo?Jnoa%qvDz$0Gp1>dzixRrQgb+$e_vqOk#CO zRa+jsp1BJJmer5n?$}jMnOA%sov@?C!bKG_eY=@l|9!>zjsp7To8z0}u1TJ2{aw_; zXZD9>s?5_H**j2{idBje)+a#P%WZEqX{5%m#*xa@AxL==d~0_a>|s{A+BZk?>!977 z(gsI`-J`aLE%wMB!@~%<2!TY{X#(=FxWKJo?nU4(sOkFq$8!T+H)i%PiQdmv=O`4u zq<-`;vv8J@6ne6;aI+=w8Kow#N=VkN_gVZV09H<4(}fk%TdEXhk_VNBP5Zn#!R{CN zPsF*_D)N7B#+%k&WTy4AiHKlC)E^2?7C zU$Dup`~CY_>N5Tg_%NU8!40XK$(Z}IYiT{aS3 zC*V$tT12Xc00~P2trZW{n$W%_E!xRyo%kacn?KRH7bd-ghKD?Le?s_N&TK=Gf4vIA)<}78`-0AbW`l2kIDM9FZe8 zNLOHbG?Wh3_DGbi0`q}9=X@EWP$t#70MM_s612h@gNv&JukmQK0s;nUMzy4X5t7Jq z^LHf5ixr68ewM+<*awY>BL=0&cA5^|%+U{wiI*p_odmUs=^t4cZPf71$2WWn&aNww zOJ7+2I(a1htMsvcA~BWHE_%{+eVIuqn49MD!3%7OSOsN@n6+lnDO`e6WLE8o>NZ6y@?|RyxCL1$vQ?aizscxfN_ebpnH*} z99rfX7fPoIpLrMqcCodd6_6jd>xy~Gl&e><4o3q#E`dqHGZy|Oe@!Cfy{+b#v-0N0QQ?&*-zq`qx& zi#=SlpZHw9-0|A9d0co{UBdkaZFHJf^PHB8m6kb4aWbTVS7$sw@!_GS#nZ9f#^TqZ zLlLjff{Rl`u#-1V)$_(iT^AWI5W0GxRTm-9^|ykpt?pkqJ6>I5<5x95d-Ny<$9)*c zDM|*g?JMA1{36A89?bx(v#~dlrxH#-{ zAPOpH{9{DVQr3!*F<)u4OvGe$U2o#Ptpl~Ii(6@CWHgnm$P(2ULF~Cqx{ZOHsk?J3 z&r@1ok2?3%;(8vsx=o+Wn0OeDC{^G~`l#vHm%`-PwS8vIi;ZRz=!nfWoaQe(IOxWM zM6r^`=C0qfP)=>3N`SiTE+(E&wZ!wqA_J1XyUj%Cn_|OGUzcq(->3LJ*fF}`Z*HP= zlxXaFF1XTKymoVn$E2uZ>z7SsvZAk0f{fjZRYl#?4hJ4oa%FdiRB^0wZv)b_@*1}y^e#(AIc<)czkN7c6kfB}tI8q)r-GHM->(7d9} zhRn~O?N-LRd6a0?9@BIuYTIxyG9?v`4wSdCPZoa&?U8TuB>q`g@vPo{sNrR;1kEn) zXO`|XJvBXym8jJ6#Fy=YgIk}n&axZjs-#mus-W$K5{8R9w#|&^?jezsGCj(*3jFIw z&7UTTVoB+)hpHZOjiYgh{hLcX()6#@qi~chj&$e0Bb7#SE>%tUP_^&Ki zg8BK{NXu{r)K$Uqj!BO^OV~5i^~Yq4pzm{C?MdIzN5&+y1X-yxPBMiNjj-WY3Wy+| zqfJugE{BeT*5xd=c{6-}Cx0U$&@j@%3;Vev=k8S@Ikg1lbnJd@p^H(*GwobIxwcOk zo9xq?NiG<(z2=j7lyu478b@6x(KzQvG|54zzbeHVV7X5O8+>DL{(X%$Cl@9y0ZM*#r|EpYWn)-|Fr zyBgsF+k~H{hd8y#AlZL5lLj~B-aVPUHATIXIC_&6DP@&r_1cQaYC-*nyndlF$jbRa z>(EXM0lDdzFlFID)4CH6&Vx{N)%ONd(Pt*fV>azE3x~w2XW)=QLYAheg-FDnv6hAJ zVu(DMZa6LE?zm-fhpGBpc$Ra-MXC-Oy6o;$oA6c4MR&3?w9~%eg8-aM7t?(Q__TP| zybO)#v-|8E$oq5t$Ld7Fh(lVvlWqP-@ZTvSol;(xUt3C4NxVb}UQA5IyX;{6x{?O_(T-jnW54#ZjkBhyntTfg%QZkADP#Rl{LI7I%96l4whPxia+{QH3H|C8|x;XB2DWP(C?4*HKw2#V*K|HuS>x03(J zgz+2ykwNjG^q+HhU+j-ekpKVL0mqxqf6jpg|FJ_r2##mb{%Z%``WE=dUO~a%3f~`d z{QuYi;TM47d)rfI$)@xCVCu1R31j-Q8V+yF+ky3GN!)gS-9Y+;iW1 z-tYe3H>=n5ban08CA)j=r>2TpR!D>q#Kek3y|Fnqg~SG623YEvAaQd8MU2htAT~e| zGaWmK5Jb;X9|DwuSQy$F0YEHZUS3-}8;FiMk`pvIq#3E}Gmg-MTklzG$ySx=Y>#qP z74p|gW@Y|Q{tYkaS}OV>-6Lty5z!&VR(|f^%QPp>+icf`ox>t1JS@MEaK0Ta$bS0? zoZ7^n5l6{uJK#%ipu3=(j~AJ&X4A|4C3L%@%q4bowfx0|jG4I3VjwwIe+40kj|>+H zVxj-H935>v9+|f(Sz6m!2i0ow0m^~fElRhYz28`HH7f;{+a*Jte`(E zf4l9^9oxTU{KYD$W2a+gY4{KB|1k60+ZkEfycg23Fou``6kHr3`gB0SSI62JTUrRc z&i7vEBMUQ#gPDVwm4$_k6~v{^%uM@w{LS?`R>j8nHB5BCFP8fM9KZq_{`O-^>70OpqZ#sk5m8lkf5dgtCvAQNn?FmjXwdC*ZkiBVF$4QIJjN|@;|P&{g0r3xLVNC z%+f}|N=Fa!x?BZqK>&_F!gzUsBCpYYB`GSh06709y;`rQ0I|~mzFG+Y{xL`MKQjNU zkw405yiWW_oqxymkG#L=Kyg7q0Ug^{e{lUThCkB(w(8IAKl1{GR7I79W#|=+%^|kZ z5J!1Sa~%s=g)fS)50s6qouHA94S<#PFBOF#wt6R)rJ80*^^*=n%AieY181F&*(0a!RV0W4r< z00#>T0L;w%7yZwfYh`C+>4iP_mCca9wt) z&|Yj=syM$7JHKLK5BJ=_5MV%~sX}+G8yLWe-U`7?KeqBDCl`wK)m;B(^3rc!VrZA8 zv7LSKjHcuedxE`(+8??|nE~5-6r+mY$5V&A*-F(csB;)P90fYOq8ihMu z5Pe+tm-QegsjguL{cqVQ6YK^JJsw<1&)tW3|~Gqr3KnH8Kx{C!PV92cT{tQ;FlULWH;T3-Tp}Mn+K3636tP zZZKXpJGhL04t6u7Wp?17`R^&o?ZqMb1sgT{b9<{sG3g`udCshR60p-E5PGDW;uzU$ zL%I8N$u@{13|R6&2~xqnv*2@qaX-|+03i*uwHTE}SJ+0fxIFLPlOul(u~?Vlr&QRv zMv2t7q0VL?%vtj@>x99ILa_Ue#OBS!48!mZmBfqH3U(C$<>w`a0h<8JBnD&r8Lpb2 zcOD9fA2bi`;A>(9HSO&(4kzuyZUz4pPNf6Y3K_*q^fOXGrzA7#kTvFK)HNDmJz5k9d4q$_S zf_C@AOoExxL7j*C;k8itiR7(l*YGbPC)_jy{Enq{i3U7gwE8amb>dSf27m3Y*teet z-oj3ZsJvxEZJxwyvwJ zGpj4XJd>oCq%4KM!)}1V>V4;vr#n-XuS#3W=YYtLnHtX6qx>!Mn?_|~73{pu(I*nL z{tm(o5-X1eg0CzV;BvTn^trHRufuNCb(%A$mJh2qCqC$%wx_yo6m3YJB%Wkzk>q{t zv{8uaaHc-!6bXQLX73a+h~DnLee%QXVw3YOl(C}>z;N#Qs!LZDG0)#3PC_Fciz6QJ z4qyHqU2?6rqPPjACJhfwD@E+!M}1Kn0=3UtGUe|w0ov5)F?_Od?`d#kBuIn>7Nof( z8b3RKb{5Q&M=i9NRxM6yN>`U@6>^tw2a3kBCSD|N4wl81M4QGRCc09~#LXo-CTcTf z(rQz9N<8O3Ho(Yre(qH8&Z$(+5?Qb9;_(+3PRWkf4bn}~4c7JD0QbsKx5RkI)MLpM zecrE}q|T!t5}3+!o@}W7Qu}ccvdBy-%8~mp6}#ViNxs*5i3p*FXl%dVCfO$1t{IYt z?_&OT%PLQp7Zw}V92R-Ow$nJaIkv=JVXXDiLKlDc!Qz8kJY~E=Jal|yv6PbK49-k? zv3aq~G_whfiH^yF$-@j&N%&a7m}ACRx;ER()??s7WmB+A!@bE>_W{pAEKv$k8xbLq z5>X;sADA%3B4sdTJ7t%xzt%_{xeiW!TYa}qi#a~|_lTkabxkN&R$2LR0pkR3?n((y znO2fBn~b1xEoHNuVlFyF%_Hi&rkQEHk%Vv|YnEbcs;e%fk=BHN`zcr23 zj-i`5`z)N}6-Fxk|r8O>kWsVggDTytnYcK?*3S-FDOEZsbIjdo4>K=S}X z;0bgJY(=}7w{v*k?B_m%dAPUUFnSiYi9qX0TQwzKu$HbiN;ir+nuCmje~LfNNMJKz zz1~1#6V0U06sGNDl{Kxj6u+r{ct7%GE_~Oa$Gm4{o@e2y;ej4q5}?sWHl?m-5Q6Rs3- z4=EQ;1Wp-&7nubS>y15JcPDgbvky6NQv2Q4X*?K#M?nXFZbUGOChom00TTmTDb0~{ zgOZbnlOr6XuCS0`PqSF$z~q2vXgHoEo}s< zZA+D3YBxG=!_CDu2R_8?_R;T#pK0Dg9;4wB{i^*Ygc5r+gZ0GA#c{ztG%tA5}?)zsifCr<)Li_cC+O$3pNcI&-_-x&i*_RE%n}3 z&7e6c;#ulSEbLt>wXYg-jY;*Yp(rGCNNxmk=W;7$%VL;x@M7@618e|xv^Q*Xcn)~% z1phWgEAyW%|GLyD?Woz=w0_lg7-j;s(u>1Bk@}IfEQQsr5)~$*GX)2^ z2i`=HDLbtPuJy<1i~UP;?Q7wWBRH#t@|yXeq9N=Vwdd8vgS12!f{e? zoo)2rlAmOta4$HAxEJr!K4o727*`Kb&zfDH4gQhKZtN=My0-5%l}0HYcjpOvV3*eJF!CRtkI@usrBJe zDY3+`oJ;eQd%An;alljfELn3#g7%Sz@qXQjdF#Ga%~Qf=Sw!0#_uYHV2jJ>;llykW zOFA)ZDE$3zrZ(3Xt!18l_tmEfgd%h;z7ZGBC!;65qs?quB$*Ex#e8K?Gq-aFMXi@d z-{-!K)dU$v1~do)U*hj7WV+vs6^+r0)QTL4mWhsq-G!~VR9*I-4u>U9ZTh#hYy6vq4c=+hUry*~MbEk=DR6S98&P2DQ05ku^UE>fBoBSTBeIljIH@lfpJu zu5_gFsq%eZ>Cij8mnYcJ#HGf6JuULo)#KsP= zF{A^EyqYZcic{qwdUhHhb}$o|gPjAw&hp9u27>^sTx?7%U@jH_I~e>*VPV(&AIK(R z1A+X3nEwK>f6e|6h5wUd`3LdeQ1kztcmaV}S^mz#fB>&ru(JOHd*!(zyD84p-K;*O zu||#@j=W<{9?>@#-5S~Ilo|-dfS0!sAmfe^!+{|z2O*+EPsE&_%SEZ0Mt`GLDv{Ud z{83nMlnhtdX%eobZW=F8FlA?O+Tnj*DHcbG;Ph~-R9(Z^9vrs}Slf3zYI#MX4b zNL(=*=NpNM4{1UgNN*b~1G%aS)iFqyq`CS4@#j%Cy@ z8jUJz^t0`8iDSUy<$NcF2xe>YXU&yyiaf$yr73`-jFzK=^gDeJWMrIK zaS2(B}!$b4VB7_=12QNSHU}zMAahv zjP$Kbql->H#n`^k&g805g!n_D6|1$Zgn)kLDUCQZ!Gs?Nns7+T4KGy-+&$1Ae?X#j z0a=gT5d6_i>lS1k9d+tw^-hw@X5e=zO*pZ?SR#fa_^#;hyKct85!z>RO-+-_T9=$b}_jSi|q9OY@fnx6Ddw z27(x3-|zHZ5?)Y8WZ!PS9scGI2IO^>b=BRYh(xR8^dGWttuFqksw{5LF%LXPF22!` ztk*fL*V+B?dSGI5YXHy9exAl5YjoD&a{u{imZvl8aUyP1q>6_|`rOfG+0%A$k28tb zA@23LEx-=0GBVNcuqqOgG$Xy9QZ4PwNAuOa5Fp$7P!q!yh`ccq zIC5?F`&Ube-KtXHh_Y7mK@>1*u(Pgwf~gds4b2=A$Oe-HZv-FI6;dT8yeGcSVv`-8mr2WlGwlEG97?g?>_E}KcpJQVDJ*np`3TX=DhA`zQl zLDm@aHv*P0f@{JNssK!?!x|LT00tj3Ifi(=pOePX0wPTnXY4v$3F1*hUeFzHKlhN` zWNTrT!(48dU+ONE3-Itu$i_g^dS{9-Wo{`Tuof% z9o~c@&-hRH=ON#OqM8WSX4UGnt7a(+(M!-@hf;uXP~!uxLz|b-fACFtWNRLoYp=Dn zY8G~vd}6~ZDV@E@em@o&hI?ClND^K%&(BbRzpvFn=k-}Yj2;Tr>k2BGRES77GUwWQ znpYYR#swNnojc+hEjMk{xWxnbd9q5OV;+AG2Jd-(ek8>|9Qm7#E3_*#%)JN7G5J&@ z>pXueum5GORyzjW?i#|c8n+{PVrX~^!c2rojPKCn$OKSgTYi-|f!*?}tdkhupsX+e zNW-TLxCzz$XWV^c*c&NjL!^{s=x9WVQ|~y2Mvw?ACq%C_?v~Z-vfF{ z21s~N4~jAiF1x!U3=lvsejZ{e6Xc{NK;&@NY(q94^yP+h|RK5>Jc;zW##~ zG#=rX&;wDTCnp9Qn(4j#-F-JqQIaQD_7~!G8MN$D!q2`{_ZplpHxtiG z?>!@NlAW3Z#R^tEfaw);o*YZRKk1!q6I^*$-G&ofExnWGx^dS#V=ZiTWoW}*(9}CK zjXov|JxA1HRpz6f-pef!_p@HbeK&L~wOB(nDmXTm&CM~@0AU!_0AE1&8BZmt`kC1oFB)A<|#mxnoS&3yv28=GwRLVGF)G6H;|VN=w4S;4mrh<=6}n_*;# z;kvO3zaW>vh5&f$TRI<&dpI7MY;N2W2QDH2P9-r^x3b63OiL4-woNgkVCY{`cD>Ws3KYWEyM zC!W4ZoxzB@3O{FNm|b`0DRzH3)V4Ek$aiA+p4k#$Z@HBHdm0^fP!TLT>8-C}@|$vd z=y#4;RGFnQ?-0CG!V#~8rLHfd%BhQsg6%mLF`X{#H>xY{O|w8TOhYQ+%c#-W@*8*% zqlqyYqd-@3M$QEncF!(Xx^dko93lCZyZt$e8G{(5i#8_SmRVGwlwrh}qXG4Fmg7z( zR%?yGC>v3@ZVP9O{*93)4oc3%$8@(}tkuP_k(2M%QAEY#Xs)aad8PA1CsELI0mI!= zzwWx&pI`8lf8KfSd6ONytPJ5YmP{w`)L9>g3IpMINpkUcy^^VjpI9>S+d!FlV)8s^TQ)Da5UE-P0QyD za@_=yJ;6-Aw6x7=1cSpN5dBf>!b`50m6@9EV4PBVY&CSlY8*!bhYeP3Z0u2?gTDA` zs-gdr%%o_|JHi=hd$eFo%i+Zx$rpBu<%Zzyou8oGRCZfRjQ8eFavH@~=a7}6dqsCi zi9=Iq`R7@7L(eZODUVW5!7e}AJY1iC-?v^N9OnH@jV*NGQLxJny22|1E^5^_8(B_t zQo_=HU3l_SZm-{~5biP%!(Q>zMkYrRr0VC>TCOFGU1*5@78UL_Vpa9CD*tyMWi`wy zlfR*sv<>u!@9>px0nwg<_bk66z1m@gZ0IMOq1O;dHoyXnva1`KOCzFE+5I^^^or!g zrDYkQh?bWFsWu}u8p}q8*f|bmSAKHS!a-xZj`^a z2w=@?_@uq)5`M$g#$tTOn267ex;%k4ggTLC67&2}Ms=_S-k%a+N+KVFp^&oyE=W>t zk(5!6MI)-72d*F3#kdZ9wecZ&&D2o2V>TCcbvxl)Q^GZ`Nt_o6T}RCg#_Pj6r>2Qa zFN>^ZGhI#zz+-@ECQm5Lsp<Az*wT{d4rWoS>e zi&f}YnCr7P2BYZgpywRxZM`qcR$?H3rszf*7Q;7c9`p$F3`)y2XA`I0tLgG6vZ zPjo1FiIa|{Yw%p~bv$F}Z+d(}uAeI)1~{k_Tdm*i|Z>6vr*qg>Mbh;#Zkkxzze7tzA&T3X8m1=%y`(2t;bf zE|8RWp>a7s6(f_cjw|gXZXj%S$De(8e@E!--DC`6><`freu!LPm<`)~ID&JPZ1^(I z=<&hb{rqw(la@~$9h)lGjOkj3^^U?}y<*yzD{jJcPvl;7#LbTs@5qOtP@ru5Jp*1$ z*Krq57tl{Tn79XagLu-dNc-crqs+(it%@o0{R$o6uljFV)bFJ8qdyLe%|zwfC#^wc zpz6~%`lG~tq5wKZyPrDt53+8(IVV1+xr4Iw8fV^V!OPJ`C~6L04K_q~595{e6w&_P zUO;{kh`UY)nNou_)h#mvH=~a69KCamZ>7gUqQ~$=Uw6h(;jieH2-Q_D?qii%q~_6e znou=KGyH1dvOiUWpZ`@%%gHoG>YnBWa=tofNc$3}71M@!5gB8{g3G$%t@hg+<#+#u zpx6fX*6tSdxrTc=xx5IqSW9AYQ~>9yI&3v~I4GwrfML<0v;sq0hrCX`g6KR9;zsRYU?pFP#aw^Dt z`hY^aCqgIF;+^iJ<>U`-jBwl)K{&6wuD&k4zLr}0_o)!Njs4A0K zX=oIU5o56NVHYhXA7TDv!TFkY;tPJwjZx9CjN@)K#vF=mLdz1A`hiH8P}4&*Q^%J;>ManN*mKgEM_bkkCo$Ce^)i}G;TdtHnej0-JPQiHm(u1{_cil zj2j`56*|557gKMrbFwlvuo3x%OS)q9!{F>Ch9+Y38uY{9+YNSke#Xj#yQC$DG<-5;IF0$xtQY8q7fID8_IrFA z9;NSU*tv>Zai4ndRP%Y~*EF4!W60v#1b?%TL~GF?8}m|Rv)lo4A04+oq;Yxn-15pt z-Z4_42V0M*dqc>CLQkYdsfaQvV)5yymY8=J#xJC;$rw&r_f0Fi>Ns;2t!dgm&*q;{ zeQ|PB$+i4)LfN_>IH^L}r5WdebL}YU5++6aDfgWQWp9shWfgE-k2CVw_qWeVhUlsn zPl!CwnS3mg`DI~JW}xy`V}3N?l5~IVS3(^QM}_M*L%a?bP0?o`_f%S`sFcCsd7~yJ zf(}IckgpjY??|(`^uOGztF9Idc;vt>u?qQ2dJOz#Ix|rYzDvMFFZ+BPKdB{9%cU7w z7qFmRoC#(Hc`Dp{`6{d}!LM|P?<|jGIfp)p&k45DdRpVG zLn&|wjvbQVDFQ~)GZx2uTrK^uX}7Sw($PLqN)tb=MtU-ShDllvjUG7h+4!v7SXsVS z##p@0LXCBKa_%cxK~6#%O`Wllv~yb6j;fcsSKj%Iw_FNe>cQJ#%Ve&hpuqs@d^ZzY z$>Pt#3U*XN8uu#sAAu(p#@B(}gXc~m>}9fv1#fRs^gbdRPX>w;rpSx96F|(7N+_D+ zCT@F9NjF*4R`F}f6;-aa7t*orCqyNO2)i487CokpI`PqG+urVe;+45V?tc9x#hvu{7Gk3kR_N`o?&s3V>!h8q{G!@b6q23CE-YVVu=|*8CKYqKXSmbE>n9# zL=92iEi?_N*zXQKLoFD<SjW|x@^FSa?$f=58{OVfLbaf217+E_@YzA$ym>BYbMl`FS4`;Lnzt3=R+$MaQIh=LG8!*b;CMD%p z*cLtPwz8e?>=&uRt2z}DtSIy-^kM$_^dt3KEoP}YFHk}v$RK%&7dIbe(wwkozo)pH zjtoMo7|u}-7gYe4NCZh%ZijwU1~e(v1dDF|;hs_taV%eXyR2ujTU**)=gCDjW|*I|&m@;A2Fk$z|~^8sL-Ex;1;&b_yny$=x-4BJ7HN*Ea4T zC;f~YO$`M{qJ4518iI^Dd#> zVY+_E^+BZR!OrK)JqI1tL7HPn_sa7t@kCijEgWxC!{AImrlle8~P+Mp*H_6~0$$eG{eqJio20sT?=*GPxrfuSpK~ zgOv_#d!-`vJk-5Q=9U!3MeonGaC2eun4{58jr@Z#GL@vKe2nvDW6KOb0?9rwrst~w zQ&{X%)?~l^9&H_(N^Ku`0P<4dj=<+E=*KT#pnh5)4IrJ>x%<&^vjBY(y{s~S7{Rf1 zadaY3UNSasNYruQkdg_0?y?>=!YZ1$2Gb;E_IR6hT;2QZ?#4N^f(IJ@-g!jO}hEOB2z7GT5s5GcH<*JM;4}D9y1i#Pa%osze=1 zG`OrRt+=ifEN3qrd#dF+`O@~EV-2j54sS1*E^@2*oSemb3_&_>V+IutWH`C)S`C{G z>qSq~#)gSmCM2eUf|XJnQl*pO7IKp-u@r{vh%ym8j2uJtX%p$)G;Ng@!L9|G0EdP0 zd4F36lU-Jj9`N`}XFj_n$~6^xgN|Uof2Yfxz}PqR>KYzj&>h3-1U!>`73!$a8#^pi@#f^^VlCtLdJK5io%5X8+JLzYpJ&v*r_vVDlSgTgW}iL%3CxV(?V;qNaR~HL*&L8bfKQ z9I#$%dKi_={?QT0hN+2mU zjdcj^Udo3mI;B1-jyL7(!R4`Slpwl~z4Iiw^uDP+32eG6RZ<>drc4Y{GLddasxrQABk@qsu^aaq1`+r@$-`i!ns*y{34R5pFE<&XA<$0TPTbWD$~4Lh0SS0hal+wqtafdy5g#5G-c#AV$=22Fr;SespQ3Lz z@Kgj_XrH&w&CgcsIF=Yu8Ux(~pR>Bsx0?$VNv1n(;A&=MldxZeCyj ztj&r~c6?x#1?o+lGmzSq5k)Z^E>*FxJb8*4C1wX?4@EwI zK9C24=h0)X;*t0yYS5!Iq*JRY@fi17z0I81I`UTJk;>mSDgjUt^`k|Z*g;;=ZgS7vHxnjd^(${0|o2~7>9DoAU?U zN6vyqGlG72GOxKJ*q4u|?Jw)D{4tlmG>R1bm*n)Vx=#kiZW=DWrAo-^D5itSEXqv^ za786TObfnL6pbbU*|C_~o`+_sB?@oK@iSLjZWk**t>K~J^ER|Vj9<1iwztvUATFZe z3Jz-izOn5M4=Hc9StW+^M>Wq{&0T%Cct74md;-eUeg(6zR@t3Cy9KTw6DK4-6PMs; zQhT^in09AF|9nG?H{Re~t=hUATiIk=6jzed=wPvK(?9jXIdY5_brIO;3cr-!w#N$9KRdjb(&YcrAJE-b4Zvh&mOl}ya*w+g3LwpuK2_3_+>J#H~MlpsntgWE zkV)n2xwxxz2lQ=;hE>JTMY|Bg<|Qm+xoVNUi7){78}u?wNH)&k;YglfW8BtIW6^T( za%^LPEo!5?KZ1izJ%NZfdC%iM*P5*|ZzwAvsKcKXwG#GREoxNOkQXNL(GU4Ya^{3D zvCDUpuLP#cr(RbI)d86?y}ef6rUfz;sam4=E%zp0jGcbe2$7m(Eb?rp+7l074EGq) zYFo6P=4>5RPj1tjxTsWub;cH*drKO2OS&Fcf}FYpyA;P`@Y<>`I<#QvuB^k;jgTQb@iZVv?& z48Yv7TL;g7g^SiN}z{m43m`IA-cmF2D4MF;6E;3>=-YWn3^%ixxzsE5Q~- zt_sEgA8OIpXr0?~^nCo)@Jp#aPvUI9<>DNYGyCgtB8rpzhDipSp4VYxO!;mNaV!Z0 zyEd3f$?L|6cUGS{b24~x$EV^KLS2L0g~^o;|5eTv6pDwpD}>rBEt(+!GhHAXNtiVE zmSK*Dei{g{);PzN2T-hQJT(G`>c>&XCsfU%Y&_L%EeujoIkuPe+XwA^4Qm{2vk?2K z(G*F-b_5oZPhl~X(unJj-E_jewywgA&@UypVDWd9j{&8{(P}_*X#Dx@C4n>wt0T?6eVvzHu5iJ z^eXk=7u5@jsGiJcUc<+c#OLs(Jzyq&=z`V3>l^0k8jG;{#{CpRRs?gmjs56`sJJeJ ze)YMoU|m&tFT&c{cHgDdTH=l^`y2pV`=O}o-x%5}JW1KDt5@INJl>$bNQoMqb*l3+ z78g5YeEvhfyxXysdbPYut8Q#brJ=Vu%WB@<@OO}H&ja%l^ru3yuDOog@G<-r!;cEL zZ8jM$sAk@#MW!l7i7dGp3gOcJy#7Wq(0-Ez{bEo$3MI;PfyUZS??=Q`(dgGlnYHJ{ zoU}P{Gu~#RWTIsvFLkLPNOuytuVRCVt6JtT`p%?M*CoD1C!9)B(4z&dV00je4Ob`(Jq$5y*9tUJXq?}1Aj2l{8KC`T z{`-TviUT=Kb)xI%-Cro;)oI_Ibo6Wl_}M=kZoqZ=eMXgM`Vy4=HZq$<3z?G6LwjQf z;jJ`^4*zAHM*9U*UZCS+;Rjy&z1qTqqj>G6$E@^WU`eV-1^2n-wABIFWNk(6tK88l z77~-{^Ef)MamrA88jIN6n@4J)I3)w>VTEjK3U7rGbDp~Qc`ZTC?ja?lw*ZN#xg0l< z;q7bbv;8n$6^h+%ifC&kuSW$(C9gETE<(*{T7SMMw{`TC6=JX|PV*c_(2{j@r|=94 zyaHO06RQJB!g#zG+khe8z%6sXUXyT|6DvGLD-MJaYye}?8RyGad%Z|C;dYs_KPm8K znIem8nNxm6UcQ(1JVs`kG>v2>q)94YSNKL92ev{sPIu&5aK#e(yy|zomC%jG*YcQ+ z(zUK|6BI-zWX$D2eKNWZUcj#iq z;+mQF80ET=eJ8MH6a|RG`4wt(gW;t%YlVk@QcS$>B5V`BCXtNj#p+YZnn@u|e7cS8 zhi*#D_)bY`C}S$8;tkxevEPZ$`Z8FI~lzzBG6f4bN zjbFJ<8nJz&sH1Q9jtVYwjt;hXa|kJWRcpPk3wAX2*_N;B&;Jl${Jb@!UqGVhw0r!5s;fCbc5RdPB_ zgcmdVg`1yrKLN-Ovr*qoK}UI-yh*F)33Qwyn@a7!+yOm;K8`|GwMo%Taw`Xtn`b|2 z8p?WTBcILMOBJxLil!@^bQj&M`?a;E&a@AeKJz5*3ns_RjB&6bp9oGo4D8XLh@Rmn zD%Ot>2d>iD;yW6r6=a7p9jUL?wMy=(>n3Szhxak|-8aOY34HkQ0npAB6Q3E-6f5j@amn9MSJr8DipohThWaR3vEsyXjQUJcj@@0Xa`Z$ zg)dJAwK6Hs6($m0$?JWZJ!>m>519;izYi=={n)hxbthXeJ7d2|`Y5cT3fQ${2fU0I z9Ul+=9y4W9(bP0=JQz|%nV54UK|-m3ffgGIh!h(8wdamszS^7%Bb)4T6Evpr>&iuE zl_d*`%5z!NLlR$l2-2JN={!Lb4d8xVwxAem z3sa>$4nErC%#+ykXsbK{gt)k_Z^R~GQO$*ERecc%DQThPOw~uN-F?+X0%J>bdpn29 ztcYkdk&jzwv(T{*LK%kYqS}r&X^fw6Je-;x)5=>I@tTj^j$-0D$6(V~t21V_XRC{o z*Y+;RXNqGA8k)@*@)rzle;2YaccljRNGNV>$-|=t5x?~9t_5>kQqg@G= zyOb1ajg^uUvs6BU>v@}ePvdG{M`cbv(aS`JBF(wcBv*q&eI?f}O8-sdf;pxSz(SMM zv>DlBR$||_E-Zwfp;hS0A43XCk6N?J%1n1=2N@-CWZq*9CMp@yl9DAA&y3de&@7dw zgba!GIKMe4uKnC%G1+R?#D{e@c95;If{%{RNeNr2f9pa0NXwvx+N?ilVlSy&gdncu zV#2}2ZPl|nmw&FHfGRX3)g;ccf8CM01RINh_cB>eL_cRcCVT<6#kg_{eHW@caQZ|2$Ic}c=1@gMfvWH$@Z;H?lBQbd{+CJ495~B$HZ1VCwxrEK*n~Kts zM+lWBJPver8kV(Cad;c&l)1RDzuWZ@0{MVt-(~l9HubvBYyD2)VS=AVgq}-RSzjLZ zb1@P+U&-ApK~u5a*UZmK`JSRZxtT{aEAmNpB|7IFx9cW?73X`j&Hb=*bl+{^FGIYf zQTC9xM?Q81LY=QiHY(B4m!v0v@$aQ-IP2}0aX5F^rqS<4g#EQs)k?k;foE)sZu$t?;>E|mp+XLkg781U zfMxL%bpW+RCQ5^GeM8@rSf8mx?8Dn~8iegQkGSqKf~@lT0GjmZ_PO71jD`S0Yz3?M#g_b ztu(7=nOOgsIcNfgqCILOLik)$QO{#DNDNUW31m96lIX_<{5)4}?}?qb5UWqOOXap8AnpVW{2 z0xnNKIxD2%UAUo*7MJ7g&Yqol%MH0rY@lz)yxLbNf3DaztK;?IRkT{n^bIR(diLHQ z-nTC|7V3d0UXaBUgbe<>$lA#UVt~X90I?#y_R9YK`BNy&3I-Se{!L@$crC^L^8r}= z4~>QSwG#OMps~Mp+Wwz3=082h|0myT+vopD`%|R-Uo@`&o`aM1wWsud%L6g9{1+c9 z2kU?7%*M?5+BW;Y$Fi~fQ};!T?2hyO`y1ifhFKy&A0NFmalEefBK8%feOYhuWh!R luLauFfAu~y{?+=7WNY`@Dg9S$LEzVxY$R%GVHpvm{}0}!B|iWF literal 0 HcmV?d00001 diff --git a/src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/freetext.pdf b/src/extras/itextsharp.tests/resources/text/pdf/FreeTextFlatteningTest/freetext.pdf new file mode 100644 index 0000000000000000000000000000000000000000..36faaf32fa5d633a346a73bedb4d56b724c89276 GIT binary patch literal 24541 zcmeFYcUV)|*DxyT*syo8Au6Z=(+N>Q&q?pSDry?(2_zv+v0_D~i=yJ72#O*qb_5lB z84)`cY}ip05fw!43C_GT^ZUNV;76-azbR>|}J{E))WR2ty%|m|y*Y6q_|ZHjph2oHYTU zaG7CFjm@sNT4qh02q)My3WwD;L1NQ8G`5LwmQ_tuI5ZQ8Q=s`c1P*~gL|`xo91MvF zK_EgV!hv{)4jNBXSo9iGpup?WsQ-ilLHzerGzx`5Bk^)*o^NVYR1b|s?IRZT526(| zjl~g&hI;t$cIqq+dmyI0DfGl@;9P}P1Lte()_9vrV-Li(KVfOqdIe~8&qP2?EFK#e zfk8#X0gJ^7O%87#!nZmgIsy@Yzt#7SKbQKyAlu>p0u_!#1>*1!D1tQ}!U_pz=+*X_ zK6Lrfe*^Mi_a`8x#-erT0+A>zoUAuND+ni>pw|*LDyv!(6=ioo%WLl8_QS3&?NKpf zAhBisxld)gYxf)PoE7ii?>}oFLJUk@cC@X}Y>9gHnX8*q*QKs5j7?1Vy(qe>q1^tI z3q!#cnzd+dD;jq!n;38xVVpu!FbCf+wD`Y)FIX8g5g3cG`# zQ`iDAXt-~v4=$W2rHDuzm{4!l*x4Ev-)dG^xB`|C-p;D_A%b|N!zU3!TfC;dSE5%t zboQCyNMs-eg9$`O-~&;(h(Ht;5r{*f0>n4J*e<#I1!itr)o@2jYF?e1fnp3!k9qBWPAj~AIOwIESZeN zga_KRkREdbA^YGXniq)tn~^@Q{YeSnlV=Mg&2XZ|saI+E6cGNWyrUpRfwKeA|Gm&} zS?>}Gst2#AEW?#u?;jL6zA?btJ@Cd<>Y&cNRkTIij>{8+oy6bB1N%)BtA(fhC@X?g zq=EiRmniRcZ|KWCf0{=my?C_7*uB08`?)5&^@8ki^{XRytF`qBcaL}A{#eqv!Xfor zgvpf-{P6Ddto{S8oc-EyXkWkHQomDAV`4f}z7ad#`cW3SapO+v`I4p&lNYH=AB3Ld z2HWqnEldr<5yo}t(1Ub4eA+2ujWkL$!6j+?Y8LwH%2WoZEfdo}lMvi%m@h zFJYyZHe?0Y<_5^F4LgC!SyRfb$sYf7`qTN2ftENmy%kJ>v>x7#(zinoA zKn&bC=jyBAT+=EPY2dIAs~S3X=$3I7f5O%~={sJR)4`putzF%D6-}An@9qZui`N%p znm?5YzAKTij5DmKE8Wb>#)CcAA%-j}wyr1njhC4>>Qdhqjd=fFcITz;`^oCZqZSBS zBQJVeM4y7|DszA}IkLy5x;^l+!5x~$$v2HGDbEyjIB4!Nx}M+t8}HyrY)AHOjh?uTzLEG z!lB_IU572$VjQT8pVJ{>8J>HT*7c$_vIAjkr*W3)-i`_HX7)w)xLAHdSCm?8Peyrv zzG@!rKWnw+DH8}1ylm>3thSBc7CLPE<3!Wxj{Q@*I)3kgSv(ohF?4RP5sT2VooWI* zBrc-%?Xd<%@4Vs1 z)>2dBYCCmVk*nA+bny9M&sWISJXMMnca(I*?G368V&;&S;W2&Di@z_~p}f66UmCJ! zy0d$DzfEhy&Wh(I&z-q1Yk#MEin^&IdS5s-?AeIe1xJU@LRqkTJ0IzDcTMS{cV~J% z4gTalF{x%?{gOVX?H`r%$CUS2IAY{o%|E#Ap-1TF9DIXg=^asRq|zzN!jV0QXI+VXKj_~RySJh)g$GXzBkM+TRTNxw8j zO|cD?&6v&EJ8o;>obi3qrgJkU1P|oUN07j3HlBWLhG&L{u!G-gr{$KkaKrH}a!wgB zft~=Tq@%MwXFb1El)gLFnE5Vi-gr*N-7HtuoXJ~5=8RcL|C#^eXh+`Z8K(t{x9=0@ zlAj)|h+IY^WpB$=u2g0#S1Ff1!=B@fKasXL?MQ#lt{HFk-59@POaORuhv&x8gRFy7 z?rZKNMpAHjEjQEOoNFBYx~#FgX1r$RiwQ4Aya;$va+%+y0x|a+nm=sEn)EfLYmz@> zULLD_Uil!rSU%bB;4Z_@*^1Ih!21&9K&Fz2zuvMt${vR`Ds z!dy70llvd)EPo+?b!avsbK{4r!kF?qN#rCJF zv4yF-t0rxiZ=ZTTLUlN9^{1%kGlTc7+CodCt-Zt&+`CmHoO`_TU}aC^OIe`Jz0Y0Kb8gXe_44;6&H3mq++DEm!nKKOQD^O^f+ zvyIWJgbT|J&s8PY@*llCRJ1GXvGe5ngsIul`yLH0WtUbq^==Ak32s4lja=bgQP%tG zJ%@8bX=1|de(zpCJ$mian&(|Z=7sFPNh^4~MRslCwO-e@`}Z93amcN(p|+~Hr$bE^p6;)E z`a*-~oq#TyqXNoxl)2D`|YDCbDGDJ;@FQWlAkB@LC8)RNc8*97KA z4jw&x(7bU@+pe!S9x+xtuY1L6*22<^ePo?FKrO*c}EU# z=t=y6ISq?zcV(nxY@dkURkiC6ed57y2XBJo6|48bqS28dW$-hY?Fhp0%lg|NL<6?X zs7hr{u*+gfH>~@~{6bwbZqxXsGXE08ff_AEv-L9XYQL9_wb`|nD>g0o{ zod?S3#Rkglg132Z7Y8I~zbtz@@5uWt_b)uSd-Ab);Z47_oz8WQ8Z~gliG>%xa*aiR z`JCe6(>-S@-)(z){G@i_oQ1^q)K96Elx3717b=qDZ%@5-7q=6a5ni!2?fm}daTlzu zPreZ54cPsLi{5_hTjz)|_)pI+d>dV#({oz2XLUm1n~>J6O^2_`SIcwnJiN2&a9+56 z9&_H~H;Zm=8F_7F*z`?p^BdPRZOksYtYuWDUK_M|6Mm~}K?8Vx*{7scLsm?YIHHap zti7>i@4me?R~Ba#&;E4Gw(CJz%MVf3ZtY%t^wfkc31#n>x30Z2sx)W)oVo@2H;3xY zWp83jTGu}>T37yC!mH-!7I;n5@q`!a+O`bul+>m9!{qXLZL=RnzDcNQt?Ig~&+O?} zy%DXtR#n~eZ6Q54lX42D7q#C0b~k2MS!3Prcjs1?tkfniKT3eNWqvQ_ocXPCS0#*m zko=ZXM5$c!ea$29{>F13udKQi9Zj2&8*tJb%Cp;Osl+f_M@@t-Nxzknw{nN z<~vR1SL)ZbH(mPr{DRdryUV9HEpE+iQ8ivjeN)Hz#>w2ecDieR_a6=JU~|mN$6pga zxBQQ>3i2PpO1slfP&gDOtF}EZwEv15|Mp(nJ=$OH>pwdG5%~S-nM2Xe-wrrYuk!if z3Y#Yo`73t(bJX8MI7$QLf=`fHK)XW9MzDxP5x}DnK|n-tMet>Gs@$Zquw#`dtc*^< z>lJ3PK}}`L=@ha@hSJ5V&0>$3z(*+2fB*m}6e}ZwN7t%oY=fH2H>zm@Q7ltPLW(40 zw_b)q#w*bvHU`6>=;aKtneH*hD)ezS8wDp8@Z;4Iw;k;UWCWg-Ndyoaq8s3obSx2> zFOyP0qk`ggsj0dMElof((DWi`y4J)X7~|*yyPhGy=xBOcEX&J7N+B33l+FpkGm52b zlZfKh$xvde66H3^rF4;8szX3y_-cw6qb8ZWe6tB7m+)zFiOHg%@?%IK8=;Ycu}ZTV zR8#pLg@lfT#(G62J_VY``;U22g@lh#kRy0x6doF@hUSs&e5o#0ZuGUq@oEYgp^)I? zp}8t0njR}hnc`&glNe<(swuh{5`Z@=pf%*7@OJ1uLN%4{qd_6F(2>x3 zKyA~X^FccVQ?Byyl0uG`queH`lyA~d`E(V64aouMg4P3C2eKD};Z&f+L}=|Gyx0hp z*%U8F^2K72i3HK3fyTu`@<4)QM<+A8O}zHGkZee>2Du22g4P>a1HMTj(dkr3wpAwK zJJm?JQ6^A#BDwfNk%LW?Q+Rp=29i_~ zQ^@kLi6)RQ5@FdQK85XIVK}^qa4v!`6`EM_&{|?u$XJfZgLTTxu_lP$-dLhNf-4LM zKpH^S0tx^O=L0+uov4N0O^^W$Ef5b7$>KldO#YXg@+D%jjD`U1VzrvCS0IGYJrIKf zbs~Z*f`%Xv6+)C*DYa>!ej~!dBe-x59Kwj@ipXRIox+A>fbE53)gc#a|B|;~>xaM! zg;Fs>CZR(z$&ZC_^vR!2WicB>WV%pF!V38m6C^t(Cp6!q5$iZ2#Gkf-O&1f9a%eVI z$TahHkbH4TJd#F(bbHhknOh3Un+j!8LGs~MNZ2m9m*im!=_(ltZ&0Gh?PJ(N03oHY zolqa717f|(!Z&k>G#A0*P|3~sct{@fO0wI`g8o!!bu6SOP(LJFQo2_z<+*4iokFAl~l2bWe_1b5Uz3wuN^Nr z8X7CXcv(pIujgJBE`}G2lM-T8kR5SBbQmEyhH!`U!vf(&wBsP$y(%=_A~U%SEFs`x z5doK!!t$`ZBrhB3>(gRb2A&U&N(I?bIoa)ka5pNX^ms@wkt)c3NU3CllnO#?&WG%U z4k4Fd%`yq3CunFLw9vZ^ph|9GAvgpOqD|(Zks;Yf^Rzq(7P7Ivb%%JP2WgQ0nPOxB z$H#YxI94q*vDuKGwCgG#vP&`rTP{JeB~U*JdbbXNL~x}hyjJGpDe^CUcSHOoBYgHm zW)UOgQVu|(0eUS+hV+vU=@%P8BmGn7Fj@gc?2)T|vX6%hw+GT|xkU>y01^feSy84q z1qKjn!8m|w1#~`H`O{|k^c{LHM7Nm?@rLYDkRe+vaht?ONalRJhnNQKM+hQXjG{}` z7@sUca~&!QJ|0>lgbFE!=F_P>lMiP$WJ~ZK5gPQ_e+V|+*N24crc){U*E22&WVvZX zAf9DlxmjM7mPNq0IYh08O#s|NH(-X^SPoH!QqtZhVZ1553z&5{s}xfrw2c0UCge0b~f1h^r;5Asul; z76)JnNN&hxM-WI*L+PW(1ks`gWfHMf3r1jkMu`ppGJwT{J|&Qxk&r^Z32H!>KqMy8 zsB8fr;RE#_7gs3(03TEUKzNWe5dnhqfA8YU(4a@{gCTAQ$&mQd^rUfFZbQH(+llU z6r{1eZTG<=(9{;OslAQx%_mUQW|K+nyT!M^&j{(aL*cuH|9YQNBG##(=OEDjK4=dW z8x+uEkO+N1ynyx~0nhiG=zFeZLHpjn+Oq$6-tHH)PX&oSKL^^AAb*0VWl&hLG$IMh z5o&#UfmTw)2sHu8gZO9j={=1E$)Xh0DJ>A8zP%5{YKP+cAX(b^srB)eZ6IOU2APAU z$GHD%z^@yD$|v)Bkj@veP%NPl#nvM{kUaj!u>T89GQ<;T3;cBvy&@j8T)vC1WJ#a{ zf&Yo5K@We)Yx_9pLm3W@A{vm;Ez$Tdc%a@4@xy@;K~oHhf59UNd`#l%pbv)~5BY6u z19bcA0_8qBwUDodP!X+8CR&YFd$6%`2`gTPYUk}=BO$o|C&vCg>;KT*f64o=(eds2 zN0hlakT=H^(&AYHkObL19pr~1XykVOwC@vYDNU zgZx~%2hs%;7TVi> zki`T5w#w4Zesa6L{52kA5yUb8k}v=ut75Pyq)8_ITfZQ0?|*SIxa|+1*hlX9HH3$x zi)a*R|FFpZn)9cEi2#BY-~u2Ipzt8WPGA8HNNfQj4Pd(foX_m?dA`jr0y34Lyxs7- zKr28&04gnr2BvAiz_BL>@^9@QonVMKS>bJIK;PJFXA|@_A$yAf|y59^_(5 zRG?BzMgme7sC7}8fSd-JwGxY7hMFH5Cpl4?glJYf(~GCfLJZTs%6*#n~dP%F`0lvM8E({8{iZ{ zmKEZYTSlbuSPsCeCGuQsE`YQWNR4!Z%WNblt#q%;Vj{%Y86=+7LNFj0 zVjwn-U?nlkKwLb*E@Geoo0s6SGih2omVhKN6})(WfYmbXfRjdmk(e-^OF$%8Sv;3p zMWl*Y2Cc_JWC1J`&+8@f5Nx^@3B@s1wi-ZjhzcXy&f z&_7WGU&)7VACv=hdG%*_#OUP2lthgn3vIdYqGGrzjjS?lO;F4`L2~wvF zC%X|+9$#%DV~kRpE=E9xt7K5<4`n4pGQCdkq_9OYn9iuBh(vOQ+svmZRdO`nN}}kk z3MkA$Q(`d+H{WKbxOqyB+hL$!tV+Aish|Qh6+`D1P^os6)$L_bxgsbJfuvHUfZEJQ z6R8@PhOEN^RI^oM0>fd{cw-F79RZ`Fj4>t<2B*TTTCxBHX%v^%OdyhITtG)9kZClj zNM{vLIkXtNp6;QGX;zxv=3%O7E~|k40kN-v_*g<6w> zAd%8lDihuVMfZ@^)p-jxfu+a6-h8s7(#8V!edr5 z)Ic1dw;~y4ZJgO-<1$<{8(Z&)Wnd9Dguq2+5{-7H-lJ!-RSqHn2{NTJN1O+(W9nq_ zLP9u!X;a1H^btlT(&{t{;8Z3Y<6;XzJBz_{p}ZskOJsFx4U}+J49&wZ&<(6uy9Y^R zu~`V2H^$4su;3&F!^=0Z=@jRMdXVvLjn z@-QNzp2cBlv7pdI;7B8|PND_NG04Kz#5fNpJ_5%SI&7S9D=wVqvT!M)h*+Z6z!lK& zG9gOG)c`OW5v%3K0Wb_PLdQjs;8p`%&m*t_If-EAanv9~M2_Pr+#t?KbMY*6f->jy@A(Sq@S4`C)VxR<=m?l8z`2x0@ zP8FF90)>elL9(I+79_*%6M7_@X*N3bLP9J{W%Ps#d33hGh!P6bZVp|9jThR~T!4h9 z3$bi2S`1i3R5C9fNur3vAm5Cnnneb(AcoAOirj3W6v>Gb!Q~>JNx&7e9byJqj1;Tr z5-9doiQ`NXJW@>(W9d>1S?iQgkund`sE|lZ@_4e93VkVJO*W(iAy%5iPLq@DgZ3m+pB!@M#mR1>2JaWbx3Cqz;7vKX;mAYrIvPSC(ZailVs z!^oouL~@SF#Fa<{a*f)|l_&)Ac%6kS(Fo-*la-6oOB5V;EDvQ?C}PNQ0!mzr!l||i zQSlZ99B&t+JWeG~=a5lQSf!2*R1N~MpaAHI5vhP)x~RAZY;xMrfW3naK0tZ1l3^R zWN0TLhCq(cO1-)m5gBilV!#+P9pDWjY_NxO*;bgw2q<{USfa!zgz@9(G``UiC%|CYY$Hw~qR|Bm6IURX zVxd6ZAdpzFDuxLykz(jNmYJ!S)9GfOImV+<&~0Kff}ylwT`CLBtiofFMvI!E;nBn6 zEpAkd9t#h*Qp{QugG{w56?%FcLt=F)4C*+pIhL$2y2C}7ScTb4iBm9RohXYkE=C(i zW?0<}BRWoDj-xW-xN$CqO|5Xo+Q=R|f`KI2l=^t4B3x&4E1Y^90NAM#SGbL=wW}2# z0gg$qd-YzMjc0PuJxCHx!fh!1xt?eX#9nh2WG zqjd5mcmoc@a9Ra0I1V4~gi8Sxi)eRAVn9p;J;vp55+y9I$W5k_ymm3utuj#fb|uk` zpi-R?TD*tprE~0NtjAzrI3nyQ4^GKqt2{`rP|9|wFetB0$z?~tFbJZB7w;fNAe1-( z7taI{2%*sJ;M0*Tr&#EK5-}#J1O=sFkuai6&Nf(460bZ$9g9Laok}g+MMl$XY7!eI zLF>F4t0N*79S+yB;|X|-NT~C2=t7LcX^_FVHY}BEgmWY$tQHMrPaz*P++tm$NN z%2)&^Rv8{IwW&Bx9FC@RkTfV2PH%{JaPR;w!t0W7iKYlC(+!6+SP^cEHx|xA;8{$h zh%43L&1e)1u3^AH3nq?h#K2TB;bOSW0z=0{fN+ltF0kO^omeK^;e{(>;84_y69|nk zqK^EZxe9ivX#(SP)RXalxCz!Y4PQd@xI)V9m>O?RmlI!W%=^b6eu4jQdxZQ!ms?e z1j+-6+jH`6D5uBwY9VhFumWl==oD~xFd>xe2dHd1M~GFl=NEZUZdoQZ>mjS-qf2f! zK{@z;<}StmV;;$hH7iBF95IwP68X+BBx(o-Xoc{{Dk)NtMIIhQ3@7NUaqT%Vp+XvK zf;cCX8|8Lrtk;)^68dtc0ye<;D++)-Z!HJ|Xk-(Vn{`7uZzyMqqWW+$$0Fqr{c@+$ zBGAXSW-VWul1->==pXIo%aY*5R_uQ8|vLSuBBNFrf&#(T!oL{Ao z@sR!qIYcAZZj;-sD6v_N0R&o*1CSYP$aKa7WEr5)g5gkv1o0N(kH=b|T!Icdhk

@_zaJUFq9y1NsOQ7b{(IksY5W}a#NmiZ@DK06NC$Q-l z9+F)o@amXik^>{a@|p1@Cm@K>F%cvuMhLiB43Y~Wgw9sQB)3(_bhA7pgbE6r`ARYw zA(Df9E16;yDM5ZbnMxC>K|YF1)rvGasEm{@5?Mfjhs-94uzVqo%+rb~I+2*6o$H z;I9hqFzD1CheHR3heL(e?PvVHa^JtpaNEa1)zunQAhNv{87^>W%;G=kD)+E*TrLBWAvLnH9Wc6e-s8LDgjUlkqGpc(_c3b1HR z|EeHwuM+-~oWCkzBmQ@aV53w2Fq}d3O|18>j?7;%xB9#B)KEJ8)QX?nBYoyFjAM6d z#=yFsOrX%S!9MnHPVAMsNmFlE9>Oj@;F`W`d8aSu4V9lApH}aBep;G3ByVjG936{2 z%vK|CS4Oz^n5Xk(J+{?#T95y>Ow94V{Wj)K&50Om-HhGEg7is$oI7S6Rox|RTOrk+ z90xC&XQt$b%I+Q_KTg#2y8Ae(@*HwZzY*WDY1x>{y`s9AQ}<2SvFGyVWBpBEPTu)s zc-{QqN>K6T2@_op=ouux#Jq>~L6$`iR<2;39oaYSKuW)_GpLu%4WkzIJ&{ls)p5++ zhEa?Al6PDR+sBCBV*44qI`z4}zJNQVK5m(#&GGxuqxuez)!pcG`NgU^|C3se zzpBWgD)V2hKb!w)=9f1JB# z{;{^>qG3Oqi^nAQF-bFb+_Zor!aBXfSuS7y^7HLU>JWC{9)+2X0r_@hP<+rH>f7KphHk9Z)_)Hhn^ico$?wJKeiCU!fxM> zXt*bg91RQG9d)_8s=VTD!Lr9C7pUF4=RUi&;X<*XCSVgfB#F5-73j^HSR8eG!`Ks~ zpFQSQ%&eHm&(_E9bQr!IBM+anGZr1krGx6NAA@OrL#q;Ty-BNge~lV@qH{BR*^rC$ zvTA=-xE4EQ{_JnaxYU%7iLv7tc-zGfdxF;vUuK=l2~NrByt&KfPAk=AAG=lezSk?F zTi;ck^xe3A(u>B#P8EJv?bGj1O%Zpv)5+P1XnNX*cXC}p#r6tpUN>`n-w$IfwWW!r zUw(AGm@r{spD#ddpWLgT%c>hXUBtIOsBVs&Fppb4ebeI=-szXWZoB%~s<|>V@egk) zt9t&{eQ}{f(}pko9kz(Rs6*YTxnJkL`v9y8+)+_faj3Z`IaRX#!aEec=KkUR`wCBP zH?L^$FZ`-t98tVGqIh)}`rohLw3+Y*(;pu*{AZpn88prJQOciaI_n;OOgJ{vug8p2 z<<_(1pPL8X=zfZ}Xh!*RN9TRXS&8rVCu=s`W#&5x5g{Ks~v^t zv+=j;JsV(uWFNa3S~TRaf9Y>y#tFOissM8(Dd%qvP@Uh1y?F50@{QQB>l4;zXew+s zf_C&AusnVF&E@tkG^8*9Lnz3tM9dwES~Ik1*wwMi`;C29(o?!Tbcu-Ggh&W`%JZFaxC9UGsS8Gw564yAf+k z?g60%L*C3jHF41lkP7S2YtfeusUwL2%H-`$akrw_gFAZt`pc)SYwDf1`I`R30{Dy@ z`vs@&4SC&h@Xvequ4XS=>p#~v&u^Yz$L0k+-;cg|41EtMi(1xraQ4Z*6JI^<`lMuj z9e=oA7t64%U2pXL-S4{p&<@nv#C-!-oZ;7?Z}gqpA+~Q|k1HQT2dzJF;nTG9qXs<7 zF1kE2XjGrx0a-W4;Vxh8F>GHIikWk;rm)0i{HQVH;tbmov0@+ zo!5xjBMUIE7;g3-Zq}>~Z(Pr*ID7t~*YIRwYe~-R{DQbJxT&Rh-}`#SgU1zz>zA9C zDjsB2oQNLdxO={#@m7VvTbwib`c35@{SUNGQ_l=IaC@0)ZFqCwxe*sfMD}{SYimK{ znKSERx+2>W7f`dSMvvSL_g{%k20clUU=K^Eu7xJ&+q-+P}?Wn8$kNGbbs^Ah_xCbAmsy@9K`epI{Z)=Bsc`%NR|C*rsgx*;;FSL9>b+qb}G4=hZ zq=xRZ(ciwT`SF(ea!E za%JA8Lr3G%KM#E<7WtYzNdgtRB)zou$=V5q(f_m-<0IVoW0M_ zzqatrs2z>h#?dD_TO!6Mm0r+iOCG)C9LqkQ+@B7!v@GBHYNoY?jG{f@4}ei0*v5bP z6trjTs|L+P+Lq_zbHaMnbh&HNZaegSA+@>ja{0@9+UfP$2?%Roy!FAh54ZYsx+KI> zZY);MG<*nparwh`Q%aFlA9cBldwpFL-Kty~Ci&>~3hWL2hfh>?nmhK(wCAQ3)PCBr zq{ftMclLhmf($e0M}>hE8*{dQ#t%6A3cp2v=vwDtqiYl58+w{TsX^X3{RY>XQdTgv z>ndF_<8S4!S{72K^2{WV{k!HRz6Q zTeJ7a$dCyWbB|iTuf|TRpOe|V<#-|f5Z^2&w|sH7tv#_Mz2){x-hpkJxUa8!m_?tZ zC+|Go)`Sb`6M3R+*L#1}`x6-P&89ZRp7$q8f}`%7@s_rQi-(6yzj^`s1;C+C`$ydw zb?1ViRN347u5J`I6@MxC#EhKL%Jm~&6Shv@y!m-**O+&gk+8b5>b5*8RM@Aylp)%Z ze!%Z&O$Kf~&es26dV1YXD0Z&dq+Qm^xj`uzH|#b$zW1tr)+_g4GTOo|509=o^YRa5 z-llMSP~Qn=H*aR)mj=zFUCqJ-2K}9p&Hs5PT)U9$m?QKMGSSoqr^G>qk9m>UYI`n z;lW|))kjn3rmS6bHFp0W`}04X4?57XX7V!aY_`pB((hgNbqh>gNN7eqNnUia6VV2{ zQR?@&>xgGq@EEt|S@eUe6y~-I+t0#;qYL*G7cS(Z-#Z z^o~=X@@r{%Cp(|;bC3SWSu{@Qf7|4sB9($x9 zc?oOzlYHhLqn3U7d1wH6DO#%B3L8X#bZk@_G=h^zssJb4=0qxM0KoxvZ=NO zvz494+0jN^u)4%C$lE;W*huuKu>(wn*T=md+hbzzoS>}K1>BS1?1Ezl>DOtI@|+^;Ep< zv;DoQc0$oMQRwKOW6t!rLLH(jy|iG>!j+rz%otk8>ynBEyKD!>Y{_yKv}LfQ#2`ib(1AGG?ID)aJtS%MDe1L$H(Z!`?`!hK>8}S)JE_H$ynnOf z4dtd)H97cOZ}i0%>R~d@;golmzJ3&M9ed&8*NzVkf?R9M0;+~2JKOHDO)oeklcLKIC~0vPC+rclmGLb^XE{z!+V?@P{81O zgS`zOsiXJ@GWMJvesoxA!jL;H6TT1gEIzJBhFw@ao79qA9eQWYtCqUX^B6~2_rexT zN=RsEtlb(ioz`c-*gVtZCI$NY80XXCTTAg7RmRukX3Ew1i6aNsEeYKT7G0kZIykN3 zeMMviJaNvd;b%KN8-8Q{t~pcY)@}XKP+NS{{H9m|e{y8*?D6B+`KePbR^Cp@kKgdP zLryO>?AWrN=~KtRU8xBlT^BB)YkzAP-Vpq~gLTn$#LE+dx6kRit8{J6Ds7*HHBpR( z-wJ$lMlTwXrpgE^;y+CF6Z%eLF35gsMZu<<;D*BbqD&3PxqJV z2W+}B_yFwVo|t!^dhY9G@~^o*wyy8g%d-dBmQC1WK8cu6*KfhNX(1!ddsI5+ zP7>qn?Po>Lx_`R+%=j#XPc@|8q4uFy4*RiOzkKo;?DCdgU3=9BL}3HgY>AZ|37CV- zXYr(aUhV%d)?Ki*byCle*W`(u6N|SjneATYr|a;?`D zilTj!TN83KTM1H5);_H+wQpL?vq`Udr{#COS6}UE3aMfZDfz0~^^Mi6Iy_saJgQp6 zN{~5{j?n8XZnlPPymYv#dlUNMtVh`kvae>0$}7n0T3x&B&A|!a9p&RT(Q&_)$W4#f1>K5Q_DMVPTW0IXs@rAz0xrDih^*MF?C$L__-n^r zX(f)7p4YAY*8WT^r(JkDVEUwK;De2Wtgv&YgS{n>X|id{;+`9KCs0s<6^95qj&)PSf8e!KWYUJm5gFqX`r@G z_c+^cyT(PaU`$l&!eeBnAsoOKC+B|IE`tKVa zI5!U&CGI@)UQ%wGUrQT9+8W+G#1<*~T{a+3Ser5R>|kkr)V;^iZgJYEjB>&U)QHsC z!T$QFG22kz1M_~kYA0>RFFgA#il6*FY;2!ZaaZMwHKT}0^~`Hy19FPfhfEy%0P(8& z`e%0BsL=YdH^zMxha$G$j|(oJaVNiiEX(bZiuSL}x4**yLh(*Dyn- z=8c;fbndKv-+uUYRYda7r5~0&%AwROid@Zydq!6#BigEOa4zoqHuK)K<&7iXJbtqN z&_G=Ayt&%Jr@YaWpGy)pg)mdHFI~B(J1!b}s(bwESvd>FjogM;vzq17nu3c9ws(Gj zCN8$n6&I`-9nU3oozU_2SdL zi~~2)p6Q5TJz%+Wf4^Q2`}lHRgDsj}tvDhJ!^fmo1+MA{zHukrzh98Ix`nUYKgBv5 z58vIo^L5)S(i}PU#3Uyf+xem3e%?4?3wi3 zQT^i4sgqTEf-`T)M%G{d)NkYwzdkFfX6Qfd)r`S|?#20Np021(!;OPtv($)5tRx9FQz zoVnECUL9V<%_`{jHCr{sUw>l-ZCEy+oG?^l?y-AJX-3tzvmZx3N6Bi2lEB#MVO$<|=I9^0er&qto(|h)|MqHX6z7Zo8R$pI*QQN7L7=@aJ<(z}w<>A~s8vz? z(EIms4_7a)KQ+(r{OQcqkJi_*s~#W%gVyXU&%gQ>^^|k4K482?{A#ChdGVVwNuPQZ zTpWa3eqnypdtEc;)1e7xl1gvK7M?B+ZrS8d`F!!?Al#@)*E5#D`Inz>KY%VN+U}$b z-hV$Tc~8Z9t!_$wiG9!e)r=PU_Yt?hcMITO?(rM?jd*|luxT>v(w@Z|7Qep$r&Ucl z)W2S3zWneOF0_(Zwr2c|jDeXV&9|{jz82@SK1ss1RtFG-KUc;EWu-Betgjf8HR!l7 zbbU5zng7cD-K_)dn~SoHSDw#2FQbo48Kho0iWbszcsjnMR(syJVK3(WJ<> zt__7f%gm|wmk(v?hkdwm+4SHUJOkw@&%KAceqiVyn6t|Z&gw4r-BJuT?wx^H(c?$@ zwj#ro`{f=k_9`;-!L6`w!=^kL`q|$rNqG#*impo@a=hpS9BH`zV&RLURh|9r7P%qCl~ozfyKFXhj$8K|w&&gF zK|!-Rolp%ZFM9cV_~%We8bvW3-4oUmwq{vA?CO!)6Q)gywhlzHKaxMDZT=GR$n9%> zCbnjLJ(V+TY+A&%1zu?&p1f{EZr&+%N{-*iu~jH#{=3(rv%}M;?>)&~xN&}Y`ExK* z-(m8?)p>=ex}HWQP4rJdBHpT-{0EY_TkcZ{4l zL^=c`N*rF{f95OW>-W)_qnd^f>(x1O%*hdxQ7e9|+h=Gj{MI{gD)VVvc&72{WF%9olXFd-^P8Y zk9^YylN4GqIXM|U?|RD^ji%2WMX0lU#hlKaKZ&mLuS^|U5|KZ~o4h6U9X#;V-dB!4 zm>5Rblb|;v>$*Pfcebvt#(01n=_ z7nh|e3B&Z9t^EdfpO{AJSaFzlUc-iAJq-`fzCCqdWprg-v-sYl%z)e;Cve?1t?6u> zvUyY2$>meo1p|ie|F)ey7I~Q*Q>(7&PFWWl)s56FD*G*E&d+-2Y$e7J2aF~rT|AJ> zIRD;$x!cn^bnjtbhmoE~Kl^$X$$LT=w*TO#Mo-bb7_{TXi)BlsA(Z{{uKYcNH$FPE zyRM0QeOKkHKcGU<3+uK{TX(E!#Je}EMDOh9n8~UI^2NLFJ`h}|G&js1l-F?wBDK#) z-Lh4Ew~E*|m+14k=|$Qp@KKY(w&Y9T*{JyJ$K1Ieu9aQBx#{H97I@UyL07wMuU2P1 z{M>75^~mKT?KJ~TQuRism|)cYFU?EdycCDuJ%Kp5AuJqD>3j(7(w@$FIC{gv6trcElKo;@<f!XJ{9cl4v)M-Lv&dsOgn+k^KDWqIzUAr~6@ zU#uB<d^%ZZrgDASf|k5E2tuDmiFRYkwKa+N6Cxrx28 zb9LUvef)FD~0`O$XKeeAq~=s;)n-h0dJPQxoSQU!m{I-MVG?b$Ro z{HTI(VcBW#cd&A9p93Y4OOfA0YpS|T=I`%yjrg0xWGdU#G*0#K>gM`4!ycww&orFx ziMmJFbiB{-ZWB_<)27hZ4E@5B9dhZ|B_vcA^0eSVztt*H`T_j@wkc6#-jB#WkG_WgtUbG?^!1t=ndktQa{yIBs>w>+DJUCyLH9 zalh>iU$r;AJP0{)%DH571>dvmWm-MOo2W8DaB=25qp&lhar zRo~msT(HJCIh4sso?j>BES-Nfvx8syv*wvG>xP`&cm*pe8TV|*`a~RDA1(f|Xg-H{ z8Tm5fWyY7=J#Y2AJ#+;2xvwj~}G%zw|*0s)QyoP-a$V>0iQ)Yr2DZk9p`@c!(|HM4PUWL(ZItZ(!+8{^ z5^MFR)84XCTT>=^$e>XjYp15wcH(Zu=7S_vZA-lrD7!-;Cg-Y>YN&mVMp0f*g76(i zp}LcfA#T;&-9nbMiJHBU;=7Z~^eoa9HE6rj8I##r1|PJSQaIA>eo#PkeZ}FM3$voC zo!LER>$Q))pTVUib|dZzYn7QoMMO(n)=qqa#{s~&_!A(WC5_wHi_^X-gRJ`kkoil+ z(+@_qW6{M`xV#vAW~H0MG`6k(6xOxE9Jv`>=}kG4Y%}{9E0|r;6wMof3^W|LcO$|A z=2`Q78RGDE%^N3o0`D4_UqQ-B-?&jF>Gku3HNyQ+h&C%7;3yuzbgp;9W6(dynAP{E zd6Lrnyv`FCT}DU=>30iA4_9JEC+DJhNFenIVl|A&gcD!mJKby>%b1;`q;XYiJVC8|2=}-ZZJsGC!^hdz3d+h~INR zSdd$iGb#Ewyz|;n#AAGdv1rPf^!GCPtV*gM$JMb|9~{^uJqm&;9@jTh5G*vxbHyM)S09j#@q}hDeO~IylCO-J>8Q*bdodPWnS-ONd=f`mhXc0b%Gms7wy$)#z5~VAq*tj3rqiriq9)A=F_>`E|8vyiri!r@sKepz-jr{OD zEvlu(>8X8=R#B3<5=+eiM#IkIQ>g+QCUrz=Hpvy(x!Kul%WL6KyOue#{Go4_ALC_M z47DVVc(&jx=JAB1@emJ!JVEbE6mvcIn(MyF1_=}ltKoJG_VN40z6&^EAunp@De8}9 zxk#fZK0aM7)vl`XJTfgX>?LQtV8L84KrYLzI{a$P_g7EVgSG)?F%{PF-}7DUgg!%4 zeV3?(d^o7eeXPOH0C9Bp0?9$pr2h$K&bp&$@f;$Qc+NlLuCB#`96BvQ_D}#XLZydVnwfqb0(n5}nCu`fPAi2w|;FXvxhSewzZNcB0)DH0HV_kPb!`(6@-Pn*dl zd)6S~?;tXpZVc8kb+Ew@Ge~;HJH}Q5P}_}pl10@Z)?TbBeSB!;($Fk`~-0wX&sj;0ds{siuFuYVulNzCB|6+axeU z#=U;Z$~dG)+$=d9(4_GY5}#$6t_*#hI%Ajfm6tx`CQ4N-gu@7W3A$v?UuwRA6K|H7 zs+iI*&r)4qtl8W^XAVsr^+v)tc7?RA@JqXWCmQTeQWFy(6qBFRxTJkx%d$gNEkEoyaHW|rc$aL`9O~LtLq8F7X^lS_y>eR&L$gIbwQld zCdZY+9pzu>zVsSBip2UE;~Z>~=)`Botm{9!2H2LmR!#bJ}e` zPea8q=DfzAM!zz-z1Mx}`oyX!z{C%-KUC*;*H4L~e&u0MfuMgu(4vx6NW_P}Z15xt zlNyV70PjyQ@Q^@Z$=uorClDi?9!MUCvgeWS&t5t5q1Kz$V%Wa-F=yJyU?IZU6SwG9 z>#Vvjmazd6p8TYT3aSiiLG*Dop{&a5tG`qjk8shwPG7S;CB{T|*lm2WE^KlyYd!=Ylikf_Ck!{thZ9+9Y$cF;b=Xudx<^m#^Xv^D#*4g5 zMTTnzNe4aDA`9%xX;VIDiNqW51>0G8-0D&`qUWFP0b2|!dsx7(rd~{=O`}f(j1ml~ zG#jr!nYaQ4medSiYF$@PnpS=AI&Mvklb=3h{89tW{a0m&Ybv<&Pj}BtyC!%pbhk5z zA2@86XmX4%Wv)Rv%jRkKxNZZPj#s_8<&ir5Iy)L;+aUE(@Wu6Uu!m*weAg7^udNmo zoh^}`u)*K}`_ZAe3lAgbCkIjx#>r^HVggr!1%3e6LG`C!-yRwpx^eJ)i1)rXKSitZ zA^EL`r4?3A_Rj64@8=r>@6qWBX@q24e3c<$4&dVRwfH_qby1VnQg-X3N&Ti!R{K|ml=-Gh5cvwpHhF+&wA^xigx_)tNSCFcOjl*&V`-v1I9v`W5J0ArjH8fY^8uPs+gdw z5yiZEsI()s{kZpnYys=w@cN9f+gw|^90A89zmD<03uzt$^=AVSIpqhZi_%6 zpVB{?xc)(cIq0Q?vz93}phC|B&Y!ujVx|~t+twW92qMvgp0Hq}$Gj_UPplr2FtgS6wE(OSxvJ-gPAH`ySDW&7 zrvvM1lLqTM3QnZr7v&S928rTgfK~b4!}bOKRi$+%J-zZSVDJPVj>X+BIVU4bXxVu3 zW3AePF)G1iHoR4^^`IhVUGDbn+n{=>k{=sE)F+*ajAOy=54oC;MPmS`kn8TLko|h8O%dqOWYqk2g6t9LUJr}edin1^fQY&OIoEv{*Ti5FD(0X0r zlhD5KCkMfWNfLz7bNkvkLxZkA*p3i}Mxc3@JD}4qc`GZQe-Z7449(0QSN`lUqU{~_ zVWpuhA}3Ssc>YR(IJNMErEsG99l3U*?`{auWNO>XvTI-XMI`FYy7fj8yX8gtCsF)f zU5ZLkdJsOe>?-VV%Sp%Velbmm4If4r&|{`OBLJ9t1=wlA6bKl>g}&0`!_kcfppi!( z@$WL7os03`^bCg6xjR%fny;l)Tl4urdMlu9D6x_vKvt+IBP2dXp0mvB^x-FcGNlG5nUJ(Tb)Dak|y2DBs3?xEx z3YKfr-@mt?8~QA$#-w$N@pHVsEiW5;LjGV+X*17g;hWG7cccT>1RLrM+FKHn>zAyUlf2nA^A2UsuzQ%(w~2T$-v@^JqrRax%_y13GLjjc74pODVEvC( z5J5gW%Tyfgj;&iwvl-memZbTe+@-iclL#v>!u!^&D<}Ch3^Mrrp=(w7E~aVs^t1hx zn%|`@^Ni~zxZo`}8uq3!@hO zD9eF*DXiQD%mkaC9AMb*LIhbP-N$R>K?kwNMFlGbD|ohCw!GMm%k+zTmsInN<@0x} z1=R-o>PFH>UKo?+T4OG-{dgviV~&lza1#)!j+Q+nhiWtHS%S*)F#4ZkT00)-i=Nz6 zbPcb|tU$QHmf`!UAb!RKc~`SN0|^jxnso51!{j%Ar%xPtX+T@7mv#@8_$7 z(AeuueQS+mG!{eRboo8?i_U^X4|2(Q-*fB*@7ZN{x%G#v9OKLHfkS%9IqM_8M<6!L z^sIb;geX%RzGQ-28MZELwa}h=nSl*IN;bejXWgBv;yy{a7><4nZF9(bBMRp?#DBgF zyjwVlD#0PT?B8Ppg?>(dn;(fAa7?Ljw#$7BewHNBCg*khsj*0t(o2%;;mBC5%le6@ zbfK*z21~X_^sgW1>K?~c8#A{u7u7lpwssnr`L!G@9n_Ci=2}5GPXWqE1)Kjc&-({` z{(p$(e1D8($RC0D-^BQz(;~m2=HDaOf5h^CPW+M7|A#I=KXrn>&+< zi~NTSN?MbD*Fhk#v+oBH5&6A1|EhzK5cjinU@#nZwhk-`hmtVpfAx|w(f`vc3j0k- z|Euozt(^V5BoAHuY$iflsezt)AsYLgxZ!2U+_bsZf^PWx{p zP*+$*0c0Y1N7ParEhYlChS-2%R@OFFa7z&}lsFuWx?=+ovqnivila$a5J8DUEbmys z;i9Alv<<`xYK1~sLdC5_;L>KoDh@V|px+xxR~TvMg(mG45+}(0H?lAIx3N!yb0LxZ TfA1s_(mKItxVaHpiZuTP(D0(X literal 0 HcmV?d00001 From 68d020176524c01cbf9fcd872ad0cbc654f38b74 Mon Sep 17 00:00:00 2001 From: Vladimir Osipchuk Date: Thu, 17 Aug 2017 17:59:57 +0300 Subject: [PATCH 28/31] Port cb0b508: Copy all global subroutines to GSubr INDEX. DEV-1885 --- src/core/iTextSharp/text/pdf/CFFFontSubset.cs | 55 ++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/src/core/iTextSharp/text/pdf/CFFFontSubset.cs b/src/core/iTextSharp/text/pdf/CFFFontSubset.cs index 4c97ba5c2..45f27f7ef 100644 --- a/src/core/iTextSharp/text/pdf/CFFFontSubset.cs +++ b/src/core/iTextSharp/text/pdf/CFFFontSubset.cs @@ -477,7 +477,7 @@ virtual protected void BuildNewLGSubrs(int Font) // Builds the New Local Subrs index NewSubrsIndexNonCID = BuildNewIndex(fonts[Font].SubrsOffsets,hSubrsUsedNonCID,RETURN_OP); //Builds the New Global Subrs index - NewGSubrsIndex = BuildNewIndex(gsubrOffsets,hGSubrsUsed,RETURN_OP); + NewGSubrsIndex = BuildNewIndexAndCopyAllGSubrs(gsubrOffsets,RETURN_OP); } /** @@ -972,6 +972,59 @@ virtual protected byte[] BuildNewIndex(int[] Offsets,Dictionary Used, return AssembleIndex(NewOffsets,NewObjects); } + /** + * Function builds the new offset array, object array and assembles the index. + * used for creating the glyph and subrs subsetted index + * @param Offsets the offset array of the original index + * @param OperatorForUnusedEntries the operator inserted into the data stream for unused entries + * @return the new index subset version + * @throws IOException + */ + virtual protected byte[] BuildNewIndexAndCopyAllGSubrs(int[] Offsets, byte OperatorForUnusedEntries) + { + int unusedCount = 0; + int Offset = 0; + int[] NewOffsets = new int[Offsets.Length]; + // Build the Offsets Array for the Subset + for (int i = 0; i < Offsets.Length - 1; ++i) + { + NewOffsets[i] = Offset; + Offset += Offsets[i + 1] - Offsets[i]; + } + // Else the same offset is kept in i+1 + NewOffsets[Offsets.Length - 1] = Offset; + unusedCount++; + + // Offset var determines the size of the object array + byte[] NewObjects = new byte[Offset + unusedCount]; + // Build the new Object array + int unusedOffset = 0; + for (int i = 0; i < Offsets.Length - 1; ++i) + { + int start = NewOffsets[i]; + int end = NewOffsets[i + 1]; + NewOffsets[i] = start + unusedOffset; + // If start != End then the Object is used + // So, we will copy the object data from the font file + if (start != end) + { + // All offsets are Global Offsets relative to the begining of the font file. + // Jump the file pointer to the start address to read from. + buf.Seek(Offsets[i]); + // Read from the buffer and write into the array at start. + buf.ReadFully(NewObjects, start + unusedOffset, end - start); + } + else + { + NewObjects[start + unusedOffset] = OperatorForUnusedEntries; + unusedOffset++; + } + } + NewOffsets[Offsets.Length - 1] += unusedOffset; + // Use AssembleIndex to build the index from the offset & object arrays + return AssembleIndex(NewOffsets, NewObjects); + } + /** * Function creates the new index, inserting the count,offsetsize,offset array * and object array. From 09c7517e994f048f04814e64ddd02281194a3586 Mon Sep 17 00:00:00 2001 From: Vladimir Osipchuk Date: Thu, 17 Aug 2017 18:00:52 +0300 Subject: [PATCH 29/31] Port ebc4912: Prevent overflow while offsets writing. DEV-1885 --- src/core/iTextSharp/text/pdf/CFFFontSubset.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/iTextSharp/text/pdf/CFFFontSubset.cs b/src/core/iTextSharp/text/pdf/CFFFontSubset.cs index 45f27f7ef..6df069cd5 100644 --- a/src/core/iTextSharp/text/pdf/CFFFontSubset.cs +++ b/src/core/iTextSharp/text/pdf/CFFFontSubset.cs @@ -1040,9 +1040,9 @@ virtual protected byte[] AssembleIndex(int[] NewOffsets,byte[] NewObjects) int Size = NewOffsets[NewOffsets.Length-1]; // Calc the Offsize byte Offsize; - if (Size <= 0xff) Offsize = 1; - else if (Size <= 0xffff) Offsize = 2; - else if (Size <= 0xffffff) Offsize = 3; + if (Size < 0xff) Offsize = 1; + else if (Size < 0xffff) Offsize = 2; + else if (Size < 0xffffff) Offsize = 3; else Offsize = 4; // The byte array for the new index. The size is calc by // Count=2, Offsize=1, OffsetArray = Offsize*(Count+1), The object array From 786ee1650a1cd8f485c4fbdcf70cfd4f50c3670f Mon Sep 17 00:00:00 2001 From: Vladimir Osipchuk Date: Thu, 17 Aug 2017 18:13:23 +0300 Subject: [PATCH 30/31] Port 8e5d799: Fix cmps. DEV-1885 --- .../pdfa/cidset/cmp_cidFontCheckTest3.pdf | Bin 151765 -> 161528 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/extras/itextsharp.pdfa.tests/resources/text/pdfa/cidset/cmp_cidFontCheckTest3.pdf b/src/extras/itextsharp.pdfa.tests/resources/text/pdfa/cidset/cmp_cidFontCheckTest3.pdf index 5a6ed82127ce49e03495a9aea2ebf1ee7eb38acf..35577f8618d1a528c9941217a46b9c864a48737c 100644 GIT binary patch delta 123667 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
    y=~g>^cgf}c$sdwL6h6moOFjUcSBQs+%@ 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

    9dB?i_^x+X&_p9Ch#>8yWp8vjTNT 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

    J4qwPkVrhvcro6ET@U;vhXWN+Is?2|qILT}FJ z@`1*t%Sc(xV=jG=$}f=^BKFjZC$Dhyy}{ zM{cz4dMMX0wD;in%Wk-^2apY(Au+9biHjm{LUWP2B&nZfL!K^XB)3g3?gBp;fViOh zHB@z&8g~Klm6vFDi9r@gAV0%jVEL-_Mk{wxS0`k%b(Nc76e!AW*nBB{k@2gnY7Ie! zsHdTlew-0($|??YLqiYOn^iK7Gk{+JWq-{(JWM~%1fm_4f&Q9{A<&qE0cJ+IramNU ztRdwiTeaFuP|Zfj`dCA{!LD%08OZ^i5Vo;~$h2fuXIbi7iP%c!br7M(E9-ANkz&I*uryCgBlN#|VaY*+=-=l(DXR$^|__>v$t%=j}$W zwJFEB@|TNxT&iOSKcFg&9BnJby7H9^dt9s&j?kJ99C_DP8s{odF76Rs#|k1b;SnuN zTM+jBo^m0N3w8VvD)a6mPuqgx-t(7>c|_H5MTpJok6dh<#J=Y%7x4(M69*H%9!--8 z??q;h))_}c&wDgaCcT%Ky;#QpW-nPs>SJ{TXYK2%=LXxN*k(`GNr62I&ekZ2V8OwV zIz$9&-fATJ%8C>?am?F@_ z8@LtZ;7?RRtQA-a0(GAA=_4D7;i9w5zbu6n`9aT!d-HFGZ?~?C%!&?Ps^f^D4WDcQ zABS<#^pC?i)v=RJwJG78v-)5V11wxL*Cy{6#F!b|-oelqMAqGlcsqAztiCZSnL9?9 zT1ELb_t%(zBY@=LXw4XYY8mCj+>^0?Y+kI+EshB^s^L6gB=r~swUE*}mpVplR7>_` zC+&|BqGBFXKF_@#b8RfgdBREiV)&>JDDSq1Ej&3$+A(6(=al8S$uXVAVB8Rlq!ELp z{)h7C+^w@Wxr(5S*kLBS3vb`7~EMw$eD8Ok&2vd(8I2OjXm%PC zX#1hbG(l)E!+I>ENg@@^g)!V@rY2JebMj-3O?fG3PMRk58w4YunLyv0NbwvYSiICa zLldTnP=n{`e8Nx)i4)ie(?CrKADtx+rIFacL`FSjeQsq;qLIcxvj!6xztjW;fF+QI zX(?cgLx(y>k)Ok~Z(|AQc^Vm=hGC`c-5jEPoqIdx*+^ppv4boz4+H*jq7yJeH1^G- z)F8_H`QTw%DotY3o_d^8JwH1<)JjUiNYEHI&8gOujQPA_bSoy2CQ4)3JirL+<|&r7 zu?7V^CQ~cyLFOCq$2`BuzOcG_TawMx0egb^865mtEDP-1y!>6JrdTuP1b7P19$5t| zr`&vIQ(NpI=DYA$JeX`*1#71}`HZHPSUcux@CQ6cWJ|1^Zs)U_+GE|BpTfWM^vIT2 zJLTmwn3`j)nA6}ldG^Z&Sas&+vzQ*hx-dV4_w!WA23U9A$!9XP#yT+HhCk=|U3S8% z^L9R)sUy}E27Y3Yi@280ZR&}A4_iYl$w%Dw+SO!&HDwOw*{vcMK^RuSR>KFSB8XnF zrYL4}_@KO?m3pohbCV6$nOTD8vdtW#shv5G=dv9Eab6gchd8*UAqX*R!W(2LDPH_d zXRvzA7vNtI9rA7_6<56wO+Hvz<^%BSh`sV|rWILUd`*E^E#@G2FQQDo&!i&L3)%FZ zd5Guo0mxWz!JY+x!WsEK(+Yx@K+`#_5dajXWc#cu@`iUcaWkWNsTRLz1x;&sj2tCl z*cI!`OhSmt>ze)|6{xmz0!^o}n#}(2O*vibkUPVSO=xBTxGJ$W7QD(RVqY`6!XELS zK-D;e!~tG`20O<)AYEf0k~FN^WQ1L3=7x#$8cIhToQoe;Y|_MjWmbcE@S5c$s;hYG zlb7h(DDNrhj)OS~>dM~Q9T`v2^C7-TIBEa2$gqh_oG79+lagt&j}OZCG=j9CO#ctKpbo^>r1WB z0fQpZuyrsf(g(b+k;!-_7#lB_^yRn^^^sfg!H5QX3fD+&yg7(iMeQiYBkJUlcofW< zH=W*xHU}3>XgO;9++l*ppCCTOhv-9e!W+q4TZ-(6Yy1ue&D!Q=_}MwF{F0~e#hBNxdcKw{XmzV5=XhX*m@OO}s! zgy$iQ&>k(qzUiq9`a$VgPk4;8++@ zN^G$KK@`Lg?oM>(%sJ8A61@$dPg@K;XUZbpkP|u|IyBArz00F&u6lDgzK0%;d5?R< zQ9h2*cAeK7+0wi~FNG=@YrEJ~#jB0T;E}3%_<8FQV|;_^0V8dk&Ea^Rk<4Z}JdADx z^)Nc-YI7)Fdn6A3hbS;1UV3D6vn9RPfSDO6Ec);t=<6Vf=x2CfC9%U#s0tGn+7HDe zMlwLcLOSFV`WXQjK~+F}LJs{a^pmlJ^Ss1J1>Onzcd&x@Uz!rlk!1W3-4pV6o&rsE znUH#nt2h$e+(*9;J#Kv68O;3=n%(i@3^z3NHeSA3KTVgmm%C;}z4Hr+yOC;rAq&8K)JuE z?g03jtjwunUn}1Yd#iuny{^LEi7Lh^0_)leFu4BeO`-e$p*vyfuco<&9_)0aN{KWl zX0Sm03!6d@bUIL#ILFvm%6Gt?>R)gVt?1lHmEe?urEdhxPCseW^Zg)}Oo4Nl4diC9 z4*ewe=Lb8nR2j}eumrvVmZ3kr37En+P*phf>{iHv!L$e8l#1l^g8lRhhSOer2i`B7 zLa-)2fzsO?$TtED>B+D@9Dg+r!dWOUQ|;*a!;)Kq}^N%db@q9UP><9D+NFTZotwi2hm5P2xUQ@XZeH&kO6s|GUw9w2Y3tU<3L_#A6dB-;m9rJ!GvO)LG- zr|~{VTja_9Rol^z$=fR*p-&ThYFm`aVO81aFJ$dX8*~Ex;gJ?OvTs!^`W{n1M9i3$ zRnh_{CszfMmn!EmSqEB>WLnizvUH^)S_?lXeLJ$sjy!IVRr^Y}DuY~F*-ctg^D3{3 zg1$*6R_;e@5$42hmjU1^ck`Uw?UU#eT+c>bc=Huekz1s2Pg9FZET9hFP9-MXxZc+vr!siP4vA#dk59{-VY>Rqa zS>52F>jdmAtA8l~_LlPFJ_hn&1+$RqhNl>s8&prp^E`mp3Ga*9tNUj!7ot<0$4XS|Bz?&B@nnqFB2IU0kK79?6d0~($&lb2# zfPbnoxtTHMR^KNu0Y+Y+a}E! zVnU?FLYYBp#e!*6U65O&RNjEf-wQleZ_6W4`Se9~4w3CqUJLz+7|lRBP)UU6rHfdO zO8FQROc~&xmvkb)XKOecWDG)8P=a!Ro<1lCaOqx09yGWB@k9CHHOy_^YcMF9%56x6fQ91nIMG+7^1hkG*NJUu{s z{xpz?ad1pMxHyn)=N2z&^5i(a=*oJRY>ibCKE#&IZbuoHP}s5>^>X2aLvDFm8BQ`SnV0^XKkA|T z>75pT7~-bR7$=@7_S1T&+hR%s788F$w#vIaQRc#u>}hSEv=(hQq~T-ynG!$5X=R_V zmTb2#3~iJxetYpF&C_x|zAdqC_ZVAISMb|Q9%-Le@(F24cl*R}K&9c|7eCTEt>6>b zlH~S+k&XI-e_!$laazSELPR7X{ydU$%o{YiOPJE!(ZUgZa3NwHAz;Bf*YK%T0e|{`W8L#vZ<4;hMR*lpKK3>`H5Hj`f|rbK%O zeHh(h?B>OA$(Q~X{7Uhb7UPH2gs+nl@aiq&vi?u2iPWpmTh|y7_vurZ$JT^(*6d6qB&JjBk{Z^-BI$vVI^w zA8}1JCFWH|Z38W@J1R^4-NgqL={L>^dVYpJzt(zq?=lLq^Ru^LdHA5IL>qdV2 zWv=3ulm1V}M~0!Ik0fp^%2oTOIY)g3yJgIv;RL$h)aDXit-Te;c%TnlBgS(Px85== zQ4!|&-r`)XZ}M~guXfye%1A~{;DLQaV=nR4hFcko8T|>8K;~P-tCdP2=~KPMA4Btf zMY>hNXh1m;#9nLF#QlTuxwG3O*t?!|yR=FdBeTh~2EHYw=@l^x`WjQ?Xp-d}PRx?R zAUEaLh?_`x%QtoJ{SWFVOX+o5jgLukV-0cD9v_Wgb?(%fy!JM2>@M+v0;9<$lSAI) zE~mAM=2inFXkp7ZNf_r)Q?cbtlOO4H;hc4KQ?YY(R!}a@*rcI3w{&j(9k@wEb8g8c zXbkL5Y)z|ougf=$*BfdqOhUY`Hsw~#N&Fjva|s@Uypvxe@t2Ln(xk6h2fw~JMf0`n z9q*cGlOb=<#yb2rrPmoXz9uKV?>E*F)|bu6+!0YYq-zC2@a9fTjTy}((ECDDDCt^Z z3Jh>LAtoK((~Zvw*UD0muaPx0Zvif=U=BiXhI*sbvoqwNvx?@_)E~udX%NXpY+>7DADN$e&;;ZndbWt|>5p_yt@n;_ zzE^S#@rCe+xrO$*@eLtQ3m8d+b`ga}4ZKD1lIeB|*ce3c-q)l-vMAiD3KS(zz1^F7 z3%6=tQQRK~}k$~jQ@lkGal)k!g}X4eI{+-UDZCN2Kt9%iAk7K@2248^*dBsbbU*z8V+6>pbtDHIqlMR4DaST;s5eHOrR2H_MMONsLvxEUieO%o)* z%0$es3?mzz@bF5`Nd~IzS*1D=#u!FN-RBu9y4B^t4WyB#7~Nv_OgEqMU6_*+lh%teX< zGn`oGN`rMTOTQUne%1grgexA@5W98XWZzXf(h!-y_nVf8U&*I`Q-4DQ6RWk>KUtI+ ztB%N|f#;>)uy0h3j9F(yPP3nvTtn0@ta3oux$K}XZQ7Bx?Cr&mHP6Zg_@0Xmy4SWf@(O!< z$z$!aN&z9~(t|#=IYg$h-xojDI;#*6crGdEMO${{7xw#-$B45k0TCjAMLJT6tzB%Z zxkDDqTkmAGDvOokIlKwFw5Vm!u&+C_f21mlL$mCg>N@CNe=PZIb3t zcUD!Knz_3B&4+D@=CI#cm)dm9;lDE{nm`fp0s18RoNTYtXv_u!9;qgri094E^< z=>Z?#wq2(Dbeu?i3?04J7QxP!+n|yj4#GMj`tO$=NB(r2v_`=PR~Ln;b!nzkKdO#m z+9Gb|>vpMqMU4L1_Io6AV0GEDQF_)#`O#!bAUhw?rJ5e|G2`OdNKizCsei|QTxfFw zX&rzD**^NXZAT=yQmizCBBIbuSVT}-hsFz*<-VRAZJ^K&E=zr70>#M>@rX!q(l;Pb z{%IhYh+Zk^(an+h>iIEjw5x3)a%Nz>tOxo1m#-D0PL!YIhfJFa1v$8}C{OLX=2z-R z*r;(E?WREYyV}=;k84Nc+8$7VrNsDa#OT{L%g6|Gc5iW>)_3`@{vUUYK5a{moL~cQ ziN@E&j~hla+GZ#dLjsxa5g%7B3h@u->I|@y=KGN}TG7@J=`uexyi9ua%;uIvvald%cRAqAIR){B$4Z*1Sd z$u0f7{yyA3f|FZv848wDV(VI|z5U-b-fpO~un(bLoyx8FEb(s)$YppO@_v4u#9ty5 zOZz@fwf-E8_D$(+MxC$yN$UN{x`Fj&pJncgz>lG81wz*2eoUR2eIWJ1ROryPLNGy| zTo+>BL7kp_K5(sUH}WmAjz$&S%qsW{A>Dvd(K=eBes8Lcj_%M6YpS^pVyK@=b<{x` z-;kpk)M*;`lc{=Bj)Pf6pVi>c<90O&)hINm9V{vKxq0VnNVN!!_QT*LBi2~Nr2-JO38bcO^A*w*I@|5a6)ms>% z-JzHi{5+*InR9sPe8G1OFcs86HJb_;%#-PmpY8(Il!=>pNKtZ#6YG4bV~B2t^z=}t zt;nBpeoqLzL+^jmrf76pP(!A!4kqpy)9BDm%6YEbsY|Uc+)+wvn9Se%U2FPnXT)Sa z{kuBYhwRZ=OYIw6mR<-Eq9Bt=120N}F-4_wjG8ey&3;kRg~(8u4u784`JJjVDJcIA zn|{#QH!0Yg16hDfQ=S`klBg9^dPCU49MuK8=Mz+~sro_eo*az@ooQqzjUy<@(OVFo zCOmiVWKvr(li>qBr8&9_($gN#`>4rN0v=GWnXFBW4K?PwIyA!dXI2 z1jLC1&dyD}9x^Kcd!QlXXERH9dneTg%t`}wS|!8D-A`x3hs;VAq{9=s*JQ@SvXE^=?IVv-GqCAoBvOi%GKd_7qKWGec_rz@e(1wx> z?HR@K;O^a-w8>@q0$fC6z-heIQ(=Q$MH%Wd+T&^6h)g@4V6dws12LmK9@d?cxxf?j ze}~UFb<1R`@FX3fUaV@Knxnec%|CdGj<5%;%RC)N_=B6DdE(s=OV&P~YPZ@9bUeD- zIMa*Q4@iMvzT%=5Z|zjv;De$So%{g)Ti)fVxSlJCNI1>6LD(6T5(txq$b%2!>)@FH%~bo#~4 zPX)4Rh(6W)7=Fg=*~z|r5$Y>gU~_Q-Q6wvdB6G`*NpL~fxE7QSK&=8whpE<~iGme5 z!O6u2;BEmFf)JZXW=|CNX|3$wC(rf`tSHkI1OfcS#fg_I1^=@lrDD-(YGuDj#UjH~ znL-Xa717jIGzC;XY|)rUySbvfq9#b-uU(AeJ(yZ4Trn0zEWYJgPDU_oWyMtip0T1K zNaSx=%;3#TO$-5&B7(m%i=1>~S2x!h(f;BjFa?uZMR9U#AluNl@RdhV3jMn!gXQXt z|K=m$vMJD4MwyIBOp&8xmRz_|W(f-El3ye)DJ3Tl?cTKINTaNacTtq&fZQfX4Lb9{ zWEvnQk|8xlCb%t!8+H0?C11;#Lb?fC7?X)2a$;Qnlq+p^wTnM+tBf0qqDU%a&p`c* zPr1xm|388$!X(yU848$uIk|A&$w0Xa&`{$}mtEB$>Lf(6Lv9-K9MehK)i8-HqR9yiGo5EEt7E=_bp|;- zsG||Et<*qRak34VyUs@#RxnB|%e?pjG!~OvZ-t5{}f)5?D-Gp-Lt9 z=&U*md=-{cfM}r2@r$Mu3d^9FAh!>yVQlUaR0TBdPvzXfT1wEdi;9$BR!VWQs>rgU zK_Rd@M3$A@vWr^s0A28xn=s665G9{D8Jr^q9lt0&HN<>k3~B^(e^4Xr(w)j?DHS(B z@;8Ar>bF9tJ9$xkipcUPu9f@ABFqS5tTE4ti`XfZ;xV}l$TS)(tkmvOnF?ot&sjMY zh`?$&qT~TJ}W)t!RnJshK?I`<1(4EdQ*9SiB!a_QW`cTzK)9&T_4SHlDm zDS_p4(AUPM&VH4rAR}k-CG@=zb&M&|ukMtjH@W#~dAPADVP5)gx}k^cSAR-;Bm}Qc zA2&LK_dCkfZH_VpHWq(Ob_F+2l##MjeoEUrtyvq7ggr)|A^6pvQuYpO&c=VCYeQ_& z+wqT%oRahQZH~p?qi=5Ub=J(hPjUbO#97lZOYp?i9QOo0IS_=wJd4{hq+w zuOzO`+!83}`;$TtN?ZV^&;ZMGna7L-;t_PPzsqRp7#Go;Oz$=P$t5fR`AVWOm?5f; zhmRyRWAT4;35FwHcqiDh>%7^BOEV5%Mn4GA#W)aC>$s95+7G2l zRfbbf88 zDm8|aQGQkn(&rv}2rP&#(49c!3ZMhFvmeuUKxmtpJIcg#n1ahB=9M3o6OnnP47JuPY z2%Y>tZ~z&)3KVIy(KWXQEQ3*jt>2hVGZY+ORO2OZ*0SU14}=-z#^4I~mTn1&Fh}>| zbB`{{^ZYqG*iY%nkO?%fqiFCFIUCp+^cm=cv7l@*g0oUCWCEDba$z07A+amy4G4Rs;%k6MPszxv~j;h&--;n&vvU8XyA;ZsW$n zWR|K5w=)bs~G|8u-MU0HABBBqFk5$@W5{MwsM2hTQ6@WfZ zepU&xL`V?U&omRW9f~03}ew zXc5=cZIfgk3=#A44klfy-zIU}7~N2nOPpJO8;*{s$|YQ4Y=hm7t!gFr>VG@@YD1L; zI)r?ck?S=l@o$8{CFVBd?ffc9~^xJ_~8CAaMljQrAb(r;}Ihorc zFu?elvycV29aCk74kTY-gc@IS0sfifst|MsdAjmB<{Bxb;T5uqMiv-mInPz%QBX2k z^(bE7n{1)dn<5j%-kM1g%dd>oFXSvRvnC)P#$Kn0wC0Xbc-z zLhM8HmIsVjOkTYWA|d^uPRn|71nM5)SnWLFA=B-1zw3Y8jY3;dF4 z0_CAW3xT|kpm}qplx|TXgSAVeMAv6E z?OF-DA8NE%kV6<(jS_Ls4!7$jMGY7pH)gWW;Jif)h!Pl6TTkmDQ$Smq4B!DhY2j7e4p;@D-!?ZrcR#x6DDhfFic^fkYq2}DJvCY&Jxj$`ujy`!}S3OWZNIQ&v-9g7n?kl)EW-^SAw%is#nHta`0*hgs8V z^1DfdZ*Nns`?rI%IqYkhI~6qzCQiQjP5e#4p5G44ZFsG6r=h0Lgyt(~I@joDVzz3< zC%{{tu!>0C)Yw?`#N|Wtm*J&&^=H2%mR~3gIB{TjFdo*v>blW&jqB^4DV}$E>QZ~c zVmNK&aJ*S6w%zvn#%I!r`>x{boX1WenstW{3?JkU#v7-?QhjOdYoAHIP<)~DLi~m5 z3;7q?FQh;1P1=`^>%eu8GMqE;8LnL?u*1hk>ba}A7r05>X|5i(o*T{`=WgWoa`U-@ zc*}OX>|e4`*^q3jXEInxtQuAktAiECs$%7_+E{6<238rXhZVy@v2s`~tQ1xqtAy3X zN?>7F1uTMwmBGTXDp;@(&;#j_?a}O!>{07c?9utO?lcMvy&A3BlI zlyL$!Oy^>`=+re1Qa$kFdp&V8xEa#P6Do}=&9t?{Wy577q~W976WnO7`8;)AZk{~9 zDs`QMOrCb0be=|@a-LqESRVBFzTV>A{r7QiPbdrr4hN2uaCdM&a1q>EZU}dbyMf!q z&EbCM%5V+lar1`r(eto*-&E@*t?QD@I$?YB3-jsuC983L#6FikLLaV=M02L$X|6OH zk>)}pFi-R~^_`$K(wb>av=b|hX2bH=RhQvmB^rL-I9(;h%@-Yl!p`XhAkVV2BbC}f z;_o@=6U`k(wgXStPgqX|!G5_>hoIf(q^_=hqPnBxeA$)3CqvI76Wh{9rGs*I;?7B2 zg+76fX?`e9EK1y)Hh4XKT-APUh;` zC$KT8G4(N}G2JnVG1!>G7-CFj3_hkZhWt?SWl;HsGFzFYJh&8D7FiZmMk$LXMUtXO z6jJn1(m2YPVjO)k@?_LW%E{=s$hfFDN?i2Y$hT2%DQ~0Uk?<%QoC1$# zMlz$A6lQc@TYeC2=P&6}>mZ0?rNImA3#`(}!04xuPothvaBY;)T_3YQO7E0hr`iSW zlIzmylIl`NlpGjLx|uXI7?}|n-9{ZfKAQP)^~a>0;_IMYGPT7XgTF;CMESNQjOL9l zkEVVU`{=S$`YYtC)mPbdupG4!c=Kd&fnuf^cT zn};JCqTSmpFIu*>UW^$9A-qZy+Mqbj2nqh6yAMlDBMM^ir9ea!f%Li_0T(eh*R zN90bafc}7}m8i29i&n)Ri7wou5H8cY@9E7CFa0wmy7had!w=Z85HCGue_K4ZxOMSa z=Gt!Q2$|%A9XFm1gmBK!ewlr;xRit)Vl4ku?S z=jHdw@0{;b-(U93jxUNW7B0Fh_Gcpb5dIdv6@M3BmhZ+l;m7ke`9XYpekNa%kLRQL z+xTjHKfVn=m9NO(%s1!nQ5`HuWtzBu2NZ@`b@tMYyLYxpVMG|O?7nF^H~tv6&i zduIC=4=wsHLipSH+Wf72hg_45ipYZz6%z#&H%J^ij@^{q%Z|wo&WYKP#l*!=i<*4p zT=R{}eK2IjM9IVfuN%gkg~{sK+ly-a@Lbc4N_{GQ$cBSX1y1D;ZXj96L1cd%r-D;4 zb$ND(XFO}nJ30F&ZBd7xz}Mmj^VjpU_)>gA?rMRmV9iFAh6>9Y5&aPZa8Bz~>&xWH zWKQx_^2?dY8P3eq%uD3tzF8Gs#cT!7Yu1Z5uo$Fx$5D&29z=!Wo7l>L(=Hk z_`K%5@y<5rC#W-YB0joVZlortI%r=|Z9MT2$;P;({rcGPV!E|PLG|qRLoV(b?6v$47LHXL3IQ4 z1znHEzK{2cf=2~L*+peUsYH22Sw)#2+l*SXehsw38U*16P?>j-rob+|hBI#QiisB@@W zC_Z#^sB7q^P-3X(JZ1^HOc!ITvz?Pvc8c^6%djpyh^sahXB;`-cuGv+tw z0(1fP2VJIIhOWiNv2U^s*_%1u9P20zo;^>JhvunS*B-$+dN|@7-5p7eUbJrKZnwLb zaD#B8H_*>?DYhB=EZdc1%Sq!XaXdH{oJ5W;CyayThJW4@(H?Axf8vwypK*RSI3tG zk@@cD4CI@Np`PdJX-l#OkD%}6zZ5UI9vXIzH#w*8r*NQn&=uBn`r>aF4_~}Gy!jOP z>^`PoQJhwC*wu`JZMt%?cbFJ&)(%?-d8UAn*DXF!e2_KhYD|Gqe48#06Gk_WhK{<9 z`iyQG-8xF-n(j19g@?z%Wkvd7!|*>AQFwRg4mvEO9B)t+b{VDD)kZtr66Z4baD;-c)2%b86W{6Axw$ixYc>yCQjjP%D=uWAC>MAA zy6cb?zH@6Qjo2B`>8WX|2rE^1s$eH;Sj=D@V0p0au`F2UStgYBUA4QqtcaaBO|$*5 zX|+Lx47m&iSTUW2WuYmTtO%WfM@%=vreV|Y-xO42Rpi$emlc^`CS_9jex?UTB;bUtx`J3f z+mhZzi~9nfc~4k*pXTNE>0`wCgFtweZSaL~2CrRiqZW*7+1kQzi)I)Zco3eb1-oxc zWW*ZS8hj|XfhXu+y5Q!{2r&3SZ`TNpXgS~(!bmqjl()nG+|sh=7STYLuukJ0`V#%t zZwAK+*UNVrUAlHl!yshuPRyk%x7Hbi5w5DgGooEOe(S5jhVqXlm#W<|7q-w*7kZ4)Xi$Vt=2Ghvx|~eP=LcANGe?#R`sOoliP_eR+6;vesDK=_d)n z@51~OJ}0j%{hH_B5QWQDerMg1bC%*S;e?p~^F~FN|GAiifXC-YZ`4b4sk|TAp82?P zAkac@?p;6aic;7a!3Rb|pyinhM}3cO?EF@gwN{VT{NkR!?efsq(-8^tGv^+j)(Nvc zvtya$h5a->e%`&>$N&AI@K4*{)PzqQb~u!th&*eP&^vZp!BmME&|zk%?RU&?CfMS# z*(bAQvwQE8W@$440g4xF##?3<-yf?seXEirn0@4ZVkU_exHiF=@P1;~mstibMCC$z z(2FOOH@&p>u)LhsXR93oFPu)jFxGZ;-4aM_)v_$tpfAz zkqvq2A68|AIi*H*9i#qXYWrn}#=+jG8|U9%nch8ox~t(~Ql|gC`LoQY$R}@Ty8CK; zHm&;guOGC3{rUgpFYUiN@~>B4q0J)gc>T>x!)@aE%&~3a`Z|`vpYH_DHUa5y~fIt zxRVmM8?|6^A|*Up$kVHd#*F)^{?>zP?G;wT;AlM6ealCUc^IR$0^ zV>E#%Ybz_Oj__D<;KBScwrvz}FhJwoA;RwYg#C|QGxN*Z6(bt9B_Sy~c^l}Ir{AxYT&m8arF-j&t$i3u3yg z3n<&wwyW1$_g@quGd2rPNsYl82=4{|9~M^D zepc%oZ0#JZtSzk8I#^j5$fHEJ%*0&|xRe;s_<#R^4%Z#x+hlFL(o%P&rIM3U!4cdY zB0T1zJ8;QK+Y(X}l9NnUi3aua?jP-#zNtWe{&lx_7;@vrFw4INiL$m99po*PxR~82 z8{yx~Y|s+%U!(iS;QCU<4V=K>gdH`(I|zpc-f7lW>ul{rqcXO#GG1jV8Vu;o|J;g+ zN)vaJvaz#Yx1O1pCT=KYV{c`>o_Q!u+>U0mZoM6NlM8RCB$T}Hx3!I(mEGF^x^K;T ztN*&sb}e{M2yg#-ti6@pf3~x=vR@C*mVaw!Yi(@<4gu}2J5y6A;Dk#NzV&^QlT%UF zYedJ2j7Nny#@gDfU$=&0x7KFcTI=XFcF|F>HrwpB*>1D4inWinvfB86ZV_fFJY`VU zU|8U!^-ai*L0Q{?6VC#Z;1`pbYVq%HFZtc6l$6xWl$cm~aJbi6TgziG1TUie{{pXJ B*lGX( From 890f2f86c6af7d413643470a05303782eb167938 Mon Sep 17 00:00:00 2001 From: Pavel Alay Date: Mon, 21 Aug 2017 09:10:39 +0300 Subject: [PATCH 31/31] [RELEASE] 5.5.12-SNAPSHOT -> 5.5.12 --- src/core/iTextSharp/text/Version.cs | 2 +- src/extras/iTextAsian/AssemblyInfo.cs | 22 ++------- .../Properties/AssemblyInfo.cs | 2 +- src/extras/itext-hyph-xml/AssemblyInfo.cs | 47 ++----------------- .../Properties/AssemblyInfo.cs | 21 +-------- 5 files changed, 10 insertions(+), 84 deletions(-) diff --git a/src/core/iTextSharp/text/Version.cs b/src/core/iTextSharp/text/Version.cs index 62ff8d0d8..3b97bf710 100644 --- a/src/core/iTextSharp/text/Version.cs +++ b/src/core/iTextSharp/text/Version.cs @@ -72,7 +72,7 @@ public sealed class Version { * This String contains the version number of this iText release. * For debugging purposes, we request you NOT to change this constant. */ - static private String release = "5.5.12-SNAPSHOT"; + static private String release = "5.5.12"; /** * This String contains the iText version as shown in the producer line. diff --git a/src/extras/iTextAsian/AssemblyInfo.cs b/src/extras/iTextAsian/AssemblyInfo.cs index 33dbf93d2..66031dd00 100644 --- a/src/extras/iTextAsian/AssemblyInfo.cs +++ b/src/extras/iTextAsian/AssemblyInfo.cs @@ -1,29 +1,13 @@ using System.Reflection; using System.Runtime.CompilerServices; -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// [assembly: AssemblyTitle("iTextAsian")] [assembly: AssemblyDescription("CJK CMAPS for iTextSharp.")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("Copyright (C) 1999-2012 by Bruno Lowagie and Paulo Soares. All Rights Reserved.")] +[assembly: AssemblyCompany("iText Group NV")] +[assembly: AssemblyProduct("iTextAsian")] +[assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: - [assembly: AssemblyVersion("2.1")] diff --git a/src/extras/iTextSharp.xtra/Properties/AssemblyInfo.cs b/src/extras/iTextSharp.xtra/Properties/AssemblyInfo.cs index 1b2ec04d1..0d44a465d 100644 --- a/src/extras/iTextSharp.xtra/Properties/AssemblyInfo.cs +++ b/src/extras/iTextSharp.xtra/Properties/AssemblyInfo.cs @@ -6,7 +6,7 @@ [assembly: AssemblyDescription("Extra functionality for iTextSharp, a free PDF library ported from Java iText.")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] +[assembly: AssemblyCompany("iText Group NV")] [assembly: AssemblyProduct("iTextSharp.xtra")] [assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] diff --git a/src/extras/itext-hyph-xml/AssemblyInfo.cs b/src/extras/itext-hyph-xml/AssemblyInfo.cs index 0f4d3c185..eef5a764e 100644 --- a/src/extras/itext-hyph-xml/AssemblyInfo.cs +++ b/src/extras/itext-hyph-xml/AssemblyInfo.cs @@ -1,56 +1,15 @@ using System.Reflection; using System.Runtime.CompilerServices; -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// [assembly: AssemblyTitle("itext-hyph-xml")] [assembly: AssemblyDescription("Hyphenation patterns for iTextSharp.")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("Copyright (C) 1999-2014 by Bruno Lowagie and Paulo Soares. All Rights Reserved.")] +[assembly: AssemblyCompany("iText Group NV")] +[assembly: AssemblyProduct("itext-hyph-xml")] +[assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: - [assembly: AssemblyVersion("2.0.0")] -// -// In order to sign your assembly you must specify a key to use. Refer to the -// Microsoft .NET Framework documentation for more information on assembly signing. -// -// Use the attributes below to control which key is used for signing. -// -// Notes: -// (*) If no key is specified, the assembly is not signed. -// (*) KeyName refers to a key that has been installed in the Crypto Service -// Provider (CSP) on your machine. KeyFile refers to a file which contains -// a key. -// (*) If the KeyFile and the KeyName values are both specified, the -// following processing occurs: -// (1) If the KeyName can be found in the CSP, that key is used. -// (2) If the KeyName does not exist and the KeyFile does exist, the key -// in the KeyFile is installed into the CSP and used. -// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility. -// When specifying the KeyFile, the location of the KeyFile should be -// relative to the project output directory which is -// %Project Directory%\obj\. For example, if your KeyFile is -// located in the project directory, you would specify the AssemblyKeyFile -// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] -// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework -// documentation for more information on this. -// [assembly: AssemblyDelaySign(false)] diff --git a/src/extras/itextsharp.sandbox/Properties/AssemblyInfo.cs b/src/extras/itextsharp.sandbox/Properties/AssemblyInfo.cs index 1487d26af..b6bc44ce7 100644 --- a/src/extras/itextsharp.sandbox/Properties/AssemblyInfo.cs +++ b/src/extras/itextsharp.sandbox/Properties/AssemblyInfo.cs @@ -2,35 +2,18 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. [assembly: AssemblyTitle("itextsharp.sandbox")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] +[assembly: AssemblyCompany("iText Group NV")] [assembly: AssemblyProduct("itextsharp.sandbox")] -[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyCopyright("Copyright (C) 1999-2017 by iText Group NV")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] -// The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("230cab15-8151-4ddd-9578-97425dc9e99e")] -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]