itext生成只读pdf文档
2015-07-30 10:13
295 查看
完成只读操作的代码为:
附:PdfWriter setEncryption()方法的文档说明
当userPassword,ownerPassword设置为null时,文档只读。也可以传入相应的byte[]对文档进行加密。
在***加密文档的过程中产生如下异常:
在google搜到下面一个帖子:
http://itext-general.2136553.n4.nabble.com/iText-error-in-signing-big-PDF-files-SigDict-Contents-illegal-data-td4655309.html#a4655354其中:Paulo Soares-4 相关回答Paulo "You need BC 1.47. "
于是将bcprov-jdk15on-146.jar换成了bcprov-jdk15on-147.jar
jar包下载地址
结果又出现了下面的异常:
刚开始以为是包没导进去,后来发现错误和原来的不一样,在网上找了半天没找到答案.也有人问同样的问题,但是没人回答,最后想是不是还是jar包不对,于是将bcprov-jdk15on-147.jar换成了bcprov-ext-jdk15on-147.jar,结果就好了。
writer.setEncryption(null, null, PdfWriter.ALLOW_PRINTING, PdfWriter.STANDARD_ENCRYPTION_128);
附:PdfWriter setEncryption()方法的文档说明
setEncryption public void setEncryption(byte[] userPassword, byte[] ownerPassword, int permissions, int encryptionType) throws DocumentExceptionDescription copied from interface: PdfEncryptionSettings Sets the encryption options for this document. The userPassword and the ownerPassword can be null or have zero length. In this case the ownerPassword is replaced by a random string. The open permissions for the document can be AllowPrinting, AllowModifyContents, AllowCopy, AllowModifyAnnotations, AllowFillIn, AllowScreenReaders, AllowAssembly and AllowDegradedPrinting. The permissions can be combined by ORing them. Specified by: setEncryption in interface PdfEncryptionSettings Parameters: userPassword - the user password. Can be null or empty ownerPassword - the owner password. Can be null or empty permissions - the user permissions encryptionType - the type of encryption. It can be one of STANDARD_ENCRYPTION_40, STANDARD_ENCRYPTION_128 or ENCRYPTION_AES128. Optionally DO_NOT_ENCRYPT_METADATA can be ored to output the metadata in cleartext Throws: DocumentException - if the document is already open See Also: PdfEncryptionSettings.setEncryption(byte[], byte[], int, int)
当userPassword,ownerPassword设置为null时,文档只读。也可以传入相应的byte[]对文档进行加密。
在***加密文档的过程中产生如下异常:
严重: Servlet.service() for servlet ExcelServlet threw exception java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1Primitive at com.itextpdf.text.pdf.PdfEncryption.<init>(PdfEncryption.java:147) at com.itextpdf.text.pdf.PdfWriter.setEncryption(PdfWriter.java:2049) at com.ha.system.util.pdf.PdfUtil.writePdfFile(PdfUtil.java:57) at com.ha.common.PdfServlet.doPost(PdfServlet.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ydyd.common.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:57) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
在google搜到下面一个帖子:
http://itext-general.2136553.n4.nabble.com/iText-error-in-signing-big-PDF-files-SigDict-Contents-illegal-data-td4655309.html#a4655354其中:Paulo Soares-4 相关回答Paulo "You need BC 1.47. "
于是将bcprov-jdk15on-146.jar换成了bcprov-jdk15on-147.jar
jar包下载地址
结果又出现了下面的异常:
class org.bouncycastle.asn1.ASN1Primitive overrides final method equals.(Ljava/lang/Object;)Z java.lang.VerifyError: class org.bouncycastle.asn1.ASN1Primitive overrides final method equals.(Ljava/lang/Object;)Z at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
刚开始以为是包没导进去,后来发现错误和原来的不一样,在网上找了半天没找到答案.也有人问同样的问题,但是没人回答,最后想是不是还是jar包不对,于是将bcprov-jdk15on-147.jar换成了bcprov-ext-jdk15on-147.jar,结果就好了。
相关文章推荐
- iframe 中关闭父窗口的弹窗
- plsql连接异常问题
- java正则过滤html标签属性
- 策略模式小练习
- IE8按f12无反应
- HDOJ-1232 畅通工程
- Java串口助手(程序源码)
- Android Studio三种方式导入外部资源 以及 报错处理
- 生产环境常见的HTTP状态码列表
- GitHub使用for Eclipse
- Java串口助手(程序源码) 分类: Java 2015-07-30 10:13 16人阅读 评论(0) 收藏
- acedinitget
- Jeecms之固定取消不了
- 举例说明Java中代码块的执行顺序
- Jeecms之固定取消不了
- 乔布斯的10大管理诫律
- 意志力为何如此薄弱
- Java类之间的数据传递3中方法。
- 网页抓取小结
- JAVA 并发编程-返回执行结果(Callable和Future)(九)