Example usage for com.lowagie.text.pdf PdfReader PdfReader

List of usage examples for com.lowagie.text.pdf PdfReader PdfReader

Introduction

In this page you can find the example usage for com.lowagie.text.pdf PdfReader PdfReader.

Prototype

public PdfReader(PdfReader reader) 

Source Link

Document

Creates an independent duplicate.

Usage

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("&", "&amp;")
                                    + "\" 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();
}