Skip to content

Commit 377b7eb

Browse files
Merging in smartmode acroform inconsistencies
DEVSIX-830
1 parent 8d6aad1 commit 377b7eb

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

forms/src/main/java/com/itextpdf/forms/PdfPageFormCopier.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,10 @@ private PdfFormField mergeFieldsWithTheSameName(PdfFormField existingField, PdfF
202202
}
203203

204204
mergedField.addKid(existingField).addKid(newField);
205-
mergedField.put(PdfName.V, existingField.getPdfObject().get(PdfName.V));
205+
PdfObject value = existingField.getValue();
206+
if (value != null) {
207+
mergedField.put(PdfName.V, existingField.getPdfObject().get(PdfName.V));
208+
}
206209

207210
return mergedField;
208211
}

kernel/src/main/java/com/itextpdf/kernel/pdf/PdfWriter.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,13 +283,21 @@ protected PdfObject copyObject(PdfObject obj, PdfDocument document, boolean allo
283283

284284
int copyObjectKey = 0;
285285
boolean tryToFindDuplicate = !allowDuplicating && indirectReference != null;
286+
286287
if (tryToFindDuplicate) {
287288
copyObjectKey = calculateIndRefKey(indirectReference);
288289
PdfIndirectReference copiedIndirectReference = copiedObjects.get(copyObjectKey);
289290
if (copiedIndirectReference != null)
290291
return copiedIndirectReference.getRefersTo();
291292
}
292293

294+
if (obj.isDictionary()) {
295+
PdfName subtype = ((PdfDictionary)obj).getAsName(PdfName.Subtype);
296+
if (subtype != null && subtype.equals(PdfName.Widget)) {
297+
tryToFindDuplicate = false;
298+
}
299+
300+
}
293301
if (properties.smartMode && tryToFindDuplicate && !checkTypeOfPdfDictionary(obj, PdfName.Page)) {
294302
PdfIndirectReference copiedObjectRef = tryToFindPreviouslyCopiedEqualObject(obj);
295303
if (copiedObjectRef != null) {

0 commit comments

Comments
 (0)