use of com.tom_roush.pdfbox.pdmodel.interactive.form.PDNonTerminalField in project PdfBox-Android by TomRoush.
the class PDFMergerUtility method mergeFields.
private void mergeFields(PDFCloneUtility cloner, PDField destField, PDField srcField) {
if (destField instanceof PDNonTerminalField && srcField instanceof PDNonTerminalField) {
Log.i("PdfBox-Android", "Skipping non terminal field " + srcField.getFullyQualifiedName());
return;
}
if (destField.getFieldType() == "Tx" && destField.getFieldType() == "Tx") {
// if the field already has multiple widgets we can add to the array
if (destField.getCOSObject().containsKey(COSName.KIDS)) {
COSArray widgets = destField.getCOSObject().getCOSArray(COSName.KIDS);
for (PDAnnotationWidget srcWidget : srcField.getWidgets()) {
try {
widgets.add(cloner.cloneForNewDocument(srcWidget.getCOSObject()));
} catch (IOException ioe) {
Log.w("PdfBox-Android", "Unable to clone widget for source field " + srcField.getFullyQualifiedName());
}
}
} else {
COSArray widgets = new COSArray();
try {
COSDictionary widgetAsCOS = (COSDictionary) cloner.cloneForNewDocument(destField.getWidgets().get(0));
cleanupWidgetCOSDictionary(widgetAsCOS, true);
widgetAsCOS.setItem(COSName.PARENT, destField);
widgets.add(widgetAsCOS);
for (PDAnnotationWidget srcWidget : srcField.getWidgets()) {
try {
widgetAsCOS = (COSDictionary) cloner.cloneForNewDocument(srcWidget.getCOSObject());
cleanupWidgetCOSDictionary(widgetAsCOS, false);
widgetAsCOS.setItem(COSName.PARENT, destField);
widgets.add(widgetAsCOS);
} catch (IOException ioe) {
Log.w("PdfBox-Android", "Unable to clone widget for source field " + srcField.getFullyQualifiedName());
}
}
destField.getCOSObject().setItem(COSName.KIDS, widgets);
cleanupFieldCOSDictionary(destField.getCOSObject());
} catch (IOException ioe) {
Log.w("PdfBox-Android", "Unable to clone widget for destination field " + destField.getFullyQualifiedName());
}
}
} else {
Log.i("PdfBox-Android", "Only merging two text fields is currently supported");
Log.i("PdfBox-Android", "Skipping merging of " + srcField.getFullyQualifiedName() + " into " + destField.getFullyQualifiedName());
}
}
Aggregations