Example usage for com.itextpdf.text.pdf PdfReader close

List of usage examples for com.itextpdf.text.pdf PdfReader close

Introduction

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

Prototype

public void close() 

Source Link

Document

Closes the reader, and any underlying stream or data source used to create the reader

Usage

From source file:org.h819.commons.file.MyPDFUtils.java

/**
 *  pdf //www . j  a va  2s.co  m
 *
 * @param srcPdfFile       ?
 * @param descPdfFile      
 * @param userPassword     ?? ,null ?
 * @param ownerPassword    ?? ,null ?
 * @param allowHideMenuBar ????
 * @param allowHideToolbar ??
 * @param allowPrinting    ???
 * @param allowCopy        ???
 * @throws java.io.IOException
 * @throws DocumentException
 */
public static void encryptPdf(File srcPdfFile, File descPdfFile, String userPassword, String ownerPassword,
        boolean allowHideMenuBar, boolean allowHideToolbar, boolean allowPrinting, boolean allowCopy)
        throws IOException {

    if (srcPdfFile == null || !srcPdfFile.exists())
        throw new IOException("src pdf file '" + srcPdfFile + "' does not exist.");

    byte[] userByte = null;
    byte[] ownerByte = null;

    /** User password. */
    if (userPassword != null)
        userByte = userPassword.getBytes();
    /** Owner password. */
    if (ownerPassword != null)
        ownerByte = ownerPassword.getBytes();

    try {

        PdfReader reader = getPdfReader(srcPdfFile);
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(descPdfFile.getAbsoluteFile()));

        // 
        // ???? PdfWriter.setViewerPreferences   addViewerPreference
        // ? api ??? addViewerPreference ?
        // ???"|"()?, ? PdfWriter.HideWindowUI
        // ???, ??

        // ( addViewerPreference )
        stamper.getWriter().addViewerPreference(PdfName.CENTERWINDOW, PdfBoolean.PDFTRUE);
        stamper.getWriter().addViewerPreference(PdfName.DISPLAYDOCTITLE, PdfBoolean.PDFTRUE);
        stamper.getWriter().addViewerPreference(PdfName.FITWINDOW, PdfBoolean.PDFTRUE);
        // writer.addViewerPreference(PdfName.HIDEWINDOWUI,
        // PdfBoolean.PDFTRUE);

        if (!allowHideToolbar)
            stamper.getWriter().addViewerPreference(PdfName.HIDETOOLBAR, PdfBoolean.PDFTRUE);

        if (!allowHideMenuBar)
            stamper.getWriter().addViewerPreference(PdfName.HIDEMENUBAR, PdfBoolean.PDFTRUE);

        //  allow 
        if (allowPrinting && allowCopy)
            stamper.setEncryption(userByte, ownerByte, PdfWriter.ALLOW_PRINTING | PdfWriter.ALLOW_COPY, true);

        else if (allowPrinting)
            stamper.setEncryption(userByte, ownerByte, PdfWriter.ALLOW_PRINTING, true);

        else if (allowCopy)
            stamper.setEncryption(userByte, ownerByte, PdfWriter.ALLOW_COPY, true);

        else
            stamper.setEncryption(userByte, ownerByte, 0, true);

        stamper.close();
        reader.close();

        logger.info(srcPdfFile.getAbsoluteFile() + " encrypt finished.");

    } catch (DocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

From source file:org.h819.commons.file.MyPDFUtils.java

/**
 * http://www.javabeat.net/javascript-in-pdf-documents-using-itext/
 * http://www.javabeat.net/javascript-communication-between-html-and-pdf-in-itext/
 *  PDF  field  javaScript//  w w w  .j  a  v a 2s.c  o  m
 * <p>
 * pdf ? javaScript?????
 * <p>
 * javaScript ?? filed  filed javaScript ???
 * <p>
 * ?? javaScript 
 * <p>
 *  itext  reader.getJavaScript()? pdf  JavaScript??(adobe pro
 * ????)
 * <p>
 * ??? field ??
 *
 * @param srcPdfFileDir   ?
 * @param descPdfFileDir  
 * @param removeFieldName  javaScript ???
 * @throws java.io.IOException
 */
public static void removeFieldJavaScript(File srcPdfFileDir, File descPdfFileDir, String removeFieldName)
        throws IOException {

    if (!srcPdfFileDir.isDirectory()) {
        logger.info("srcPdfFileDir is not a Directory: " + srcPdfFileDir.getAbsolutePath());
        return;
    }

    File listFiles[] = srcPdfFileDir.listFiles();

    if (listFiles.length == 0) {
        logger.info("srcPdfFileDir has not file. " + srcPdfFileDir.getAbsolutePath());
        return;
    }

    FileUtils.forceMkdir(descPdfFileDir);

    // ??

    // 
    long prefixDiskFreeSize = descPdfFileDir.getFreeSpace();
    // ??
    long srcSize = FileUtils.sizeOf(srcPdfFileDir);

    logger.info(descPdfFileDir.getAbsolutePath() + " " + prefixDiskFreeSize / 1000000.00
            + " M");
    logger.info(srcPdfFileDir.getAbsolutePath() + " ? :" + srcSize / 1000000.00 + " M");

    if (prefixDiskFreeSize < srcSize) {

        logger.info(FilenameUtils.getPrefix(descPdfFileDir.getAbsolutePath()) + " has not enoght disk size .");

        return;
    }

    // logger.info(descPdfFileDir.getAbsolutePath());

    for (File f : listFiles) {
        String fileName = f.getName();
        String extensiion = FilenameUtils.getExtension(fileName).toLowerCase();

        PdfReader reader = null;

        PdfStamper stamper = null;

        if (f.isFile()) {
            if (extensiion.equals("pdf")) {

                reader = getPdfReader(f);

                File fileDesc = new File(descPdfFileDir.getAbsolutePath() + File.separator + fileName);

                try {
                    stamper = new PdfStamper(reader, FileUtils.openOutputStream(fileDesc));

                    /**
                     * ???
                     * **/
                    // reader.removeFields();

                    /**
                     * ??? javaScript ?
                     * **/
                    AcroFields form = stamper.getAcroFields();
                    form.removeField(removeFieldName);

                    stamper.close();
                    reader.close();

                } catch (DocumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            } else
                continue;

        } // end if f.isFile

        else if (f.isDirectory()) {
            removeFieldJavaScript(f, new File(descPdfFileDir.getAbsolutePath() + File.separator + fileName),
                    removeFieldName);
        } // end if f.isDirectory
        else
            continue;

    } // end for

    logger.info("finished !");
}

From source file:org.h819.commons.file.MyPDFUtils.java

/**
 * ?pdf???/*from  ww  w .  j  av  a2s  . c om*/
 * <p>
 *  javaScript ???? javaScript ?
 * </p>
 *
 * @param srcPdfFileDir  ?
 * @param descPdfFileDir 
 * @param startDate      ? "2011,01,01"
 * @param alerDays       ???
 * @param expiredDays    ?????
 * @throws java.io.IOException
 */
public static void setExpireDateWithJavaScript(File srcPdfFileDir, File descPdfFileDir, String startDate,
        int alerDays, int expiredDays) throws IOException {

    // ??
    if (alerDays >= expiredDays) {
        logger.info(" ' ' " + alerDays + "  '' " + expiredDays);
        return;
    }

    // ??? ?
    if (StringUtils.countMatches(startDate, ",") != 2) {
        logger.info(startDate + " ??  '2011,01,01' ?");
        return;
    }

    if (!isEnoughSpace(srcPdfFileDir, descPdfFileDir))
        return;

    File listFiles[] = srcPdfFileDir.listFiles();

    if (listFiles.length == 0) {
        logger.info("srcPdfFileDir has not file. " + srcPdfFileDir.getAbsolutePath());
        return;
    }

    // ??
    // String[] resources = new String[]{"/pdfexpiration.js"};
    File resPath = MyFileUtils.copyResourceFileFromJarLibToTmpDir("/pdfexpiration.js"); //????
    // ?
    String jsStr = FileUtils.readFileToString(resPath);

    /** ? js ? */
    // ?
    jsStr = StringUtils.replace(jsStr, "2011,01,01", startDate);
    // ?
    jsStr = StringUtils.replace(jsStr, "alertDays = 355", "alertDays = " + Integer.toString(alerDays));
    // ?
    jsStr = StringUtils.replace(jsStr, "expiredDays = 365", "expiredDays = " + Integer.toString(expiredDays));

    System.out.println(jsStr);

    // logger.info(descPdfFileDir.getAbsolutePath());

    for (File f : listFiles) {
        String fileName = f.getName();
        String extensiion = FilenameUtils.getExtension(fileName).toLowerCase();

        if (f.isFile()) {
            if (extensiion.equals("pdf")) {

                PdfReader reader = getPdfReader(f);

                File fileDesc = new File(descPdfFileDir.getAbsolutePath() + File.separator + fileName);

                try {
                    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(fileDesc));
                    // Get the writer (to add actions and annotations)
                    PdfWriter writer = stamper.getWriter();
                    PdfAction action = PdfAction.javaScript(jsStr, writer, true);
                    //  javaScript ?
                    stamper.setPageAction(PdfWriter.PAGE_OPEN, action, 1);
                    // Close the stamper
                    stamper.close();
                    reader.close();

                    logger.info(fileDesc.getAbsolutePath() + " ? !");

                } catch (DocumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            } else
                continue;

        } // end if f.isFile

        else if (f.isDirectory()) {
            setExpireDateWithJavaScript(f,
                    new File(descPdfFileDir.getAbsolutePath() + File.separator + fileName), startDate, alerDays,
                    expiredDays);
        } // end if f.isDirectory
        else
            continue;

    } // end for
}

From source file:org.h819.commons.file.MyPDFUtils.java

/**
 * ??? findEncryptPdf()/*from   w ww  .  ja  v  a2  s .  co m*/
 *
 * @param srcPdfFileDir 
 * @throws java.io.IOException
 */
private static void testEcryptPdf(File srcPdfFileDir) throws IOException {

    if (!srcPdfFileDir.isDirectory()) {
        logger.info("srcPdfFileDir is not a Directory: " + srcPdfFileDir.getAbsolutePath());
        return;
    }

    File listFiles[] = srcPdfFileDir.listFiles();

    if (listFiles.length == 0) {
        logger.info("srcPdfFileDir has not file. " + srcPdfFileDir.getAbsolutePath());
        return;
    }

    // logger.info(descPdfFileDir.getAbsolutePath());

    for (File f : listFiles) {
        String fileName = f.getName();
        String extension = FilenameUtils.getExtension(fileName).toLowerCase();

        if (f.isFile()) {

            if (extension.equals("pdf")) {

                // ??? 0  40 M 
                if (FileUtils.sizeOf(f) == 0) {

                    tempList.add("size ==0 40M :" + f.getAbsolutePath());
                    continue;
                }

                PdfReader reader;
                try {
                    reader = getPdfReader(f);
                } catch (BadPasswordException e) {
                    // ??
                    e.printStackTrace();
                    tempList.add("BadPassword,can not open :" + f.getAbsolutePath());
                    continue;
                }
                // logger.info("fileDesc name :" + fileDesc.getAbsolutePath());

                if (reader.isEncrypted()) {// 
                    tempList.add("encrypted :" + f.getAbsolutePath());
                    reader.close();
                    continue;
                } else {
                    tempList.add("not encrypted :" + f.getAbsoluteFile());
                    reader.close();
                    continue;
                }

            } // end if f.isFile
            else
                continue;
        } else if (f.isDirectory()) {
            testEcryptPdf(f);
        } // end if f.isDirectory
        else
            continue;

    } // end for

}

From source file:org.h819.commons.file.MyPDFUtilss.java

/**
 * ??? pdf /*from w  ww  .  j a  v  a  2s. c  o  m*/
 * windows 
 * "PDF Password Remover v4.0" ??
 *
 * @param srcPdf        pdf 
 * @param descPdf      ? pdf 
 * @param badDirectory ?? pdf 
 * @throws java.io.IOException
 */

public static void decryptFile(File srcPdf, File descPdf, File badDirectory) {

    String extension = FilenameUtils.getExtension(srcPdf.getAbsolutePath());

    if (!extension.equalsIgnoreCase("pdf"))
        return;
    // ??? 0 ?
    if (FileUtils.sizeOf(srcPdf) == 0) {
        logger.info("{} size =0 ,copy to {}", srcPdf.getAbsoluteFile(), badDirectory.getAbsoluteFile());
        MyFileUtils.copyFileToDirectory(srcPdf, badDirectory);
        return;
    }

    try {

        PdfReader reader = getPdfReader(srcPdf);
        if (!reader.isEncrypted()) {// ?
            FileUtils.copyFile(srcPdf, descPdf);
            logger.info("not encrypted,copy {} to {} ", srcPdf.getAbsolutePath(), descPdf.getAbsoluteFile());
            return;
        }

        List<ExecParameter> list = new ArrayList<>();
        list.add(new ExecParameter("-i", srcPdf.getAbsolutePath())); // ? key  value
        list.add(new ExecParameter("-o", descPdf.getAbsolutePath()));
        //            list.add(new ExecParameter("-u", ""));
        //            list.add(new ExecParameter("-w", ""));
        MyExecUtils.exec(Paths.get(getPdfPdfdecryptExec()), list, 1);
        logger.info("encrypted {} to {}", srcPdf.getAbsolutePath(), descPdf.getAbsolutePath());
        // ??
        reader.close();

    } catch (BadPasswordException e) {
        // ???
        logger.info("{} has user password ,copy to {}", srcPdf.getAbsoluteFile(),
                badDirectory.getAbsoluteFile());
        MyFileUtils.copyFileToDirectory(srcPdf, badDirectory);
        e.printStackTrace();
        return;
    } catch (IOException e) {
        e.printStackTrace();
    }

}

From source file:org.h819.commons.file.MyPDFUtilss.java

/**
 * pdf  owner ? user (owner  user ??)//from w  ww.j a  va2  s  .  com
 * <p>
 *  pdf  ???
 * <p>
 *  pdf ????,?pdf 
 *
 * @param srcPdf        ?
 * @param descPdf       
 * @param ownerPassword ??.
 * @throws java.io.IOException
 * @throws DocumentException
 */
public static void decryptFile(File srcPdf, File descPdf, String ownerPassword)
        throws IOException, DocumentException {

    PdfReader reader = getPdfReader(srcPdf, ownerPassword);
    PdfStamper stamper = getPdfStamper(srcPdf, descPdf);
    stamper.close();
    reader.close();

}

From source file:org.h819.commons.file.MyPDFUtilss.java

/**
 * ?pdf???/*from   ww w  .  jav a 2  s  . co m*/
 * <p>
 *  javaScript ???? javaScript ?
 * </p>
 *
 * @param srcPdfFileDir  ?
 * @param descPdfFileDir 
 * @param startDate      ? "2011,01,01"
 * @param alerDays       ???
 * @param expiredDays    ?????
 * @throws java.io.IOException
 */
public static void setExpireDateWithJavaScript(File srcPdfFileDir, File descPdfFileDir, String startDate,
        int alerDays, int expiredDays) throws IOException {

    // ??
    if (alerDays >= expiredDays) {
        logger.info(" ' ' " + alerDays + "  '' " + expiredDays);
        return;
    }

    // ??? ?
    if (StringUtils.countMatches(startDate, ",") != 2) {
        logger.info(startDate + " ??  '2011,01,01' ?");
        return;
    }

    if (!isEnoughtSpace(srcPdfFileDir, descPdfFileDir))
        return;

    File listFiles[] = srcPdfFileDir.listFiles();

    if (listFiles.length == 0) {
        logger.info("srcPdfFileDir has not file. " + srcPdfFileDir.getAbsolutePath());
        return;
    }

    // ??
    // String[] resources = new String[]{"/pdfexpiration.js"};
    File resPath = MyFileUtils.copyResourceFileFromJarLibToTmpDir("/pdfexpiration.js"); //????
    // ?
    String jsStr = FileUtils.readFileToString(resPath);

    /** ? js ? */
    // ?
    jsStr = StringUtils.replace(jsStr, "2011,01,01", startDate);
    // ?
    jsStr = StringUtils.replace(jsStr, "alertDays = 355", "alertDays = " + Integer.toString(alerDays));
    // ?
    jsStr = StringUtils.replace(jsStr, "expiredDays = 365", "expiredDays = " + Integer.toString(expiredDays));

    System.out.println(jsStr);

    // logger.info(descPdfFileDir.getAbsolutePath());

    for (File f : listFiles) {
        String fileName = f.getName();
        String extensiion = FilenameUtils.getExtension(fileName).toLowerCase();

        if (f.isFile()) {
            if (extensiion.equals("pdf")) {

                PdfReader reader = getPdfReader(f);

                File fileDesc = new File(descPdfFileDir.getAbsolutePath() + File.separator + fileName);

                try {
                    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(fileDesc));
                    // Get the writer (to add actions and annotations)
                    PdfWriter writer = stamper.getWriter();
                    PdfAction action = PdfAction.javaScript(jsStr, writer, true);
                    //  javaScript ?
                    stamper.setPageAction(PdfWriter.PAGE_OPEN, action, 1);
                    // Close the stamper
                    stamper.close();
                    reader.close();

                    logger.info(fileDesc.getAbsolutePath() + " ? !");

                } catch (DocumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            } else
                continue;

        } // end if f.isFile

        else if (f.isDirectory()) {
            setExpireDateWithJavaScript(f,
                    new File(descPdfFileDir.getAbsolutePath() + File.separator + fileName), startDate, alerDays,
                    expiredDays);
        } // end if f.isDirectory
        else
            continue;

    } // end for
}

From source file:org.h819.commons.file.MyPDFUtilss.java

/**
 * ??? findEcryptPdf()//from   w  w  w. j  a v a  2s.c o m
 *
 * @param srcPdfFileDir 
 * @throws java.io.IOException
 */
private static void testEcryptPdf(File srcPdfFileDir) throws IOException {

    encryptPdfNamesTemp = new StringBuffer();

    if (!srcPdfFileDir.isDirectory()) {
        logger.info("srcPdfFileDir is not a Directory: " + srcPdfFileDir.getAbsolutePath());
        return;
    }

    File listFiles[] = srcPdfFileDir.listFiles();

    if (listFiles.length == 0) {
        logger.info("srcPdfFileDir has not file. " + srcPdfFileDir.getAbsolutePath());
        return;
    }

    // logger.info(descPdfFileDir.getAbsolutePath());

    for (File f : listFiles) {
        String fileName = f.getName();
        String extensiion = FilenameUtils.getExtension(fileName).toLowerCase();

        if (f.isFile()) {

            if (extensiion.equals("pdf")) {

                // ??? 0  40 M 
                if (FileUtils.sizeOf(f) == 0 || FileUtils.sizeOf(f) > 40 * 1000000) {

                    encryptPdfNamesTemp.append("size > 40M :" + f.getAbsolutePath() + "\n");
                    continue;
                }

                PdfReader reader = null;
                try {
                    reader = getPdfReader(f);
                } catch (BadPasswordException e) {
                    // ??
                    e.printStackTrace();
                    encryptPdfNamesTemp.append("can not open :" + f.getAbsolutePath() + "\n");
                    continue;
                } catch (Exception e2) {

                    encryptPdfNamesTemp.append("other exception :" + f.getAbsolutePath() + "\n");
                    e2.printStackTrace();
                    continue;

                }
                // logger.info("fileDesc name :" + fileDesc.getAbsolutePath());

                if (reader.isEncrypted()) {// 
                    encryptPdfNamesTemp.append("encrypted :" + f.getAbsolutePath() + "\n");
                    reader.close();
                    continue;
                } else {
                    logger.info("not encrypted :" + f.getAbsoluteFile());
                    reader.close();
                    continue;
                }

            } // end if f.isFile
            else
                continue;
        } else if (f.isDirectory()) {
            testEcryptPdf(f);
        } // end if f.isDirectory
        else
            continue;

    } // end for

}

From source file:org.jfree.chart.swt.ChartPdf.java

License:Open Source License

public static void saveChartAsPDF(File file, JFreeChart chart, int width, int height)
        throws DocumentException, FileNotFoundException, IOException {
    if (chart != null) {
        boolean success = false;
        String old = null;// w w  w  .  j  a  v  a 2  s  . c om
        File oldFile = null;
        boolean append = file.exists();
        if (append) {
            old = file.getAbsolutePath() + ".old"; //$NON-NLS-1$
            oldFile = new File(old);
            oldFile.delete();
            file.renameTo(oldFile);
        }
        try (BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file))) {
            // convert chart to PDF with iText:
            Rectangle pagesize = new Rectangle(width, height);
            if (append) {
                PdfReader reader = new PdfReader(old);
                PdfStamper stamper = new PdfStamper(reader, out);
                try {
                    int n = reader.getNumberOfPages() + 1;
                    stamper.insertPage(n, pagesize);
                    PdfContentByte overContent = stamper.getOverContent(n);
                    writeChart(chart, width, height, overContent);
                    ColumnText ct = new ColumnText(overContent);
                    ct.setSimpleColumn(width - 50, 50, width - 12, height, 150, Element.ALIGN_RIGHT);
                    Paragraph paragraph = new Paragraph(String.valueOf(n),
                            new Font(FontFamily.HELVETICA, 9, Font.NORMAL, BaseColor.DARK_GRAY));
                    paragraph.setAlignment(Element.ALIGN_RIGHT);
                    ct.addElement(paragraph);
                    ct.go();
                    success = true;
                } finally {
                    stamper.close();
                    reader.close();
                    oldFile.delete();
                }
            } else {
                Document document = new Document(pagesize, 50, 50, 50, 50);
                document.addCreationDate();
                document.addCreator(Constants.APPLICATION_NAME);
                document.addAuthor(System.getProperty("user.name")); //$NON-NLS-1$
                try {
                    PdfWriter writer = PdfWriter.getInstance(document, out);
                    document.open();
                    writeChart(chart, width, height, writer.getDirectContent());
                    success = true;
                } finally {
                    document.close();
                }
            }
        }
        if (!success) {
            file.delete();
            if (oldFile != null)
                oldFile.renameTo(file);
        }
    }
}

From source file:org.jrimum.bopepo.excludes.PDFs.java

License:Apache License

public static Map<String, Collection<BufferedImage>> getImages(byte[] pdf) throws IOException {
    PdfReader reader = new PdfReader(pdf);
    PdfReaderContentParser parser = new PdfReaderContentParser(reader);
    ImageRenderListener listener = new ImageRenderListener();
    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        parser.processContent(i, listener);
    }//from   ww w. j  a  v a 2  s.co  m
    reader.close();
    return listener.getImages();
}