Refine search
public void manipulatePdf(String src, String dest) throws DocumentException, IOException { PdfReader reader = new PdfReader(src); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); AcroFields form = stamper.getAcroFields(); form.removeXfa(); form.setField("topmostSubform[0].Page2[0].p2_cb01[0]", "1"); form.setField("topmostSubform[0].Page2[0].p2_cb01[1]", "2"); form.setField("topmostSubform[0].Page2[0].p2_cb01[2]", "3"); form.setField("topmostSubform[0].Page2[0].p2_cb01[3]", "4"); form.setField("topmostSubform[0].Page2[0].p2_cb01[4]", "5"); form.setField("topmostSubform[0].Page2[0].p2_cb01[5]", "6"); stamper.close(); reader.close(); }
PdfReader reader = new PdfReader("C:\\temp\\letter.pdf"); AcroFields acroFields = reader.getAcroFields(); Map<String, AcroFields.Item> fields = acroFields.getFields(); Iterator<Entry<String, Item>> it = fields.entrySet().iterator(); while (it.hasNext()) { Entry<String, Item> entry = it.next(); String value = acroFields.getField(entry.getKey()); System.out.println(entry.getKey()+":"+value); }
String src = "C:\\Workspace\\pdf1\\2053-C.pdf"; String dest= "C:\\Workspace\\pdf1\\_renamed_2053-C.pdf"; PdfReader reader = new PdfReader(src); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); AcroFields form = stamper.getAcroFields(); form.renameField("cpa_t1", "renamed_cpa_t1"); stamper.close(); reader.close(); reader = new PdfReader(dest); form = reader.getAcroFields(); Map<String, AcroFields.Item> fields = form.getFields(); for (String name : fields.keySet()) { if (name.equals("renamed_cpa_t1")) { System.out.println("Renamed :: " + name); } } System.out.println("FieldType : " + form.getFieldType("renamed_cpa_t1")); }
AcroFields form = stamper.getAcroFields(); form.setGenerateAppearances(true); form.setField("name", "Bruno Lowagie" + i); form.setField("adress", "ADDRESS"); form.setField("dates", "January 1, 2010"); form.setField("titles", "blah blah blah"); stamper.setFormFlattening(true);
/** * Regenerates the field appearance. This is useful when you change a field property, but not its value, for instance * form.setFieldProperty("f", "bgcolor", Color.BLUE, null); This won't have any effect, unless you use regenerateField("f") after changing * the property. * * @param name the fully qualified field name or the partial name in the case of XFA forms * @return <CODE>true</CODE> if the field was found and changed, * <CODE>false</CODE> otherwise * @throws IOException on error * @throws DocumentException on error */ public boolean regenerateField(String name) throws IOException, DocumentException { String value = getField(name); return setField(name, value, value); }
/** */ public static Map<String, Object> getAcroFieldsFromPdf(DispatchContext dctx, Map<String, ? extends Object> context) { Map<String, Object> acroFieldMap = new HashMap<>(); try { ByteArrayOutputStream os = new ByteArrayOutputStream(); Delegator delegator = dctx.getDelegator(); ByteBuffer byteBuffer = getInputByteBuffer(context, delegator); PdfReader r = new PdfReader(byteBuffer.array()); PdfStamper s = new PdfStamper(r,os); AcroFields fs = s.getAcroFields(); Map<String, Object> map = UtilGenerics.checkMap(fs.getFields()); s.setFormFlattening(true); for (String fieldName : map.keySet()) { String parmValue = fs.getField(fieldName); acroFieldMap.put(fieldName, parmValue); } } catch (DocumentException | GeneralException | IOException e) { Debug.logError(e, module); return ServiceUtil.returnError(e.getMessage()); } Map<String, Object> results = ServiceUtil.returnSuccess(); results.put("acroFieldMap", acroFieldMap); return results; }
ByteArrayOutputStream os = new ByteArrayOutputStream(); ByteBuffer byteBuffer = getInputByteBuffer(context, delegator); PdfReader pdfReader = new PdfReader(byteBuffer.array()); PdfStamper pdfStamper = new PdfStamper(pdfReader, os); AcroFields acroFields = pdfStamper.getAcroFields(); Map<String, Object> acroFieldMap = UtilGenerics.checkMap(acroFields.getFields()); pdfStamper.setFormFlattening(true); for (String fieldName : acroFieldMap.keySet()) { AcroFields.Item item = acroFields.getFieldItem(fieldName); int type = acroFields.getFieldType(fieldName); String value = acroFields.getField(fieldName); Debug.logInfo("fieldName:" + fieldName + "; item: " + item + "; value: " + value, module); float[] fieldPositions = acroFields.getFieldPositions(fieldName); float fieldPage = fieldPositions[0]; float fieldLlx = fieldPositions[1];
PdfReader reader = new PdfReader(templateInputStream); AcroFields form = stamp.getAcroFields(); stamp.setFormFlattening(true); Map<String, AcroFields.Item> map = (Map<String, AcroFields.Item>)form.getFields(); if (map != null) { if (map.size() == 0) { if (AcroFields.FIELD_TYPE_TEXT == form.getFieldType(e.getKey())) { fillForm(dataBean, form, e.getKey(), local); } else { logger.warn("Field type is not supported: "+form.getFieldType(e.getKey())); stamp.close(); } catch (Exception e) { logger.warn("Failed to create PDF document", e);
List<PdfReader> readers = new ArrayList<PdfReader>(); for (int i = 0; i < 3; ) { PdfReader reader = new PdfReader(renameFields(src, ++i)); readers.add(reader); copy.addDocument(reader); PdfReader reader = new PdfReader(src); PdfStamper stamper = new PdfStamper(reader, baos); AcroFields form = stamper.getAcroFields(); Set<String> keys = new HashSet<String>(form.getFields().keySet()); for (String key : keys) { form.renameField(key, String.format("%s_%d", key, i)); stamper.close(); reader.close(); return baos.toByteArray();
void mergeFields() { int pageOffset = 0; for (int k = 0; k < fields.size(); ++k) { HashMap fd = ((AcroFields)fields.get(k)).getFields(); addPageOffsetToField(fd, pageOffset); mergeWithMaster(fd); pageOffset += ((PdfReader)readers.get(k)).getNumberOfPages(); } }
public static void scanFields(String path) throws IOException { PdfReader pdfReader = new PdfReader(path); AcroFields acroFields = pdfReader.getAcroFields(); HashMap<String,AcroFields.Item> fields = acroFields.getFields(); Set<Entry<String, Item>> entrySet = fields.entrySet(); for (Entry<String, Item> entry : entrySet) { String key = entry.getKey(); } }
PdfReader reader =new PdfReader ("D:/Eclipse Java/HiltonForms2014_r.pdf"); AcroFields form = reader.getAcroFields(); form.setField("LASTNAME", rs.getCursorName());
[...] try { PdfStamper stamper=new PdfStamper(reader,output); AcroFields acroFields=stamper.getAcroFields(); acroFields.setField("fullnameorinitials", editText.getText().toString()); acroFields.setField("agedob", editText2.getText().toString()); stamper.close(); } [...]
if (getFieldType(field) != FIELD_TYPE_PUSHBUTTON) return null; Item item = getFieldItem(field); if (order >= item.size()) return null; int posi = order * 5; float[] pos = getFieldPositions(field); Rectangle box = new Rectangle(pos[posi + 1], pos[posi + 2], pos[posi + 3], pos[posi + 4]); PushbuttonField newButton = new PushbuttonField(writer, box, null); PdfDictionary dic = item.getMerged(order); decodeGenericDictionary(dic, newButton); PdfDictionary mk = dic.getAsDict(PdfName.MK); if (mk != null) {
AcroFields.Item item = af.getFieldItem(fieldName); if (item == null) throw new IllegalArgumentException(MessageLocalization.getComposedMessage("the.field.1.does.not.exist", fieldName)); PdfDictionary merged = item.getMerged(0); if (!PdfName.SIG.equals(PdfReader.getPdfObject(merged.get(PdfName.FT)))) throw new IllegalArgumentException(MessageLocalization.getComposedMessage("the.field.1.is.not.a.signature.field", fieldName)); this.fieldName = fieldName; pageRect.normalize(); page = item.getPage(0).intValue(); int rotation = writer.reader.getPageRotation(page); Rectangle pageSize = writer.reader.getPageSizeWithRotation(page); switch (rotation) { case 90:
/** * Sets the signature to be visible. It creates a new visible signature field. * @param pageRect the position and dimension of the field in the page * @param page the page to place the field. The fist page is 1 * @param fieldName the field name or <CODE>null</CODE> to generate automatically a new field name */ public void setVisibleSignature(final Rectangle pageRect, final int page, final String fieldName) { if (fieldName != null) { if (fieldName.indexOf('.') >= 0) { throw new IllegalArgumentException("Field names cannot contain a dot."); //$NON-NLS-1$ } final AcroFields af = this.writer.getAcroFields(); final AcroFields.Item item = af.getFieldItem(fieldName); if (item != null) { throw new IllegalArgumentException("The field " + fieldName + " already exists."); //$NON-NLS-1$ //$NON-NLS-2$ } this.fieldName = fieldName; } if (page < 1 || page > this.writer.reader.getNumberOfPages()) { throw new IllegalArgumentException("Invalid page number: " + page); //$NON-NLS-1$ } this.pageRect = new Rectangle(pageRect); this.pageRect.normalize(); this.rect = new Rectangle(this.pageRect.getWidth(), this.pageRect.getHeight()); this.page = page; this.newField = true; }
/** * @since 2.1.5; before 2.1.5 the method was private */ protected void updateCalculationOrder(PdfReader reader) { PdfDictionary catalog = reader.getCatalog(); PdfDictionary acro = catalog.getAsDict(PdfName.ACROFORM); if (acro == null) return; PdfArray co = acro.getAsArray(PdfName.CO); if (co == null || co.size() == 0) return; AcroFields af = reader.getAcroFields(); for (int k = 0; k < co.size(); ++k) { PdfObject obj = co.getPdfObject(k); if (obj == null || !obj.isIndirect()) continue; String name = getCOName(reader, (PRIndirectReference)obj); if (af.getFieldItem(name) == null) continue; name = "." + name; if (calculationOrder.contains(name)) continue; calculationOrder.add(name); } }
protected void setField(String fieldName, String fieldContent) throws IOException, DocumentException { if (fieldContent != null) { form.setField(fieldName, fieldContent); } } }
/** * Gets a new signature fied name that doesn't clash with any existing name. * * @return a new signature fied name */ public final String getNewSigName() { AcroFields af = writer.getAcroFields(); String name = "Signature"; int step = 0; boolean found = false; while (!found) { ++step; String n1 = name + step; if (af.getFieldItem(n1) != null) continue; n1 += "."; found = true; for (Iterator it = af.getFields().keySet().iterator(); it.hasNext();) { String fn = (String) it.next(); if (fn.startsWith(n1)) { found = false; break; } } } name += step; return name; }