List of usage examples for org.apache.pdfbox.cos COSName TYPE
COSName TYPE
To view the source code for org.apache.pdfbox.cos COSName TYPE.
Click Source Link
From source file:com.aaasec.sigserv.csspsupport.pdfbox.modifications.CsCOSWriter.java
License:Apache License
/** * This will write a COS object.// w w w. jav a 2s . com * * @param obj The object to write. * * @throws COSVisitorException If there is an error visiting objects. */ public void doWriteObject(COSBase obj) throws COSVisitorException { try { writtenObjects.add(obj); if (obj instanceof COSDictionary) { COSDictionary dict = (COSDictionary) obj; COSName item = (COSName) dict.getItem(COSName.TYPE); if (COSName.SIG.equals(item) || COSName.DOC_TIME_STAMP.equals(item)) { reachedSignature = true; } } // find the physical reference currentObjectKey = getObjectKey(obj); // add a x ref entry addXRefEntry(new COSWriterXRefEntry(getStandardOutput().getPos(), obj, currentObjectKey)); // write the object getStandardOutput().write(String.valueOf(currentObjectKey.getNumber()).getBytes("ISO-8859-1")); getStandardOutput().write(SPACE); getStandardOutput().write(String.valueOf(currentObjectKey.getGeneration()).getBytes("ISO-8859-1")); getStandardOutput().write(SPACE); getStandardOutput().write(OBJ); getStandardOutput().writeEOL(); obj.accept(this); getStandardOutput().writeEOL(); getStandardOutput().write(ENDOBJ); getStandardOutput().writeEOL(); } catch (IOException e) { throw new COSVisitorException(e); } }
From source file:com.aaasec.sigserv.csspsupport.pdfbox.modifications.CsCOSWriter.java
License:Apache License
/** * visitFromStream method comment./*w w w. j a v a2s . c om*/ * * @param obj The object that is being visited. * * @throws COSVisitorException If there is an exception while visiting this * object. * * @return null */ public Object visitFromStream(COSStream obj) throws COSVisitorException { InputStream input = null; try { if (willEncrypt) { document.getSecurityHandler().encryptStream(obj, currentObjectKey.getNumber(), currentObjectKey.getGeneration()); } COSObject lengthObject = null; // check if the length object is required to be direct, like in // a cross reference stream dictionary COSBase lengthEntry = obj.getDictionaryObject(COSName.LENGTH); String type = obj.getNameAsString(COSName.TYPE); if (lengthEntry != null && lengthEntry.isDirect() || "XRef".equals(type)) { // the length might be the non encoded length, // set the real one as direct object COSInteger cosInteger = COSInteger.get(obj.getFilteredLength()); cosInteger.setDirect(true); obj.setItem(COSName.LENGTH, cosInteger); } else { // make the length an implicit indirect object // set the length of the stream and write stream dictionary lengthObject = new COSObject(null); obj.setItem(COSName.LENGTH, lengthObject); } input = obj.getFilteredStream(); //obj.accept(this); // write the stream content visitFromDictionary(obj); getStandardOutput().write(STREAM); getStandardOutput().writeCRLF(); byte[] buffer = new byte[1024]; int amountRead = 0; int totalAmountWritten = 0; while ((amountRead = input.read(buffer, 0, 1024)) != -1) { getStandardOutput().write(buffer, 0, amountRead); totalAmountWritten += amountRead; } // set the length as an indirect object if (lengthObject != null) { lengthObject.setObject(COSInteger.get(totalAmountWritten)); } getStandardOutput().writeCRLF(); getStandardOutput().write(ENDSTREAM); getStandardOutput().writeEOL(); return null; } catch (Exception e) { throw new COSVisitorException(e); } finally { if (input != null) { try { input.close(); } catch (IOException e) { throw new COSVisitorException(e); } } } }
From source file:com.formkiq.core.service.generator.pdfbox.SigUtils.java
License:Apache License
/** * Set the access permissions granted for this document in the DocMDP * transform parameters dictionary. Details are described in the table * "Entries in the DocMDP transform parameters dictionary" in the PDF * specification./* w w w. j a v a 2 s .c o m*/ * * @param doc * The document. * @param signature * The signature object. * @param accessPermissions * The permission value (1, 2 or 3). */ public static void setMDPPermission(final PDDocument doc, final PDSignature signature, final int accessPermissions) { COSDictionary sigDict = signature.getCOSObject(); // DocMDP specific stuff COSDictionary transformParameters = new COSDictionary(); transformParameters.setItem(COSName.TYPE, COSName.getPDFName("TransformParams")); transformParameters.setInt(COSName.P, accessPermissions); transformParameters.setName(COSName.V, "1.2"); transformParameters.setNeedToBeUpdated(true); COSDictionary referenceDict = new COSDictionary(); referenceDict.setItem(COSName.TYPE, COSName.getPDFName("SigRef")); referenceDict.setItem("TransformMethod", COSName.DOCMDP); referenceDict.setItem("DigestMethod", COSName.getPDFName("SHA1")); referenceDict.setItem("TransformParams", transformParameters); referenceDict.setNeedToBeUpdated(true); COSArray referenceArray = new COSArray(); referenceArray.add(referenceDict); sigDict.setItem("Reference", referenceArray); referenceArray.setNeedToBeUpdated(true); // Catalog COSDictionary catalogDict = doc.getDocumentCatalog().getCOSObject(); COSDictionary permsDict = new COSDictionary(); catalogDict.setItem(COSName.PERMS, permsDict); permsDict.setItem(COSName.DOCMDP, signature); catalogDict.setNeedToBeUpdated(true); permsDict.setNeedToBeUpdated(true); }
From source file:com.modemo.javase.signature.SigUtils.java
License:Apache License
/** * Set the access permissions granted for this document in the DocMDP transform parameters * dictionary. Details are described in the table "Entries in the DocMDP transform parameters * dictionary" in the PDF specification. * * @param doc The document./*from w w w .j a v a2s . c o m*/ * @param signature The signature object. * @param accessPermissions The permission value (1, 2 or 3). */ static public void setMDPPermission(PDDocument doc, PDSignature signature, int accessPermissions) { COSDictionary sigDict = signature.getCOSObject(); // DocMDP specific stuff COSDictionary transformParameters = new COSDictionary(); transformParameters.setItem(COSName.TYPE, COSName.getPDFName("TransformParams")); transformParameters.setInt(COSName.P, accessPermissions); transformParameters.setName(COSName.V, "1.2"); transformParameters.setNeedToBeUpdated(true); COSDictionary referenceDict = new COSDictionary(); referenceDict.setItem(COSName.TYPE, COSName.getPDFName("SigRef")); referenceDict.setItem("TransformMethod", COSName.DOCMDP); referenceDict.setItem("DigestMethod", COSName.getPDFName("SHA1")); referenceDict.setItem("TransformParams", transformParameters); referenceDict.setNeedToBeUpdated(true); COSArray referenceArray = new COSArray(); referenceArray.add(referenceDict); sigDict.setItem("Reference", referenceArray); referenceArray.setNeedToBeUpdated(true); // Catalog COSDictionary catalogDict = doc.getDocumentCatalog().getCOSObject(); COSDictionary permsDict = new COSDictionary(); catalogDict.setItem(COSName.PERMS, permsDict); permsDict.setItem(COSName.DOCMDP, signature); catalogDict.setNeedToBeUpdated(true); permsDict.setNeedToBeUpdated(true); }
From source file:fixture.pdfboxeg.CreateSignatureBase.java
License:Apache License
public void setMDPPermission(PDDocument doc, PDSignature signature, int accessPermissions) { COSDictionary sigDict = signature.getCOSObject(); // DocMDP specific stuff COSDictionary transformParameters = new COSDictionary(); transformParameters.setItem(COSName.TYPE, COSName.getPDFName("TransformParams")); transformParameters.setInt(COSName.P, accessPermissions); transformParameters.setName(COSName.V, "1.2"); transformParameters.setNeedToBeUpdated(true); COSDictionary referenceDict = new COSDictionary(); referenceDict.setItem(COSName.TYPE, COSName.getPDFName("SigRef")); referenceDict.setItem("TransformMethod", COSName.getPDFName("DocMDP")); referenceDict.setItem("DigestMethod", COSName.getPDFName("SHA1")); referenceDict.setItem("TransformParams", transformParameters); referenceDict.setNeedToBeUpdated(true); COSArray referenceArray = new COSArray(); referenceArray.add(referenceDict);/*from w ww . j a v a 2 s. c om*/ sigDict.setItem("Reference", referenceArray); referenceArray.setNeedToBeUpdated(true); // Catalog COSDictionary catalogDict = doc.getDocumentCatalog().getCOSObject(); COSDictionary permsDict = new COSDictionary(); catalogDict.setItem(COSName.PERMS, permsDict); permsDict.setItem(COSName.DOCMDP, signature); catalogDict.setNeedToBeUpdated(true); permsDict.setNeedToBeUpdated(true); }
From source file:modules.PDFFontDependencyExtractorModule.java
License:Apache License
public PDFFontResults extractFontList(File f) throws IOException, InvalidParameterException { PDDocument document;// w w w . j av a 2s .c om try { document = PDDocument.load(f); } catch (IOException x) { throw new InvalidParameterException("Not a PDF file"); } SortedSet<FontInformation> ret = new TreeSet<FontInformation>(new Comparator<FontInformation>() { @Override public int compare(FontInformation o1, FontInformation o2) { int a = o1.fontName.compareTo(o2.fontName); if (a != 0) return a; else return o1.fontType.compareTo(o2.fontType); } }); document.getDocumentCatalog().getAllPages(); // The code down here is easier as it gets all the fonts used in the // document. Still, this would inlcude unused fonts, so we get the fonts // page by page and add them to a Hash table. for (COSObject c : document.getDocument().getObjectsByType(COSName.FONT)) { if (c == null || !(c.getObject() instanceof COSDictionary)) { continue; // System.out.println(c.getObject()); } COSDictionary fontDictionary = (COSDictionary) c.getObject(); // System.out.println(dic.getNameAsString(COSName.BASE_FONT)); // } // } // int pagen = document.getNumberOfPages(); // i=0; // for (int p=0;p<pagen;p++){ // PDPage page = (PDPage)pages.get(p); // PDResources res = page.findResources(); // //for each page resources // if (res==null) continue; // // get the font dictionary // COSDictionary fonts = (COSDictionary) // res.getCOSDictionary().getDictionaryObject( COSName.FONT ); // for( COSName fontName : fonts.keySet() ) { // COSObject font = (COSObject) fonts.getItem( fontName ); // // if the font has already been visited we ingore it // long objectId = font.getObjectNumber().longValue(); // if (ret.get(objectId)!=null) // continue; // if( font==null || ! (font.getObject() instanceof COSDictionary) ) // continue; // COSDictionary fontDictionary = (COSDictionary)font.getObject(); // Type MUSt be font if (!fontDictionary.getNameAsString(COSName.TYPE).equals("Font")) { continue; } // get the variables FontInformation fi = new FontInformation(); fi.fontType = fontDictionary.getNameAsString(COSName.SUBTYPE); String baseFont = fontDictionary.getNameAsString(COSName.BASE_FONT); if (baseFont == null) { continue; } if (Arrays.binarySearch(standard14, baseFont) >= 0) { continue; } COSDictionary fontDescriptor = (COSDictionary) fontDictionary.getDictionaryObject(COSName.FONT_DESC); COSBase enc = fontDictionary.getItem(COSName.ENCODING); COSBase uni = fontDictionary.getItem(COSName.TO_UNICODE); fontDictionary.getInt(COSName.FIRST_CHAR); fontDictionary.getInt(COSName.LAST_CHAR); String encoding; boolean toUnicode = uni != null; if (enc == null) { encoding = "standard14"; } if (enc instanceof COSString) { encoding = ((COSString) enc).getString(); } else { encoding = "table"; } fi.isSubset = false; boolean t = true; // Type one and TT can have subsets defineing the basename see 5.5.3 // pdfref 1.6 // if (fi.fontType.lastIndexOf(COSName.TYPE1.getName())!=-1 || // fi.fontType.equals(COSName.TRUE_TYPE.getName()) ) if (baseFont != null) { if (baseFont.length() > 6) { for (int k = 0; k < 6; k++) if (!Character.isUpperCase(baseFont.charAt(k))) { t = false; } if (baseFont.charAt(6) != '+') { t = false; } } else { t = false; } fi.isSubset = t; if (fi.isSubset) { fi.baseName = baseFont.substring(0, 6); baseFont = baseFont.substring(7); } } fi.fontFlags = 0; if (fi.fontType.equals(COSName.TYPE0.getName()) || fi.fontType.equals(COSName.TYPE3.getName())) { fi.isEmbedded = true; } if (fontDescriptor != null) { // in Type1 charset indicates font is subsetted if (fontDescriptor.getItem(COSName.CHAR_SET) != null) { fi.isSubset = true; } if (fontDescriptor.getItem(COSName.FONT_FILE) != null || fontDescriptor.getItem(COSName.FONT_FILE3) != null || fontDescriptor.getItem(COSName.FONT_FILE2) != null) { fi.isEmbedded = true; } fi.fontFlags = fontDescriptor.getInt(COSName.getPDFName("Flags")); fi.fontFamily = fontDescriptor.getString(COSName.FONT_FAMILY); fi.fontStretch = fontDescriptor.getString(COSName.FONT_STRETCH); } fi.charset = encoding; fi.fontName = baseFont; fi.isToUnicode = toUnicode; fi.encoding = fontDictionary.getNameAsString(COSName.CID_TO_GID_MAP); ret.add(fi); } // for all fonts HashMultimap<String, FontInformation> m = HashMultimap.create(); for (FontInformation ff : ret) { m.put(ff.fontName, ff); } LinkedList<FontInformation> missing = new LinkedList<FontInformation>(); Set<String> k = m.keySet(); for (String kk : k) { Set<FontInformation> s = m.get(kk); if (s.size() < 1) { continue; } if (s.size() > 1) { boolean found = false; FontInformation ff = null; for (FontInformation fonti : s) { if (!fonti.isEmbedded) { ff = fonti; } else { found = true; } } if (!found) { missing.add(ff); } } else { FontInformation ff = s.iterator().next(); if (!ff.isEmbedded) { missing.add(ff); } } } // } // for all pages // Iterator<FontInformation> it = ret.iterator(); // FontInformation prev = null; // LinkedList<FontInformation> toDelete = new // LinkedList<FontInformation>(); // while (it.hasNext()) { // FontInformation current = it.next(); // // if (prev!= null && prev.fontName.equals(current.fontName) && // (prev.fontType.startsWith("CIDFontType") || // current.fontType.startsWith("CIDFontType"))) // toDelete.add(current); // prev = current; // } // // //ret.removeAll(toDelete); // FontInformation[] retArray =toDelete.toArray(new FontInformation[0]); // if (missing.size() == 0) { missing = null; } else { System.out.println("Found missing fonts: " + f); System.out.println(missing); } return new PDFFontResults(new LinkedList<FontInformation>(ret), missing); }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
private void copyElemEntries(COSBase base, PDFStructElem elem) throws IOException { assert base instanceof COSObject; COSObject baseObj = (COSObject) base; COSDictionary baseDic = (COSDictionary) baseObj.getObject(); COSName[] names = { COSName.TYPE, COSName.S, COSName.PG, COSName.ALT, COSName.LANG, COSName.A, COSName.ACTUAL_TEXT, COSName.T, COSName.E, COSName.C }; for (COSName name : names) { if (baseDic.keySet().contains(name)) { if (name.equals(COSName.PG)) { elem.put(COSName.PG.getName(), targetPage.makeReference()); } else { elem.put(name.getName(), adapter.cloneForNewDocument(baseDic.getItem(name))); }/* w w w . ja v a 2 s.c o m*/ } } adapter.cacheClonedObject(base, elem); }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
private void createKidFromCOSDictionary(COSDictionary mcrDict, PDFStructElem parent, COSDictionary baseDict) throws IOException { Collection<COSName> exclude = Arrays.asList(COSName.PG); PDFReference referenceObj;//from w w w . j a va 2s. c om if (isElementFromSourcePage(mcrDict, baseDict)) { PDFDictionary contentItem = (PDFDictionary) adapter.cloneForNewDocument(mcrDict, mcrDict, exclude); if (mcrDict.keySet().contains(COSName.TYPE)) { String type = ((COSName) mcrDict.getDictionaryObject(COSName.TYPE)).getName(); if (type.equals("OBJR")) { COSObject obj = (COSObject) mcrDict.getItem(COSName.OBJ); if (adapter.getCachedClone(obj) == null) { referenceObj = null; } else { referenceObj = ((PDFObject) adapter.getCachedClone(obj)).makeReference(); } contentItem.put(COSName.OBJ.getName(), referenceObj); updateStructParentAndAddToPageParentTree(referenceObj, parent); } else if (type.equals("MCR")) { updateMCIDEntry(contentItem); markedContentMap.put( (((PDFNumber) contentItem.get(COSName.MCID.getName())).getNumber()).intValue(), parent); } } if (mcrDict.keySet().contains(COSName.PG)) { contentItem.put(COSName.PG.getName(), targetPage.makeReference()); } else { parent.put(COSName.PG.getName(), targetPage.makeReference()); } parent.addKid(contentItem); } else { parent.addKid(null); } }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
private boolean isStructureTreeRoot(COSDictionary elem) { if (elem.keySet().contains(COSName.TYPE)) { COSName type = (COSName) elem.getDictionaryObject(COSName.TYPE); return type.equals(COSName.STRUCT_TREE_ROOT); }//from w w w . j a v a2s .c o m return false; }
From source file:org.apache.pdflens.views.treeview.PDFTreeCellRenderer.java
License:Apache License
private Object convertToTreeObject(Object nodeValue) { if (nodeValue instanceof MapEntry) { MapEntry entry = (MapEntry) nodeValue; COSName key = (COSName) entry.getKey(); COSBase value = (COSBase) entry.getValue(); nodeValue = key.getName() + ":" + convertToTreeObject(value); } else if (nodeValue instanceof COSFloat) { nodeValue = "COSFloat:" + ((COSFloat) nodeValue).floatValue(); } else if (nodeValue instanceof COSInteger) { nodeValue = "COSInteger:" + ((COSInteger) nodeValue).intValue(); } else if (nodeValue instanceof COSString) { nodeValue = "COSString:" + ((COSString) nodeValue).getString(); } else if (nodeValue instanceof COSName) { nodeValue = "COSName:" + ((COSName) nodeValue).getName(); } else if (nodeValue instanceof ArrayEntry) { ArrayEntry entry = (ArrayEntry) nodeValue; nodeValue = "[" + entry.getIndex() + "]" + convertToTreeObject(entry.getValue()); } else if (nodeValue instanceof COSNull) { nodeValue = "COSNull:" + "null"; } else if (nodeValue instanceof COSDictionary) { COSDictionary dict = (COSDictionary) nodeValue; if (nodeValue instanceof COSStream) { nodeValue = "Stream"; } else {//from w ww. j a va 2 s . c om nodeValue = "Dictionary"; } COSName type = (COSName) dict.getDictionaryObject(COSName.TYPE); if (type != null) { nodeValue = nodeValue + "(" + type.getName(); COSName subType = (COSName) dict.getDictionaryObject(COSName.SUBTYPE); if (subType != null) { nodeValue = nodeValue + ":" + subType.getName(); } nodeValue = nodeValue + ")"; } } else if (nodeValue instanceof COSArray) { nodeValue = "COSArray"; } else if (nodeValue instanceof COSString) { nodeValue = "COSString:" + ((COSString) nodeValue).getString(); } return nodeValue; }