⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdfstamper.java

📁 源码包含生成 PDF 和 HTML 的类库
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     * <li>PdfName.D (detailed view)     * <li>PdfName.T (tiled view)     * <li>PdfName.H (hidden)     * </ul>     * Pass this name as a parameter and your PDF will be     * a portable collection with all the embedded and     * attached files as entries.     * @param initialView can be PdfName.D, PdfName.T or PdfName.H     */    public void makePackage( PdfName initialView ) {    	PdfCollection collection = new PdfCollection(0);    	collection.put(PdfName.VIEW, initialView);    	stamper.makePackage( collection );    }    /**     * Adds or replaces the Collection Dictionary in the Catalog.     * @param	collection	the new collection dictionary.     */    public void makePackage(PdfCollection collection) {    	stamper.makePackage(collection);    	    }        /**     * Sets the viewer preferences.     * @param preferences the viewer preferences     * @see PdfViewerPreferences#setViewerPreferences(int)     */    public void setViewerPreferences(int preferences) {        stamper.setViewerPreferences(preferences);    }        /** Adds a viewer preference     * @param key a key for a viewer preference     * @param value the value for the viewer preference     * @see PdfViewerPreferences#addViewerPreference     */        public void addViewerPreference(PdfName key, PdfObject value) {    	stamper.addViewerPreference(key, value);    }    /**     * Sets the XMP metadata.     * @param xmp     * @see PdfWriter#setXmpMetadata(byte[])     */    public void setXmpMetadata(byte[] xmp) {        stamper.setXmpMetadata(xmp);    }    /**     * Gets the 1.5 compression status.     * @return <code>true</code> if the 1.5 compression is on     */    public boolean isFullCompression() {        return stamper.isFullCompression();    }    /**     * Sets the document's compression to the new 1.5 mode with object streams and xref     * streams. It can be set at any time but once set it can't be unset.     */    public void setFullCompression() {        if (stamper.isAppend())            return;        stamper.setFullCompression();    }    /**     * Sets the open and close page additional action.     * @param actionType the action type. It can be <CODE>PdfWriter.PAGE_OPEN</CODE>     * or <CODE>PdfWriter.PAGE_CLOSE</CODE>     * @param action the action to perform     * @param page the page where the action will be applied. The first page is 1     * @throws PdfException if the action type is invalid     */        public void setPageAction(PdfName actionType, PdfAction action, int page) throws PdfException {        stamper.setPageAction(actionType, action, page);    }    /**     * Sets the display duration for the page (for presentations)     * @param seconds   the number of seconds to display the page. A negative value removes the entry     * @param page the page where the duration will be applied. The first page is 1     */    public void setDuration(int seconds, int page) {        stamper.setDuration(seconds, page);    }        /**     * Sets the transition for the page     * @param transition   the transition object. A <code>null</code> removes the transition     * @param page the page where the transition will be applied. The first page is 1     */    public void setTransition(PdfTransition transition, int page) {        stamper.setTransition(transition, page);    }    /**     * Applies a digital signature to a document, possibly as a new revision, making     * possible multiple signatures. The returned PdfStamper     * can be used normally as the signature is only applied when closing.     * <p>     * A possible use for adding a signature without invalidating an existing one is:     * <p>     * <pre>     * KeyStore ks = KeyStore.getInstance("pkcs12");     * ks.load(new FileInputStream("my_private_key.pfx"), "my_password".toCharArray());     * String alias = (String)ks.aliases().nextElement();     * PrivateKey key = (PrivateKey)ks.getKey(alias, "my_password".toCharArray());     * Certificate[] chain = ks.getCertificateChain(alias);     * PdfReader reader = new PdfReader("original.pdf");     * FileOutputStream fout = new FileOutputStream("signed.pdf");     * PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0', new     * File("/temp"), true);     * PdfSignatureAppearance sap = stp.getSignatureAppearance();     * sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);     * sap.setReason("I'm the author");     * sap.setLocation("Lisbon");     * // comment next line to have an invisible signature     * sap.setVisibleSignature(new Rectangle(100, 100, 200, 200), 1, null);     * stp.close();     * </pre>     * @param reader the original document     * @param os the output stream or <CODE>null</CODE> to keep the document in the temporary file     * @param pdfVersion the new pdf version or '\0' to keep the same version as the original     * document     * @param tempFile location of the temporary file. If it's a directory a temporary file will be created there.     *     If it's a file it will be used directly. The file will be deleted on exit unless <CODE>os</CODE> is null.     *     In that case the document can be retrieved directly from the temporary file. If it's <CODE>null</CODE>     *     no temporary file will be created and memory will be used     * @param append if <CODE>true</CODE> the signature and all the other content will be added as a     * new revision thus not invalidating existing signatures     * @return a <CODE>PdfStamper</CODE>     * @throws DocumentException on error     * @throws IOException on error     */    public static PdfStamper createSignature(PdfReader reader, OutputStream os, char pdfVersion, File tempFile, boolean append) throws DocumentException, IOException {        PdfStamper stp;        if (tempFile == null) {            ByteBuffer bout = new ByteBuffer();            stp = new PdfStamper(reader, bout, pdfVersion, append);            stp.sigApp = new PdfSignatureAppearance(stp.stamper);            stp.sigApp.setSigout(bout);        }        else {            if (tempFile.isDirectory())                tempFile = File.createTempFile("pdf", null, tempFile);            FileOutputStream fout = new FileOutputStream(tempFile);            stp = new PdfStamper(reader, fout, pdfVersion, append);            stp.sigApp = new PdfSignatureAppearance(stp.stamper);            stp.sigApp.setTempFile(tempFile);        }        stp.sigApp.setOriginalout(os);        stp.sigApp.setStamper(stp);        stp.hasSignature = true;        PdfDictionary catalog = reader.getCatalog();        PdfDictionary acroForm = (PdfDictionary)PdfReader.getPdfObject(catalog.get(PdfName.ACROFORM), catalog);        if (acroForm != null) {            acroForm.remove(PdfName.NEEDAPPEARANCES);            stp.stamper.markUsed(acroForm);        }        return stp;    }    /**     * Applies a digital signature to a document. The returned PdfStamper     * can be used normally as the signature is only applied when closing.     * <p>     * Note that the pdf is created in memory.     * <p>     * A possible use is:     * <p>     * <pre>     * KeyStore ks = KeyStore.getInstance("pkcs12");     * ks.load(new FileInputStream("my_private_key.pfx"), "my_password".toCharArray());     * String alias = (String)ks.aliases().nextElement();     * PrivateKey key = (PrivateKey)ks.getKey(alias, "my_password".toCharArray());     * Certificate[] chain = ks.getCertificateChain(alias);     * PdfReader reader = new PdfReader("original.pdf");     * FileOutputStream fout = new FileOutputStream("signed.pdf");     * PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0');     * PdfSignatureAppearance sap = stp.getSignatureAppearance();     * sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);     * sap.setReason("I'm the author");     * sap.setLocation("Lisbon");     * // comment next line to have an invisible signature     * sap.setVisibleSignature(new Rectangle(100, 100, 200, 200), 1, null);     * stp.close();     * </pre>     * @param reader the original document     * @param os the output stream     * @param pdfVersion the new pdf version or '\0' to keep the same version as the original     * document     * @throws DocumentException on error     * @throws IOException on error     * @return a <CODE>PdfStamper</CODE>     */    public static PdfStamper createSignature(PdfReader reader, OutputStream os, char pdfVersion) throws DocumentException, IOException {        return createSignature(reader, os, pdfVersion, null, false);    }        /**     * Applies a digital signature to a document. The returned PdfStamper     * can be used normally as the signature is only applied when closing.     * <p>     * A possible use is:     * <p>     * <pre>     * KeyStore ks = KeyStore.getInstance("pkcs12");     * ks.load(new FileInputStream("my_private_key.pfx"), "my_password".toCharArray());     * String alias = (String)ks.aliases().nextElement();     * PrivateKey key = (PrivateKey)ks.getKey(alias, "my_password".toCharArray());     * Certificate[] chain = ks.getCertificateChain(alias);     * PdfReader reader = new PdfReader("original.pdf");     * FileOutputStream fout = new FileOutputStream("signed.pdf");     * PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0', new File("/temp"));     * PdfSignatureAppearance sap = stp.getSignatureAppearance();     * sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);     * sap.setReason("I'm the author");     * sap.setLocation("Lisbon");     * // comment next line to have an invisible signature     * sap.setVisibleSignature(new Rectangle(100, 100, 200, 200), 1, null);     * stp.close();     * </pre>     * @param reader the original document     * @param os the output stream or <CODE>null</CODE> to keep the document in the temporary file     * @param pdfVersion the new pdf version or '\0' to keep the same version as the original     * document     * @param tempFile location of the temporary file. If it's a directory a temporary file will be created there.     *     If it's a file it will be used directly. The file will be deleted on exit unless <CODE>os</CODE> is null.     *     In that case the document can be retrieved directly from the temporary file. If it's <CODE>null</CODE>     *     no temporary file will be created and memory will be used     * @return a <CODE>PdfStamper</CODE>     * @throws DocumentException on error     * @throws IOException on error     */    public static PdfStamper createSignature(PdfReader reader, OutputStream os, char pdfVersion, File tempFile) throws DocumentException, IOException     {        return createSignature(reader, os, pdfVersion, tempFile, false);    }        /**     * Gets the PdfLayer objects in an existing document as a Map     * with the names/titles of the layers as keys.     * @return	a Map with all the PdfLayers in the document (and the name/title of the layer as key)     * @since	2.1.2     */    public Map getPdfLayers() {    	return stamper.getPdfLayers();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -