List of usage examples for com.lowagie.text.pdf PdfReader PdfReader
public PdfReader(PdfReader reader)
From source file:com.orange.atk.atkUI.corecli.utils.PdfUtilities.java
License:Apache License
/** * Encrypt (allow only printing permission) the given pdf file with the given passwords. * Encryption must be the latest operation on the file. * @param pdfFileName/*from w ww.j ava2s. c o m*/ * @throws IOException * @throws DocumentException */ public void encryptPDF(String pdfFileName) throws IOException, DocumentException { // 1. copy File tmpPDFFile = new File(tmpDir, "tmpPDF.pdf"); copyFile(new File(pdfFileName), tmpPDFFile); // 2. encrypt PdfReader reader = new PdfReader(tmpPDFFile.getAbsolutePath()); PdfEncryptor.encrypt(reader, new FileOutputStream(pdfFileName), true, pdfEncryptionUserPassword, pdfEncryptionOwnerPassword, PdfWriter.AllowPrinting /*| PdfWriter.AllowCopy*/); }
From source file:com.orange.atk.atkUI.corecli.utils.PdfUtilities.java
License:Apache License
/** * Adds a logo to the given pdf file./*from w w w. ja va2 s .co m*/ * @param pdfFileName * @param imageFileName * @param x position for image * @param y position for image * @throws Exception */ public void addWatermark(String pdfFileName, String imageFileName, int x, int y) throws Exception { // 1. copy File tmpPDFFile = new File(tmpDir, "tmpPDF.pdf"); copyFile(new File(pdfFileName), tmpPDFFile); // 2. add watermark // we create a reader for a certain document PdfReader reader = new PdfReader(tmpPDFFile.getAbsolutePath()); int n = reader.getNumberOfPages(); // we create a stamper that will copy the document to a new file PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(pdfFileName)); // adding content to each page int i = 0; PdfContentByte under; Image img = Image.getInstance(imageFileName); img.setAbsolutePosition(x, y); while (i < n) { i++; // watermark under the existing page under = stamp.getUnderContent(i); under.addImage(img); } // closing PdfStamper will generate the new PDF file stamp.close(); }
From source file:com.orange.atk.atkUI.corecli.utils.PdfUtilities.java
License:Apache License
/** * Adds a text in the given pdf file./*from w w w. ja va2 s. c o m*/ * @param pdfFileName * @param text * @param x * @param y * @param rotation * @param page * @throws Exception */ public void addText(String pdfFileName, String text, int x, int y, int rotation, int page) throws Exception { // see example on http://itextdocs.lowagie.com/examples/com/lowagie/examples/general/copystamp/AddWatermarkPageNumbers.java // 1. copy File tmpPDFFile = new File(tmpDir, "tmpPDF.pdf"); copyFile(new File(pdfFileName), tmpPDFFile); // 2. add text // we create a reader for a certain document PdfReader reader = new PdfReader(tmpPDFFile.getAbsolutePath()); // we create a stamper that will copy the document to a new file PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(pdfFileName)); // adding content to each page PdfContentByte over; BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED); over = stamp.getOverContent(page); over.beginText(); over.setFontAndSize(bf, 32); over.setTextMatrix(30, 30); over.setColorFill(java.awt.Color.RED); over.showTextAligned(Element.ALIGN_LEFT, text, x, y, rotation); over.endText(); // closing PdfStamper will generate the new PDF file stamp.close(); }
From source file:com.orange.atk.atkUI.corecli.utils.PdfUtilities.java
License:Apache License
public void addTemplate(String pdfFileName, String templatePDFFileName) throws Exception { // see example on http://itextdocs.lowagie.com/examples/com/lowagie/examples/general/copystamp/AddWatermarkPageNumbers.java // 1. copy/*from w ww . j a va 2s.co m*/ File tmpPDFFile = new File(tmpDir, "tmpPDF.pdf"); copyFile(new File(pdfFileName), tmpPDFFile); // 2. add template on all pages // we create a reader for a certain document PdfReader reader = new PdfReader(tmpPDFFile.getAbsolutePath()); // we create a stamper that will copy the document to a new file PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(pdfFileName)); // adding content to each page int n = reader.getNumberOfPages(); int i = 0; // a reader for the template document PdfReader reader2 = new PdfReader(templatePDFFileName); PdfContentByte under; while (i < n) { i++; // template under the existing page under = stamp.getUnderContent(i); //under.addTemplate(stamp.getImportedPage(reader2, 1), 1, 0, 0, 1, 0, 0); under.addTemplate(stamp.getImportedPage(reader2, 1), -10, -50); } // closing PdfStamper will generate the new PDF file stamp.close(); }
From source file:com.qubit.terra.docs.util.ReportGenerator.java
License:Open Source License
public static byte[] concatPDFs(Collection<byte[]> documents) { try {//w w w. j a va 2 s. com ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); PdfCopyFields copy = new PdfCopyFields(outputStream); for (byte[] doc : documents) { copy.addDocument(new PdfReader(doc)); } copy.close(); return outputStream.toByteArray(); } catch (DocumentException e) { throw new ReportGenerationException("Error in opening document", e); } catch (IOException e) { throw new ReportGenerationException("Error in opening document", e); } }
From source file:com.sapienter.jbilling.server.invoice.PaperInvoiceBatchBL.java
License:Open Source License
/** * Takes a list of invoices and replaces the individual PDF files for one * single PDF in the destination directory. * @param destination/* w w w . ja v a 2s. c o m*/ * @param prefix * @param entityId * @param invoices * @throws PdfFormatException * @throws IOException */ public void compileInvoiceFiles(String destination, String prefix, Integer entityId, Integer[] invoices) throws DocumentException, IOException { String filePrefix = Util.getSysProp("base_dir") + "invoices/" + entityId + "-"; String outFile = destination + prefix + "-batch.pdf"; int pageOffset = 0; ArrayList master = new ArrayList(); Document document = null; PdfCopy writer = null; for (int f = 0; f < invoices.length; f++) { // we create a reader for a certain document PdfReader reader = new PdfReader(filePrefix + invoices[f] + "-invoice.pdf"); reader.consolidateNamedDestinations(); // we retrieve the total number of pages int numberOfPages = reader.getNumberOfPages(); List bookmarks = SimpleBookmark.getBookmark(reader); if (bookmarks != null) { if (pageOffset != 0) SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null); master.addAll(bookmarks); } pageOffset += numberOfPages; if (f == 0) { // step 1: creation of a document-object document = new Document(reader.getPageSizeWithRotation(1)); // step 2: we create a writer that listens to the document writer = new PdfCopy(document, new FileOutputStream(outFile)); // step 3: we open the document document.open(); } // step 4: we add content PdfImportedPage page; for (int i = 0; i < numberOfPages;) { ++i; page = writer.getImportedPage(reader, i); writer.addPage(page); } PRAcroForm form = reader.getAcroForm(); if (form != null) writer.copyAcroForm(reader); //release and delete writer.freeReader(reader); reader.close(); File file = new File(filePrefix + invoices[f] + "-invoice.pdf"); file.delete(); } if (!master.isEmpty()) writer.setOutlines(master); // step 5: we close the document if (document != null) { document.close(); } else { LOG.warn("document == null"); } LOG.debug("PDF batch file is ready " + outFile); }
From source file:com.servoy.extensions.plugins.pdf_forms.servlets.PDFServlet.java
License:Open Source License
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String hostname = request.getServerName(); int port = request.getServerPort(); String base = request.getScheme() + "://" + hostname; // fix for bad pdf behavior, if we add default port it will not work!!!!! if (port != 80 && port != 443) base += ":" + port; String uri = request.getRequestURI();//with servlet name String path = request.getPathInfo(); //without servlet name Connection conn = null;/*w w w .java 2 s . com*/ ServletOutputStream out = null; try { // Determine target page. if (path == null) { response.sendRedirect(request.getRequestURI() + "/"); return; } else if ("/".equals(path)) { response.sendError(404); return; } else if (path.startsWith("/pdf_forms/pdf_form")) { addHeaders(response); String s_action_id = request.getParameter("action_id"); int action_id = Utils.getAsInteger(s_action_id); conn = app.getDBServerConnection(PDF_SERVER, null); if (conn == null) Debug.error("Could not find Server " + PDF_SERVER); if (action_id > 0 && conn != null) { Statement st = conn.createStatement(); ResultSet rs = st.executeQuery( "select form_id,template_id,action_type,closed from pdf_actions where action_id = " + action_id); if (rs.next()) { int form_id = rs.getInt(1); int template_id = rs.getInt(2); int action_type = rs.getInt(3); int closed = rs.getInt(4); if (closed == 0) { Map<String, String> values = new HashMap<String, String>(); byte[] pdfContent = null; Statement stContent = conn.createStatement(); ResultSet rsContent = stContent.executeQuery( "select actual_pdf_form from pdf_templates where template_id = " + template_id); if (rsContent.next()) { pdfContent = rsContent.getBytes(1); } PdfReader reader = new PdfReader(pdfContent); XfaForm xfa = new XfaForm(reader); FDFDoc outputFDF = null; if (!xfa.isXfaPresent()) { outputFDF = new FDFDoc(); } String sub = uri.substring(0, uri.length() - path.length()); String url = base + sub + "/pdf_forms/pdf_process_data"; if (action_type == EDIT || !xfa.isXfaPresent()) { values.put(ACTION_PROPERTY, Integer.toString(action_id)); Debug.trace("Using " + URL_PROPERTY + ": " + url); values.put(URL_PROPERTY, url); } //fill Statement st1 = conn.createStatement(); ResultSet rs1 = st1.executeQuery( "select value_name,field_value from pdf_form_values where form_id = " + form_id); while (rs1.next()) { String name = rs1.getString(1); String val = rs1.getString(2); if (val != null) values.put(name, val); } rs1.close(); st1.close(); //get name String filename = "fromdb"; boolean skipButton = false; Statement st2 = conn.createStatement(); ResultSet rs2 = st2.executeQuery( "select filename,skip_placing_submit_button from pdf_templates where template_id = " + template_id); if (rs2.next()) { filename = rs2.getString(1); skipButton = rs2.getBoolean(2); } rs2.close(); st2.close(); String templateLocation = request.getParameter("overrideTemplateLocation"); ; if (templateLocation == null) { if (genericTemplateLocation == null) { templateLocation = base + sub + "/pdf_forms/pdf_template/" + filename + "?template_id=" + template_id + "&rnd=" + rnd.nextInt(); } else { templateLocation = genericTemplateLocation + filename; } } if (outputFDF != null) { outputFDF.SetFile(templateLocation); StringBuffer sb = new StringBuffer(); if (action_type == EDIT) { if (!skipButton) { sb.append("var inch = 72;\n"); sb.append("var aRect = this.getPageBox( {nPage: 0} );\n"); sb.append("aRect[0] = 1;\n");//.5*inch; // position rectangle (.5 inch, .5 inch) sb.append("aRect[2] = aRect[0]+.5*inch;\n"); // from upper left hand corner of page. sb.append("aRect[1] -= 1;//.5*inch;\n"); // Make it .5 inch wide sb.append("aRect[3] = aRect[1] - 24;\n");// and 24 points high // sb.append("var aRect2 = this.getPageBox( {nPage: 0} );\n"); // sb.append("aRect2[0] = .5*inch; // position rectangle (.5 inch, .5 inch)\n"); // sb.append("aRect2[2] = aRect2[0]+.5*inch; // from upper left hand corner of page.\n"); // sb.append("aRect2[1] -= .5*inch; // Make it .5 inch wide\n"); // sb.append("aRect2[3] = aRect2[1] - 24; // and 24 points high\n"); sb.append("var f = this.addField('servoySubmit', 'button', 0, aRect )\n"); sb.append("f.setAction('MouseUp', 'this.submitForm(\"" + url + "?action_id=" + action_id + "\")');\n"); sb.append("f.display = display.noPrint;\n"); sb.append("f.borderStyle = border.b;\n"); sb.append("f.highlight = 'push';\n"); sb.append("f.textSize = 0; // auto sized\n"); sb.append("f.textColor = color.blue;\n"); sb.append("f.fillColor = color.green;//ltGray;\n"); sb.append("f.print = false;\n"); // sb.append("f.textFont = font.ZapfD\n"); sb.append("f.buttonSetCaption('Submit')\n"); sb.append("f.delay = false;\n"); // sb.append("var h = this.addField('pdmSubmitAction', 'text', 0, aRect2 )\n"); // sb.append("h.visible = display.hidden;\n"); // sb.append("h.defaultValue = '"+action_id+"';\n"); // sb.append("h.readonly = true;\n"); } } else { sb.append("for (var i = 0; i < this.numFields; i++)\n"); sb.append("{\n"); sb.append(" var fname = this.getNthFieldName(i);\n"); sb.append(" if (fname != 'pdmSubmitAction')\n"); sb.append(" {\n"); sb.append(" var ef = this.getField(fname);\n"); sb.append(" ef.readonly = true;\n"); sb.append(" }\n"); sb.append("}\n"); } if (sb.length() != 0) outputFDF.SetOnImportJavaScript(sb.toString(), false); Iterator<String> it = values.keySet().iterator(); while (it.hasNext()) { String name = it.next(); outputFDF.SetValue(name, values.get(name)); } } out = response.getOutputStream(); if (outputFDF != null) { response.setContentType("application/vnd.fdf"); outputFDF.Save(out); } else { response.setContentType("application/vnd.adobe.xdp+xml"); StringBuffer buffer = new StringBuffer(); buffer.append("<?xml version='1.0' encoding='UTF-8'?>\n"); buffer.append("<?xfa generator='AdobeDesigner_V7.0' APIVersion='2.2.4333.0'?>\n"); buffer.append("<xdp:xdp xmlns:xdp=\"http://ns.adobe.com/xdp/\">\n"); buffer.append( "<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">\n"); buffer.append("<xfa:data>\n"); buffer.append("<form>\n"); Iterator<String> it = values.keySet().iterator(); while (it.hasNext()) { String name = it.next(); buffer.append("<" + name + ">" + values.get(name) + "</" + name + ">\n"); } buffer.append("</form>\n"); buffer.append("</xfa:data>\n"); buffer.append("</xfa:datasets>\n"); buffer.append("<pdf href=\"" + templateLocation.replace("&", "&") + "\" xmlns=\"http://ns.adobe.com/xdp/pdf/\">\n"); buffer.append("</pdf>\n"); buffer.append("</xdp:xdp>"); out.print(buffer.toString()); } } else { String msg = "<html><head><title></title></head><body>Security violation, use the pdf system to edit pdfs</body></html>"; response.setContentType("text/html"); Writer wr = response.getWriter(); wr.write(msg); wr.close(); } } rs.close(); st.close(); } } else if (path.startsWith("/pdf_forms/pdf_template")) { addHeaders(response); String s_template_id = request.getParameter("template_id"); int template_id = Utils.getAsInteger(s_template_id); if (template_id > 0) { conn = app.getDBServerConnection(PDF_SERVER, null); if (conn == null) Debug.error("Could not find Server " + PDF_SERVER); if (conn != null) { Statement st = conn.createStatement(); ResultSet rs = st.executeQuery( "select actual_pdf_form from pdf_templates where template_id = " + template_id); if (rs.next()) { response.setContentType("application/pdf"); byte[] array = rs.getBytes(1); if (array != null) { response.setContentLength(array.length); out = response.getOutputStream(); out.write(array); } else { //missing?? response.sendError(404); } } rs.close(); st.close(); } return; } response.sendError(404); return; } else { response.sendError(404); return; } } catch (Exception e) { Debug.error(e); } finally { if (conn != null) Utils.closeConnection(conn); if (out != null) { out.flush(); out.close(); } } }
From source file:com.silverpeas.importExport.control.ImportExport.java
License:Open Source License
/** * @param userDetail/*from ww w . j a v a2 s .c om*/ * @param itemsToExport * @return * @throws ImportExportException */ public ExportPDFReport processExportPDF(UserDetail userDetail, List<WAAttributeValuePair> itemsToExport, NodePK rootPK) throws ImportExportException { ExportPDFReport report = new ExportPDFReport(); report.setDateDebut(new Date()); PublicationsTypeManager pubTypeManager = new PublicationsTypeManager(); String fileExportName = generateExportDirName(userDetail, "fusion"); String tempDir = FileRepositoryManager.getTemporaryPath(); File fileExportDir = new File(tempDir + fileExportName); if (!fileExportDir.exists()) { try { FileFolderManager.createFolder(fileExportDir); } catch (UtilException ex) { throw new ImportExportException("ImportExport", "importExport.EX_CANT_CREATE_FOLDER", ex); } } File pdfFileName = new File(tempDir + fileExportName + ".pdf"); try { // cration des rpertoires avec le nom des thmes et des publications List<AttachmentDetail> pdfList = pubTypeManager.processPDFExport(report, userDetail, itemsToExport, fileExportDir.getPath(), true, rootPK); try { int pageOffset = 0; List master = new ArrayList(); Document document = null; PdfCopy writer = null; if (!pdfList.isEmpty()) { boolean firstPage = true; for (AttachmentDetail attDetail : pdfList) { PdfReader reader = null; try { reader = new PdfReader( fileExportDir.getPath() + File.separatorChar + attDetail.getLogicalName()); } catch (IOException ioe) { // Attached file is not physically present on disk, ignore it and log event SilverTrace.error("importExport", "PublicationTypeManager.processExportPDF", "CANT_FIND_PDF_FILE", "PDF file '" + attDetail.getLogicalName() + "' is not present on disk", ioe); } if (reader != null) { reader.consolidateNamedDestinations(); int nbPages = reader.getNumberOfPages(); List bookmarks = SimpleBookmark.getBookmark(reader); if (bookmarks != null) { if (pageOffset != 0) { SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null); } master.addAll(bookmarks); } pageOffset += nbPages; if (firstPage) { document = new Document(reader.getPageSizeWithRotation(1)); writer = new PdfCopy(document, new FileOutputStream(pdfFileName)); document.open(); firstPage = false; } for (int i = 1; i <= nbPages; i++) { try { PdfImportedPage page = writer.getImportedPage(reader, i); writer.addPage(page); } catch (Exception e) { // Can't import PDF file, ignore it and log event SilverTrace.error("importExport", "PublicationTypeManager.processExportPDF", "CANT_MERGE_PDF_FILE", "PDF file is " + attDetail.getLogicalName(), e); } } PRAcroForm form = reader.getAcroForm(); if (form != null) { writer.copyAcroForm(reader); } } } if (!master.isEmpty()) { writer.setOutlines(master); } writer.flush(); document.close(); } else { return null; } } catch (BadPdfFormatException e) { // Erreur lors de la copie throw new ImportExportException("ImportExport", "root.EX_CANT_WRITE_FILE", e); } catch (DocumentException e) { // Impossible de copier le document throw new ImportExportException("ImportExport", "root.EX_CANT_WRITE_FILE", e); } } catch (IOException e) { // Pb avec le rpertoire de destination throw new ImportExportException("ImportExport", "root.EX_CANT_WRITE_FILE", e); } report.setPdfFileName(pdfFileName.getName()); report.setPdfFileSize(pdfFileName.length()); report.setPdfFilePath(FileServerUtils.getUrlToTempDir(pdfFileName.getName())); report.setDateFin(new Date()); return report; }
From source file:com.square.adherent.noyau.service.implementations.RelevePrestationServiceImpl.java
License:Open Source License
@Override public FichierDto getRelevePrestationByteArray(Long idRelevePrestation, Long idPersonne, boolean duplicata) { logger.debug(messageSourceUtil.get(MessageKeyUtil.LOGGER_DEBUG_CONVERSION_RELEVE_PRESTATION, new String[] { String.valueOf(idRelevePrestation) })); final CritereSelectionRelevePrestationDto critereSelectionRelevePrestationDto = new CritereSelectionRelevePrestationDto(); critereSelectionRelevePrestationDto.setRelevePrestationId(idRelevePrestation); if (idPersonne != null) { critereSelectionRelevePrestationDto.setIdPersonne(idPersonne); }//w ww .ja v a 2s .c o m final List<RelevePrestation> lstReleves = relevePrestationDao .getListeReleveParCriteres(critereSelectionRelevePrestationDto, null); if (lstReleves.size() == 1) { final RelevePrestation releve = lstReleves.get(0); final String error = messageSourceUtil.get(MessageKeyUtil.ERROR_RECUPERATION_FICHIER); FichierDto fichier; final String cheminFichier = serveurEmcRepReleve + File.separator + releve.getNomFichier(); try { fichier = new FichierDto(); fichier.setNomFichier(releve.getNomFichierCommercial()); if (duplicata) { // On appose la mention "DUPLICATA" sur toutes les pages du relev. try { final PdfReader reader = new PdfReader(cheminFichier); final int nombrePages = reader.getNumberOfPages(); final BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA_BOLDOBLIQUE, BaseFont.WINANSI, BaseFont.EMBEDDED); final PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(FICHIER_DUPLICATA_TEMP)); final int taillePolice = 56; final int positionX = ((int) PageSize.A4.getWidth()) / 2; final int positionY = ((int) PageSize.A4.getHeight()) / 2; final int rotation = 30; for (int i = 1; i <= nombrePages; i++) { final PdfContentByte over = stamp.getOverContent(i); over.beginText(); over.setColorFill(Color.GRAY); final PdfGState gs1 = new PdfGState(); gs1.setFillOpacity(NIVEAU_TRANSPARENCE); over.setGState(gs1); over.setFontAndSize(bf, taillePolice); over.showTextAligned(PdfContentByte.ALIGN_CENTER, "DUPLICATA", positionX, positionY, rotation); over.endText(); } stamp.close(); reader.close(); fichier.setContenu(IOUtils.toByteArray(new FileInputStream(FICHIER_DUPLICATA_TEMP))); final File file = new File(FICHIER_DUPLICATA_TEMP); file.delete(); } catch (DocumentException e) { throw new TechnicalException( messageSourceUtil.get(MessageKeyUtil.ERROR_IMPOSSIBLE_AJOUTER_MENTION_DUPLICATA, new String[] { releve.getNomFichier() })); } } else { fichier.setContenu(IOUtils.toByteArray(new FileInputStream(cheminFichier))); } fichier.setTypeMime(Magic.getMagicMatch(fichier.getContenu()).getMimeType()); } catch (FileNotFoundException e) { logger.error(error + releve.getNomFichier(), e); throw new TechnicalException(error + cheminFichier); } catch (IOException e) { logger.error(error + releve.getNomFichier(), e); throw new TechnicalException(error + cheminFichier); } catch (MagicParseException e) { logger.error(error + releve.getNomFichier(), e); throw new TechnicalException(error + cheminFichier); } catch (MagicMatchNotFoundException e) { logger.error(error + releve.getNomFichier(), e); throw new TechnicalException(error + cheminFichier); } catch (MagicException e) { logger.error(error + releve.getNomFichier(), e); throw new TechnicalException(error + cheminFichier); } return fichier; } else { throw new TechnicalException( messageSourceUtil.get(MessageKeyUtil.ERROR_ABSCENCE_RELEVE_PRESTATION_PERSONNE)); } }
From source file:com.stackframe.pdfliberator.PDFLiberator.java
License:GNU General Public License
/** * Removes the owner password on a PDF document passed through as a stream. * * @param input the InputStream containing the document to liberate * @param output the OutputStream to write the liberated document to * @throws IOException if there is a problem reading from or writing to the supplied streams * @throws DocumentException if there is a problem parsing or writing the PDF document *//* ww w. j a v a 2 s .com*/ public static void liberate(InputStream input, OutputStream output) throws IOException, DocumentException { PdfReader reader = new PdfReader(input); try { setBooleanField(reader, "ownerPasswordUsed", false); setBooleanField(reader, "encrypted", false); } catch (NoSuchFieldException nsfe) { // We expect these fields to be part of iText. If they are not found, then we are probably using a different version. AssertionError ae = new AssertionError("could not find a field"); ae.initCause(nsfe); throw ae; } reader.removeUsageRights(); PdfCopyFields copy = new PdfCopyFields(output); copy.addDocument(reader); copy.close(); }