/** * Adds content of the {@code PdfArray}. * * @param a the {@code PdfArray} to be added * @see java.util.List#addAll(java.util.Collection) */ public void addAll(PdfArray a) { if (a != null) addAll(a.list); }
protected PdfArray getFormFields(PdfArray array) { PdfArray fields = new PdfArray(); for (PdfObject field : array) { PdfArray kids = ((PdfDictionary) field).getAsArray(PdfName.Kids); fields.add(field); if (kids != null) { fields.addAll(getFormFields(kids)); } } return fields; } }
protected PdfArray getFormFields(PdfArray array) { PdfArray fields = new PdfArray(); for (PdfObject field : array) { PdfArray kids = ((PdfDictionary) field).getAsArray(PdfName.Kids); fields.add(field); if (kids != null) { fields.addAll(getFormFields(kids)); } } return fields; } }
private static void copyTo(PdfDocument destDocument, Map<PdfPage, PdfPage> page2page, PdfDocument callingDocument, boolean copyFromDestDocument, int insertIndex) { CopyStructureResult copiedStructure = copyStructure(destDocument, page2page, callingDocument, copyFromDestDocument); PdfStructTreeRoot destStructTreeRoot = destDocument.getStructTreeRoot(); destStructTreeRoot.makeIndirect(destDocument); for (PdfDictionary copied : copiedStructure.getTopsList()) { destStructTreeRoot.addKidObject(insertIndex, copied); if (insertIndex > -1) { ++insertIndex; } } if (!copyFromDestDocument) { if (!copiedStructure.getCopiedNamespaces().isEmpty()) { destStructTreeRoot.getNamespacesObject().addAll(copiedStructure.getCopiedNamespaces()); } PdfDictionary srcRoleMap = callingDocument.getStructTreeRoot().getRoleMap(); PdfDictionary destRoleMap = destStructTreeRoot.getRoleMap(); for (Map.Entry<PdfName, PdfObject> mappingEntry: srcRoleMap.entrySet()) { if (!destRoleMap.containsKey(mappingEntry.getKey())) { destRoleMap.put(mappingEntry.getKey(), mappingEntry.getValue()); } else if (!mappingEntry.getValue().equals(destRoleMap.get(mappingEntry.getKey()))) { String srcMapping = mappingEntry.getKey() + " -> " + mappingEntry.getValue(); String destMapping = mappingEntry.getKey() + " -> " + destRoleMap.get(mappingEntry.getKey()); Logger logger = LoggerFactory.getLogger(StructureTreeCopier.class); logger.warn(MessageFormat.format(LogMessageConstant.ROLE_MAPPING_FROM_SOURCE_IS_NOT_COPIED_ALREADY_EXIST, srcMapping, destMapping)); } } } }
/** * Creates a Set-OCG-State action (section 12.6.4.12 of ISO 32000-1). * * @param states states a list of {@link PdfActionOcgState} state descriptions * @param preserveRb If true, indicates that radio-button state relationships between optional content groups * should be preserved when the states are applied * @return created action */ public static PdfAction createSetOcgState(List<PdfActionOcgState> states, boolean preserveRb) { PdfArray stateArr = new PdfArray(); for (PdfActionOcgState state : states) stateArr.addAll(state.getObjectList()); return new PdfAction().put(PdfName.S, PdfName.SetOCGState).put(PdfName.State, stateArr).put(PdfName.PreserveRB, PdfBoolean.valueOf(preserveRb)); }
protected void updateCompressionFilter(PdfStream pdfStream) { PdfObject filter = pdfStream.get(PdfName.Filter); if (filter == null) { pdfStream.put(PdfName.Filter, PdfName.FlateDecode); } else { PdfArray filters = new PdfArray(); filters.add(PdfName.FlateDecode); if (filter instanceof PdfArray) { filters.addAll((PdfArray) filter); } else { filters.add(filter); } PdfObject decodeParms = pdfStream.get(PdfName.DecodeParms); if (decodeParms != null) { if (decodeParms instanceof PdfDictionary) { PdfArray array = new PdfArray(); array.add(new PdfNull()); array.add(decodeParms); pdfStream.put(PdfName.DecodeParms, array); } else if (decodeParms instanceof PdfArray) { ((PdfArray) decodeParms).add(0, new PdfNull()); } else { throw new PdfException(PdfException.DecodeParameterType1IsNotSupported).setMessageParams(decodeParms.getClass().toString()); } } pdfStream.put(PdfName.Filter, filters); } }