Skip to content

Commit

Permalink
Merge branch 'develop' into devsecops
Browse files Browse the repository at this point in the history
  • Loading branch information
aleks-ivanov committed May 20, 2024
2 parents 271cb32 + b12187c commit f84920b
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -929,6 +929,30 @@ public virtual void CopyOcmdsFromFormXObjectRecursivelyTest() {
OcgPropertiesCopierTest.CopyPagesAndAssertLayersName(names, fromDocBytes);
}

[NUnit.Framework.Test]
public virtual void CopyEmptyOcgTest() {
byte[] fromDocBytes;
using (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
using (PdfDocument fromDocument = new PdfDocument(new PdfWriter(outputStream))) {
PdfDictionary DDic = new PdfDictionary();
DDic.Put(PdfName.ON, new PdfArray());
DDic.Put(PdfName.Order, new PdfArray());
DDic.Put(PdfName.RBGroups, new PdfArray());
PdfDictionary OcDic = new PdfDictionary();
OcDic.Put(PdfName.D, DDic);
OcDic.Put(PdfName.OCGs, new PdfArray());
fromDocument.GetCatalog().Put(PdfName.OCProperties, OcDic);
}
fromDocBytes = outputStream.ToArray();
}
using (PdfDocument toDocument = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) {
using (PdfDocument fromDocument = new PdfDocument(new PdfReader(new MemoryStream(fromDocBytes)))) {
fromDocument.CopyPagesTo(1, 1, toDocument);
NUnit.Framework.Assert.IsNull(toDocument.GetCatalog().GetOCProperties(false));
}
}
}

private static byte[] GetDocumentWithAllDFields() {
byte[] fromDocBytes;
using (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
Expand Down
24 changes: 24 additions & 0 deletions itext.tests/itext.kernel.tests/itext/kernel/utils/PdfMergerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -755,6 +755,30 @@ public virtual void MergeDocumentsWithNamesJSInDestination() {
));
}

[NUnit.Framework.Test]
public virtual void CopyEmptyOcPropertiesTest() {
String filename = sourceFolder + "emptyOcPropertiesDoc.pdf";
String resultFile = destinationFolder + "mergedEmptyOcPropertiesDoc.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfReader(filename));
PdfDocument result = new PdfDocument(CompareTool.CreateTestPdfWriter(resultFile));
PdfMerger merger = new PdfMerger(result).SetCloseSourceDocuments(true);
merger.Merge(pdfDoc, 1, 1).Close();
NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(resultFile, sourceFolder + "cmp_mergedEmptyOcPropertiesDoc.pdf"
, destinationFolder, "diff_"));
}

[NUnit.Framework.Test]
public virtual void CopyOnlyEmptyOcPropertiesTest() {
String filename = sourceFolder + "ocPropertiesDoc.pdf";
String resultFile = destinationFolder + "mergedOcPropertiesDoc.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfReader(filename));
PdfDocument result = new PdfDocument(CompareTool.CreateTestPdfWriter(resultFile));
PdfMerger merger = new PdfMerger(result).SetCloseSourceDocuments(true);
merger.Merge(pdfDoc, 1, 1).Close();
NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(resultFile, sourceFolder + "cmp_mergedOcPropertiesDoc.pdf"
, destinationFolder, "diff_"));
}

private PdfDictionary MergeSinglePdfAndGetResultingStructTreeRoot(String pathToMerge) {
IList<FileInfo> sources = new List<FileInfo>();
sources.Add(new FileInfo(sourceFolder + pathToMerge));
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
4 changes: 3 additions & 1 deletion itext/itext.kernel/itext/kernel/pdf/PdfDocument.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1243,7 +1243,9 @@ public virtual IList<PdfPage> CopyPagesTo(IList<int> pagesToCopy, iText.Kernel.P
// Copying OCGs should go after copying LinkAnnotations
if (GetCatalog() != null && GetCatalog().GetPdfObject().GetAsDictionary(PdfName.OCProperties) != null) {
OcgPropertiesCopier.CopyOCGProperties(this, toDocument, page2page);
toDocument.GetCatalog().SetOcgCopied(true);
if (toDocument.GetCatalog().GetPdfObject().GetAsDictionary(PdfName.OCProperties) != null) {
toDocument.GetCatalog().SetOcgCopied(true);
}
}
// It's important to copy tag structure after link annotations were copied, because object content items in tag
// structure are not copied in case if their's OBJ key is annotation and doesn't contain /P entry.
Expand Down
2 changes: 1 addition & 1 deletion port-hash
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d68b0e71fd64171f0f8181e8a7e5b7e040499ac5
5a76ecc3fde818dfc102c677957030ada98cde8f

0 comments on commit f84920b

Please sign in to comment.