List of usage examples for com.lowagie.text.pdf PdfStamper PdfStamper
public PdfStamper(PdfReader reader, OutputStream os) throws DocumentException, IOException
From source file:ispyb.common.util.PDFFormFiller.java
License:Open Source License
public void init(InputStream input, OutputStream os) throws Exception { try {//from w ww . j av a 2s. c om this.reader = new PdfReader(input); this.stamper = new PdfStamper(this.reader, os); this.writer = this.stamper.getWriter(); this.writer.setPdfVersion(PdfWriter.VERSION_1_3); this.setPageOrientation(PAGE_PORTRAIT); this.formFields = this.stamper.getAcroFields(); } catch (Exception e) { LOG.error("init", e); throw new Exception("Error initializing the PDF objects for file bytes."); } }
From source file:it.flavianopetrocchi.jpdfbookmarks.itextbookmarksconverter.iTextBookmarksConverter.java
License:Open Source License
@Override public void createUnencryptedCopy(File tmpFile) throws IOException { try {/* w ww .ja v a 2 s . c o m*/ PdfStamper tmpStamper = new PdfStamper(reader, new FileOutputStream(tmpFile)); tmpStamper.close(); } catch (DocumentException ex) { } }
From source file:it.flavianopetrocchi.jpdfbookmarks.itextbookmarksconverter.iTextBookmarksConverter.java
License:Open Source License
public void save(String path, byte[] userPassword, byte[] ownerPassword) throws IOException { try {/* w w w. jav a 2s .com*/ File tmp = File.createTempFile("jpdf", ".pdf"); tmp.deleteOnExit(); Ut.copyFile(this.filePath, tmp.getPath()); PdfReader tmpReader; if (ownerPassword != null) { tmpReader = new PdfReader(tmp.getPath(), ownerPassword); } else if (userPassword != null) { tmpReader = new PdfReader(tmp.getPath(), userPassword); } else { tmpReader = new PdfReader(tmp.getPath()); } stamper = new PdfStamper(tmpReader, new FileOutputStream(path)); if (outline != null) { stamper.setOutlines(outline); } int preferences = reader.getSimpleViewerPreferences(); if (showOnOpen) { preferences |= PdfWriter.PageModeUseOutlines; } else { preferences = preferences & ~PdfWriter.PageModeUseOutlines; } stamper.setViewerPreferences(preferences); if (ownerPassword != null || userPassword != null) { // tmpReader.computeUserPassword(); if (ownerPassword == null && userPassword != null) { ownerPassword = userPassword; } stamper.setEncryption(userPassword, ownerPassword, tmpReader.getPermissions(), tmpReader.getCryptoMode()); } stamper.close(); tmp.delete(); } catch (DocumentException ex) { } }
From source file:it.jugpadova.blo.ParticipantBadgeBo.java
License:Apache License
/** * Build a PDF with the badges of confirmed participants. *//*from w ww . j a va2 s . c o m*/ public byte[] buildPDFBadges(Event event) throws IOException, DocumentException { List<Participant> participants = participantDao .findConfirmedParticipantsByEventIdOrderByLastNameAndFirstName(event.getId()); int participantsPerPage = getParticipantsPerPage(event); int pages = (participants.size() / participantsPerPage) + 2; // prints a more page with empty badges ByteArrayOutputStream pdfMergedBaos = new ByteArrayOutputStream(); PdfCopyFields pdfMerged = new PdfCopyFields(pdfMergedBaos); int newIndex = 1; for (int i = 0; i < pages; i++) { InputStream templateIs = getBadgePageTemplateInputStream(event); RandomAccessFileOrArray rafa = new RandomAccessFileOrArray(templateIs); PdfReader template = new PdfReader(rafa, null); ByteArrayOutputStream pdfPageBaos = new ByteArrayOutputStream(); PdfStamper pdfPage = new PdfStamper(template, pdfPageBaos); AcroFields pdfPageForm = pdfPage.getAcroFields(); for (int j = 1; j <= participantsPerPage; j++) { pdfPageForm.renameField("title" + j, "title" + newIndex); pdfPageForm.renameField("firstName" + j, "firstName" + newIndex); pdfPageForm.renameField("lastName" + j, "lastName" + newIndex); pdfPageForm.renameField("firm" + j, "firm" + newIndex); pdfPageForm.renameField("role" + j, "role" + newIndex); newIndex++; } pdfPage.close(); template.close(); pdfMerged.addDocument(new PdfReader(pdfPageBaos.toByteArray())); } pdfMerged.close(); ByteArrayOutputStream resultBaos = new ByteArrayOutputStream(); PdfReader mergedReader = new PdfReader(pdfMergedBaos.toByteArray()); PdfStamper mergedStamper = new PdfStamper(mergedReader, resultBaos); AcroFields mergedForm = mergedStamper.getAcroFields(); int count = 1; for (int i = 0; i < pages; i++) { for (int j = 1; j <= participantsPerPage; j++) { mergedForm.setField("title" + count, event.getTitle()); count++; } } count = 1; for (Participant participant : participants) { mergedForm.setField("firstName" + count, participant.getFirstName()); mergedForm.setField("lastName" + count, participant.getLastName()); count++; } mergedStamper.setFormFlattening(true); mergedStamper.close(); return resultBaos.toByteArray(); }
From source file:it.pdfsam.console.tools.pdf.PdfEncrypt.java
License:Open Source License
/** * Execute the encrypt command. On error an exception is thrown. * @throws EncryptException//from w w w .j ava 2 s. c o m */ public void execute() throws EncryptException { try { workingIndeterminate(); out_message = ""; int f = 0; for (Iterator f_list_itr = f_list.iterator(); f_list_itr.hasNext();) { String file_name = f_list_itr.next().toString(); prefixParser = new PrefixParser(prefix_value, new File(file_name).getName()); File tmp_o_file = TmpFileNameGenerator.generateTmpFile(o_dir.getAbsolutePath()); out_message += LogFormatter.formatMessage("Temporary file created-\n"); PdfReader pdfReader = new PdfReader(new RandomAccessFileOrArray(file_name), null); HashMap meta = pdfReader.getInfo(); meta.put("Creator", MainConsole.CREATOR); PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(tmp_o_file)); if (compressed_boolean) { pdfStamper.setFullCompression(); } pdfStamper.setMoreInfo(meta); pdfStamper.setEncryption(etype, u_pwd, a_pwd, user_permissions); pdfStamper.close(); /*PdfEncryptor.encrypt(pdf_reader,new FileOutputStream(tmp_o_file), etype, u_pwd, a_pwd,user_permissions, meta);*/ File out_file = new File(o_dir, prefixParser.generateFileName()); renameTemporaryFile(tmp_o_file, out_file, overwrite_boolean); f++; } out_message += LogFormatter.formatMessage("Pdf files encrypted in " + o_dir.getAbsolutePath() + "-\n" + PdfEncryptor.getPermissionsVerbose(user_permissions)); } catch (Exception e) { throw new EncryptException(e); } finally { workCompleted(); } }
From source file:lucee.runtime.tag.PDF.java
License:Open Source License
private void doActionAddWatermark() throws PageException, IOException, DocumentException { required("pdf", "addWatermark", "source", source); if (copyFrom == null && image == null) throw new ApplicationException( "at least one of the following attributes must be defined " + "[copyFrom,image]"); if (destination != null && destination.exists() && !overwrite) throw new ApplicationException("destination file [" + destination + "] already exists"); // image/*from w ww. ja v a 2s. com*/ Image img = null; if (image != null) { lucee.runtime.img.Image ri = lucee.runtime.img.Image.createImage(pageContext, image, false, false, true, null); img = Image.getInstance(ri.getBufferedImage(), null, false); } // copy From else { byte[] barr; try { Resource res = Caster.toResource(pageContext, copyFrom, true); barr = IOUtil.toBytes(res); } catch (ExpressionException ee) { barr = Caster.toBinary(copyFrom); } img = Image.getInstance(PDFUtil.toImage(barr, 1).getBufferedImage(), null, false); } // position float x = UNDEFINED, y = UNDEFINED; if (!StringUtil.isEmpty(position)) { int index = position.indexOf(','); if (index == -1) throw new ApplicationException("attribute [position] has an invalid value [" + position + "]," + "value should follow one of the following pattern [40,50], [40,] or [,50]"); String strX = position.substring(0, index).trim(); String strY = position.substring(index + 1).trim(); if (!StringUtil.isEmpty(strX)) x = Caster.toIntValue(strX); if (!StringUtil.isEmpty(strY)) y = Caster.toIntValue(strY); } PDFDocument doc = toPDFDocument(source, password, null); doc.setPages(pages); PdfReader reader = doc.getPdfReader(); reader.consolidateNamedDestinations(); boolean destIsSource = destination != null && doc.getResource() != null && destination.equals(doc.getResource()); java.util.List bookmarks = SimpleBookmark.getBookmark(reader); ArrayList master = new ArrayList(); if (bookmarks != null) master.addAll(bookmarks); // output OutputStream os = null; if (!StringUtil.isEmpty(name) || destIsSource) { os = new ByteArrayOutputStream(); } else if (destination != null) { os = destination.getOutputStream(); } try { int len = reader.getNumberOfPages(); PdfStamper stamp = new PdfStamper(reader, os); if (len > 0) { if (x == UNDEFINED || y == UNDEFINED) { PdfImportedPage first = stamp.getImportedPage(reader, 1); if (y == UNDEFINED) y = (first.getHeight() - img.getHeight()) / 2; if (x == UNDEFINED) x = (first.getWidth() - img.getWidth()) / 2; } img.setAbsolutePosition(x, y); //img.setAlignment(Image.ALIGN_JUSTIFIED); ration geht nicht anhand mitte } // rotation if (rotation != 0) { img.setRotationDegrees(rotation); } Set _pages = doc.getPages(); for (int i = 1; i <= len; i++) { if (_pages != null && !_pages.contains(Integer.valueOf(i))) continue; PdfContentByte cb = foreground ? stamp.getOverContent(i) : stamp.getUnderContent(i); PdfGState gs1 = new PdfGState(); //print.out("op:"+opacity); gs1.setFillOpacity(opacity); //gs1.setStrokeOpacity(opacity); cb.setGState(gs1); cb.addImage(img); } if (bookmarks != null) stamp.setOutlines(master); stamp.close(); } finally { IOUtil.closeEL(os); if (os instanceof ByteArrayOutputStream) { if (destination != null) IOUtil.copy(new ByteArrayInputStream(((ByteArrayOutputStream) os).toByteArray()), destination, true);// MUST overwrite if (!StringUtil.isEmpty(name)) { pageContext.setVariable(name, new PDFDocument(((ByteArrayOutputStream) os).toByteArray(), password)); } } } }
From source file:lucee.runtime.tag.PDF.java
License:Open Source License
private void doActionRemoveWatermark() throws PageException, IOException, DocumentException { required("pdf", "removeWatermark", "source", source); if (destination != null && destination.exists() && !overwrite) throw new ApplicationException("destination file [" + destination + "] already exists"); lucee.runtime.img.Image ri = new lucee.runtime.img.Image(1, 1, BufferedImage.TYPE_INT_RGB, Color.BLACK); Image img = Image.getInstance(ri.getBufferedImage(), null, false); img.setAbsolutePosition(1, 1);//from w ww. j a va2 s . c o m PDFDocument doc = toPDFDocument(source, password, null); doc.setPages(pages); PdfReader reader = doc.getPdfReader(); boolean destIsSource = destination != null && doc.getResource() != null && destination.equals(doc.getResource()); java.util.List bookmarks = SimpleBookmark.getBookmark(reader); ArrayList master = new ArrayList(); if (bookmarks != null) master.addAll(bookmarks); // output OutputStream os = null; if (!StringUtil.isEmpty(name) || destIsSource) { os = new ByteArrayOutputStream(); } else if (destination != null) { os = destination.getOutputStream(); } try { int len = reader.getNumberOfPages(); PdfStamper stamp = new PdfStamper(reader, os); Set _pages = doc.getPages(); for (int i = 1; i <= len; i++) { if (_pages != null && !_pages.contains(Integer.valueOf(i))) continue; PdfContentByte cb = foreground ? stamp.getOverContent(i) : stamp.getUnderContent(i); PdfGState gs1 = new PdfGState(); gs1.setFillOpacity(0); cb.setGState(gs1); cb.addImage(img); } if (bookmarks != null) stamp.setOutlines(master); stamp.close(); } finally { IOUtil.closeEL(os); if (os instanceof ByteArrayOutputStream) { if (destination != null) IOUtil.copy(new ByteArrayInputStream(((ByteArrayOutputStream) os).toByteArray()), destination, true);// MUST overwrite if (!StringUtil.isEmpty(name)) { pageContext.setVariable(name, new PDFDocument(((ByteArrayOutputStream) os).toByteArray(), password)); } } } }
From source file:lucee.runtime.tag.PDF.java
License:Open Source License
private void doActionSetInfo() throws PageException, IOException, DocumentException { required("pdf", "setInfo", "info", info); required("pdf", "getInfo", "source", source); PDFDocument doc = toPDFDocument(source, password, null); PdfReader pr = doc.getPdfReader();//w w w . j av a2s . c o m OutputStream os = null; try { if (destination == null) { if (doc.getResource() == null) throw new ApplicationException( "source is not based on a resource, destination file is required"); destination = doc.getResource(); } else if (destination.exists() && !overwrite) throw new ApplicationException("destination file [" + destination + "] already exists"); PdfStamper stamp = new PdfStamper(pr, os = destination.getOutputStream()); HashMap moreInfo = new HashMap(); //Key[] keys = info.keys(); Iterator<Entry<Key, Object>> it = info.entryIterator(); Entry<Key, Object> e; while (it.hasNext()) { e = it.next(); moreInfo.put(StringUtil.ucFirst(e.getKey().getLowerString()), Caster.toString(e.getValue())); } // author Object value = info.get(KeyConstants._author, null); if (value != null) moreInfo.put("Author", Caster.toString(value)); // keywords value = info.get("keywords", null); if (value != null) moreInfo.put("Keywords", Caster.toString(value)); // title value = info.get(KeyConstants._title, null); if (value != null) moreInfo.put("Title", Caster.toString(value)); // subject value = info.get(KeyConstants._subject, null); if (value != null) moreInfo.put("Subject", Caster.toString(value)); // creator value = info.get("creator", null); if (value != null) moreInfo.put("Creator", Caster.toString(value)); // trapped value = info.get("Trapped", null); if (value != null) moreInfo.put("Trapped", Caster.toString(value)); // Created value = info.get("Created", null); if (value != null) moreInfo.put("Created", Caster.toString(value)); // Language value = info.get("Language", null); if (value != null) moreInfo.put("Language", Caster.toString(value)); stamp.setMoreInfo(moreInfo); stamp.close(); } finally { IOUtil.closeEL(os); pr.close(); } }
From source file:mpv5.utils.export.PDFFile.java
License:Open Source License
@Override public void run() { Log.Debug(this, "All fields:"); for (Iterator<String> it = getData().keySet().iterator(); it.hasNext();) { String k = it.next();//from w w w .j a v a 2 s. c o m Log.Debug(this, "Key: " + k + " [" + getData().get(k) + "]"); } try { Log.Debug(this, "Running export for template file: " + getPath() + " to file: " + getTarget()); try { template = new PdfReader(getPath()); } catch (Exception iOException) { Log.Debug(iOException); } Log.Debug(this, "Checking PDF File: " + getPath()); acroFields = template.getAcroFields(); Log.Debug(this, "Creating PDF File: " + getTarget().getPath()); PdfStamper pdfStamper = new PdfStamper(template, new FileOutputStream(getTarget().getPath())); pdfStamper.setFormFlattening(true); acroFields = pdfStamper.getAcroFields(); HashMap PDFFields = acroFields.getFields(); for (Iterator it = PDFFields.keySet().iterator(); it.hasNext();) { Object object = it.next(); String keyt = String.valueOf(object); if (getData().get(keyt) != null) { Log.Debug(this, "Filling Field: " + object + " [" + getData().get(keyt) + "]"); if (!keyt.startsWith("image")) { acroFields.setField(keyt, String.valueOf(getData().get(keyt))); } else { setImage(pdfStamper, keyt, ((MPIcon) getData().get(keyt)).getImage()); } } if (getData().get(keyt.replace("_", ".")) != null) { Log.Debug(this, "Filling Field: " + object + " [" + getData().get(keyt) + "]"); if (!keyt.startsWith("image")) { acroFields.setField(keyt, String.valueOf(getData().get(keyt.replace("_", ".")))); } else { setImage(pdfStamper, keyt, ((MPIcon) getData().get(keyt)).getImage()); } } } Log.Debug(this, "Looking for tables in: " + getName()); for (Iterator<String> it = getData().keySet().iterator(); it.hasNext();) { String key = it.next(); if (key.contains(TableHandler.KEY_TABLE)) {//Table found @SuppressWarnings("unchecked") List<String[]> value = (List<String[]>) getData().get(key); for (int i = 0; i < value.size(); i++) { String[] strings = value.get(i); if (getTemplate() != null) { strings = refactorRow(getTemplate(), strings); } for (int j = 0; j < strings.length; j++) { String cellValue = strings[j]; String fieldname = "col" + j + "row" + i; Log.Debug(this, "Filling Field: " + fieldname + " [" + getData().get(cellValue) + "]"); acroFields.setField(fieldname, cellValue); } } } } pdfStamper.close(); Log.Debug(this, "Done file: " + getTarget().getPath()); } catch (Exception ex) { Log.Debug(ex); } }
From source file:net.laubenberger.bogatyr.helper.HelperPdf.java
License:Open Source License
/** * Modifies the meta data of given PDF and stores it in a new {@link File}. * <strong>Meta data example:"</strong> metadata.put("Title", "Example"); * metadata.put("Author", "Stefan Laubenberger"); metadata.put("Subject", * "Example PDF meta data"); metadata.put("Keywords", "Example, PDF"); * metadata.put("Creator", "http://www.laubenberger.net/"); * metadata.put("Producer", "Silvan Spross"); * /*from w ww . java 2s .c o m*/ * @param source * {@link File} * @param dest * {@link File} for the modified PDF * @param metadata * list with the new meta data informations * @throws DocumentException * @throws IOException * @since 0.7.0 */ @SuppressWarnings("unchecked") public static void setMetaData(final File source, final File dest, final Map<String, String> metadata) throws IOException, DocumentException { // $JUnit$ if (log.isDebugEnabled()) log.debug(HelperLog.methodStart(source, dest, metadata)); if (null == source) { throw new RuntimeExceptionIsNull("source"); //$NON-NLS-1$ } if (null == dest) { throw new RuntimeExceptionIsNull("dest"); //$NON-NLS-1$ } if (HelperObject.isEquals(source, dest)) { throw new RuntimeExceptionIsEquals("source", "dest"); //$NON-NLS-1$ //$NON-NLS-2$ } if (null == metadata) { throw new RuntimeExceptionIsNull("metadata"); //$NON-NLS-1$ } PdfReader reader = null; PdfStamper stamper = null; try { reader = new PdfReader(source.getAbsolutePath()); stamper = new PdfStamper(reader, new FileOutputStream(dest)); final HashMap<String, String> info = reader.getInfo(); info.putAll(metadata); stamper.setMoreInfo(info); } finally { if (null != stamper) { stamper.close(); } if (null != reader) { reader.close(); } } if (log.isDebugEnabled()) log.debug(HelperLog.methodExit()); }