Skip to content

Commit ddb8af6

Browse files
author
vitali.prudnikovich
committed
Add a possibility to override compare doc info logic in CompareTool
DEVSIX-7045
1 parent 475fcdd commit ddb8af6

File tree

3 files changed

+39
-4
lines changed

3 files changed

+39
-4
lines changed

kernel/src/main/java/com/itextpdf/kernel/utils/CompareTool.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -810,8 +810,8 @@ public String compareDocumentInfo(String outPdf, String cmpPdf, byte[] outPass,
810810
PdfReader readerCmp = new PdfReader(cmpPdf, getCmpReaderProperties());
811811
PdfDocument cmpDocument = new PdfDocument(readerCmp,
812812
new DocumentProperties().setEventCountingMetaInfo(metaInfo))) {
813-
String[] cmpInfo = convertInfo(cmpDocument.getDocumentInfo());
814-
String[] outInfo = convertInfo(outDocument.getDocumentInfo());
813+
String[] cmpInfo = convertDocInfoToStrings(cmpDocument.getDocumentInfo());
814+
String[] outInfo = convertDocInfoToStrings(outDocument.getDocumentInfo());
815815
for (int i = 0; i < cmpInfo.length; ++i) {
816816
if (!cmpInfo[i].equals(outInfo[i])) {
817817
message = MessageFormatUtil.format("Document info fail. Expected: \"{0}\", actual: \"{1}\"", cmpInfo[i], outInfo[i]);
@@ -926,7 +926,16 @@ public String compareTagStructures(String outPdf, String cmpPdf) throws IOExcept
926926
return message;
927927
}
928928

929-
String[] convertInfo(PdfDocumentInfo info) {
929+
/**
930+
* Converts document info into a string array.
931+
* <p>
932+
* Converts document info into a string array. It can be used to compare PdfDocumentInfo later on.
933+
* Default implementation retrieves title, author, subject, keywords and producer.
934+
*
935+
* @param info an instance of PdfDocumentInfo to be converted.
936+
* @return String array with all the document info tester is interested in.
937+
*/
938+
protected String[] convertDocInfoToStrings(PdfDocumentInfo info) {
930939
String[] convertedInfo = new String[]{"", "", "", "", ""};
931940
String infoValue = info.getTitle();
932941
if (infoValue != null)
@@ -1813,7 +1822,7 @@ private static class PngFileFilter implements FileFilter {
18131822
private String currentOutPdfName;
18141823

18151824
public PngFileFilter (String currentOutPdfName) {
1816-
this.currentOutPdfName = currentOutPdfName;
1825+
this.currentOutPdfName = currentOutPdfName;
18171826
}
18181827

18191828
public boolean accept(File pathname) {

kernel/src/test/java/com/itextpdf/kernel/utils/CompareToolTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,12 @@ This file is part of the iText (R) project.
4848
import com.itextpdf.commons.utils.SystemUtil;
4949
import com.itextpdf.kernel.font.PdfFontFactory;
5050
import com.itextpdf.kernel.geom.Rectangle;
51+
import com.itextpdf.kernel.pdf.DocumentProperties;
5152
import com.itextpdf.kernel.pdf.PdfArray;
5253
import com.itextpdf.kernel.pdf.PdfDocument;
54+
import com.itextpdf.kernel.pdf.PdfDocumentInfo;
5355
import com.itextpdf.kernel.pdf.PdfPage;
56+
import com.itextpdf.kernel.pdf.PdfReader;
5457
import com.itextpdf.kernel.pdf.PdfWriter;
5558
import com.itextpdf.kernel.pdf.annot.PdfLinkAnnotation;
5659
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
@@ -286,4 +289,27 @@ public void compareFilesWithDiffLinkAnnotationTest() throws IOException {
286289

287290
Assert.assertNotNull(new CompareTool().compareLinkAnnotations(firstPdf, secondPdf));
288291
}
292+
293+
@Test
294+
public void convertDocInfoToStringsTest() throws IOException {
295+
String inPdf = sourceFolder + "test.pdf";
296+
297+
class TestCompareTool extends CompareTool {
298+
@Override
299+
protected String[] convertDocInfoToStrings(PdfDocumentInfo info) {
300+
return super.convertDocInfoToStrings(info);
301+
}
302+
}
303+
304+
CompareTool compareTool = new TestCompareTool();
305+
try (PdfReader reader = new PdfReader(inPdf, compareTool.getOutReaderProperties());
306+
PdfDocument doc = new PdfDocument(reader)) {
307+
String[] docInfo = compareTool.convertDocInfoToStrings(doc.getDocumentInfo());
308+
Assert.assertEquals("very long title to compare later on", docInfo[0]);
309+
Assert.assertEquals("itext7core", docInfo[1]);
310+
Assert.assertEquals("test file", docInfo[2]);
311+
Assert.assertEquals("new job", docInfo[3]);
312+
Assert.assertEquals("Adobe Acrobat Pro DC (64-bit) <version>", docInfo[4]);
313+
}
314+
}
289315
}
Binary file not shown.

0 commit comments

Comments
 (0)