for (PdfObject pdfObject : (Iterable<PdfObject>)array.getArrayList()) { this.extractURIs(pdfObject);
/** * Translate a PRArray to a PdfArray. Also translate all of the objects contained * in it */ protected PdfArray copyArray(PdfArray in) throws IOException, BadPdfFormatException { PdfArray out = new PdfArray(); for (Iterator i = in.listIterator(); i.hasNext();) { PdfObject value = (PdfObject)i.next(); out.add(copyObject(value)); } return out; }
PdfObject obj; PdfLayer layer; for (int i = 0; i < arr.size(); i++) { obj = arr.getPdfObject(i); if (obj.isIndirect()) { layer = (PdfLayer)ocgmap.get(obj.toString()); parent.addChild(layer); if (arr.size() > i + 1 && arr.getPdfObject(i + 1).isArray()) { i++; addOrder(layer, (PdfArray)arr.getPdfObject(i), ocgmap); if (sub.isEmpty()) return; obj = sub.getPdfObject(0); if (obj.isString()) { layer = new PdfLayer(obj.toString()); parent.addChild(layer); PdfArray array = new PdfArray(); for (Iterator j = sub.listIterator(); j.hasNext(); ) { array.add((PdfObject)j.next());
PdfObject content = PdfReader.getPdfObject(pageN.get(PdfName.CONTENTS), pageN); if (content == null) { ar = new PdfArray(); pageN.put(PdfName.CONTENTS, ar); ar = new PdfArray(); ar.add(pageN.get(PdfName.CONTENTS)); pageN.put(PdfName.CONTENTS, ar); ar = new PdfArray(); pageN.put(PdfName.CONTENTS, ar); PdfStream stream = new PdfStream(out.toByteArray()); stream.flateCompress(this.compressionLevel); ar.addFirst(addToBody(stream).getIndirectReference()); out.reset(); if (ps.over != null) { stream = new PdfStream(out.toByteArray()); stream.flateCompress(this.compressionLevel); ar.add(addToBody(stream).getIndirectReference());
int t = -1; int d = -1; for (int k = 0; k < ar.size(); k += 2) { PdfString s = ar.getAsString(k); if ("template".equals(s.toString())) { t = k + 1; reader.killXref(ar.getAsIndirectObject(t)); reader.killXref(ar.getAsIndirectObject(d)); PdfStream tStream = new PdfStream(serializeDoc(form.templateNode)); tStream.flateCompress(writer.getCompressionLevel()); ar.set(t, writer.addToBody(tStream).getIndirectReference()); PdfStream dStream = new PdfStream(serializeDoc(form.datasetsNode)); dStream.flateCompress(writer.getCompressionLevel()); ar.set(d, writer.addToBody(dStream).getIndirectReference()); af.put(PdfName.XFA, new PdfArray(ar)); return;
if (annots == null) continue; for (int idx = 0; idx < annots.size(); ++idx) PdfObject annoto = annots.getDirectObject(idx); if ((annoto instanceof PdfIndirectReference) && !annoto.isIndirect()) continue; for (int idx = 0; idx < annots.size(); ++idx) PdfDictionary annot = annots.getAsDict(idx); if (annot != null) annots.remove(idx); --idx; if (annots.isEmpty())
private void writeNamedDestinations(RenderingContext c) { Map idMap = getSharedContext().getIdMap(); if ((idMap != null) && (!idMap.isEmpty())) { PdfArray dests = new PdfArray(); try { Iterator it = idMap.entrySet().iterator(); dests.add(new PdfString(anchorName, PdfString.TEXT_UNICODE)); dests.add(ref); if (!dests.isEmpty()) { PdfDictionary nametree = new PdfDictionary(); nametree.put(PdfName.NAMES, dests);
/** * Removes all the fields from the document. */ public void removeFields() { pageRefs.resetReleasePage(); for (int k = 1; k <= pageRefs.size(); ++k) { PdfDictionary page = pageRefs.getPageN(k); PdfArray annots = page.getAsArray(PdfName.ANNOTS); if (annots == null) { pageRefs.releasePage(k); continue; } for (int j = 0; j < annots.size(); ++j) { PdfObject obj = getPdfObjectRelease(annots.getPdfObject(j)); if (obj == null || !obj.isDictionary()) continue; PdfDictionary annot = (PdfDictionary)obj; if (PdfName.WIDGET.equals(annot.get(PdfName.SUBTYPE))) annots.remove(j--); } if (annots.isEmpty()) page.remove(PdfName.ANNOTS); else pageRefs.releasePage(k); } catalog.remove(PdfName.ACROFORM); pageRefs.resetReleasePage(); }
/** * Replaces CalRGB and CalGray colorspaces with DeviceRGB and DeviceGray. */ public void simplifyColorspace() { if (additional == null) return; PdfArray value = additional.getAsArray(PdfName.COLORSPACE); if (value == null) return; PdfObject cs = simplifyColorspace(value); PdfObject newValue; if (cs.isName()) newValue = cs; else { newValue = value; PdfName first = value.getAsName(0); if (PdfName.INDEXED.equals(first)) { if (value.size() >= 2) { PdfArray second = value.getAsArray(1); if (second != null) { value.set(1, simplifyColorspace(second)); } } } } additional.put(PdfName.COLORSPACE, newValue); }
protected void kidNode(PdfDictionary merged, String name) { PdfArray kids = merged.getAsArray(PdfName.KIDS); if (kids == null || kids.isEmpty()) { if (name.length() > 0) name = name.substring(1); fields.put(name, merged); } else { merged.remove(PdfName.KIDS); for (int k = 0; k < kids.size(); ++k) { PdfDictionary dic = new PdfDictionary(); dic.merge(merged); PdfDictionary newDic = kids.getAsDict(k); PdfString t = newDic.getAsString(PdfName.T); String newName = name; if (t != null) newName += "." + t.toUnicodeString(); dic.merge(newDic); dic.remove(PdfName.T); kidNode(dic, newName); } } }
PdfDictionary top = new PdfDictionary(PdfName.PAGES); top.put(PdfName.COUNT, new PdfNumber(thisLeaf)); PdfArray kids = new PdfArray(); ArrayList internal = kids.getArrayList(); internal.addAll(tPages.subList(p * stdCount, p * stdCount + count)); top.put(PdfName.KIDS, kids);
public static HashMap getNamedDestination(PdfReader reader, boolean fromNames) { IntHashtable pages = new IntHashtable(); int numPages = reader.getNumberOfPages(); for (int k = 1; k <= numPages; ++k) pages.put(reader.getPageOrigRef(k).getNumber(), k); HashMap names = fromNames ? reader.getNamedDestinationFromNames() : reader.getNamedDestinationFromStrings(); for (Iterator it = names.entrySet().iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry)it.next(); PdfArray arr = (PdfArray)entry.getValue(); StringBuffer s = new StringBuffer(); try { s.append(pages.get(arr.getAsIndirectObject(0).getNumber())); s.append(' ').append(arr.getPdfObject(1).toString().substring(1)); for (int k = 2; k < arr.size(); ++k) s.append(' ').append(arr.getPdfObject(k).toString()); entry.setValue(s.toString()); } catch (Exception e) { it.remove(); } } return names; }
/** * Visualizes a PdfArray object. * @param array a com.lowagie.text.pdf.PdfArray object */ public void listArray(PdfArray array) { out.println('['); for (Iterator i = array.listIterator(); i.hasNext(); ) { PdfObject item = (PdfObject)i.next(); listAnyObject(item); } out.println(']'); } /**
return; PdfArray arrfds = (PdfArray)PdfReader.getPdfObjectRelease(top.get(PdfName.FIELDS)); if (arrfds == null || arrfds.size() == 0) return; for (int k = 1; k <= reader.getNumberOfPages(); ++k) { if (annots == null) continue; for (int j = 0; j < annots.size(); ++j) { PdfDictionary annot = annots.getAsDict(j); if (annot == null) { PdfReader.releaseLastXrefPartial(annots.getAsIndirectObject(j)); continue; PdfReader.releaseLastXrefPartial(annots.getAsIndirectObject(j)); continue; item.addValue(value); item.addWidget(widget); item.addWidgetRef(annots.getAsIndirectObject(j)); // must be a reference if (top != null) dic.mergeDifferent(top); if (sigFlags == null || (sigFlags.intValue() & 1) != 1) return; for (int j = 0; j < arrfds.size(); ++j) { PdfDictionary annot = arrfds.getAsDict(j); if (annot == null) { PdfReader.releaseLastXrefPartial(arrfds.getAsIndirectObject(j));
/** * Use this method to lock an optional content group. * The state of a locked group cannot be changed through the user interface * of a viewer application. Producers can use this entry to prevent the visibility * of content that depends on these groups from being changed by users. * @param layer the layer that needs to be added to the array of locked OCGs * @since 2.1.2 */ public void lockLayer(PdfLayer layer) { OCGLocked.add(layer.getRef()); }
protected void createThStartTag(JRPrintElement element) { PdfStructureElement tableHeaderTag = new PdfStructureElement((PdfStructureElement)tagStack.peek(), new PdfName("TH")); pdfContentByte.beginMarkedContentSequence(tableHeaderTag); tableHeaderTag.put(PdfName.K, new PdfArray()); tagStack.push(tableHeaderTag); isTagEmpty = true; createSpanTags(element, tableHeaderTag); }