`
ctrain
  • 浏览: 135446 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

itext生成只读pdf文档

 
阅读更多
完成只读操作的代码为:
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,结果就好了。
分享到:
评论
1 楼 c_lzs 2016-03-07  
good!!!!!!!!!!!!!!!!!

相关推荐

    itext5.5.1api文档chm

    iText是一个开源项目,广泛应用于创建、修改、合并以及拆分PDF文档。在本API文档中,我们将深入探讨其核心功能和使用方法。 一、iText基本概念 1. PDF(Portable Document Format):一种跨平台的文件格式,用于...

    pdf文件生成加密,设置只读属性,添加水印的必要最新jar包6个包

    - `itextpdf-5.3.3.jar`:这是iText的核心库,用于处理PDF文档。iText是一个Java库,能够创建、修改、分割和合并PDF文件。在这个版本中,你可以使用它来对PDF进行加密,设置只读权限,并添加水印。例如,通过`...

    itext-5.3.2.zip

    2. **编辑PDF文档**:虽然PDF格式通常被认为是只读的,但iText提供了修改已有PDF文档的能力,比如添加或删除页面、更新文本和图像、插入签名等。 3. **文本和字体处理**:iText支持各种字体和排版,可以处理Unicode...

    IText 2.1.7 jar 包

    2. **PDF编辑**:虽然PDF格式通常被认为是只读的,但IText提供了编辑现有PDF文档的能力,如修改文本、替换图像、添加水印或者更改页面布局。 3. **表单处理**:IText支持交互式PDF表单的创建和填充。可以添加、删除...

    java生成word文档.pdf

    本文主要介绍了使用 Java 生成 Word 文档的方法,通过使用 iText 库来生成 PDF 文件,并将其转换为 Word 文档。下面是相关的知识点: 1. iText 库简介 iText 是一个 Java 类库,能够快速产生 PDF 文件。它提供了...

    生成pdf,加密、编辑pdf

    - 使用Python的`reportlab`库可以创建PDF文档,包括文本、图像和表格。 - Java的`Apache PDFBox`库则提供了强大的PDF操作能力,包括创建、编辑和水印添加。 - JavaScript中的`PDF.js`是Mozilla开发的开源库,可以...

    itext简单demo

    IText是一款开源的Java库,专门用于创建和处理PDF文档。它提供了丰富的API,使得开发者能够方便地生成、修改和操作PDF文件。这个“itext简单demo”示例,显然是一个基于iText 5.4版本的实践项目,用于演示如何在实际...

    iText所需的包

    总的来说,iText是一个强大的PDF处理工具,它简化了Java开发者生成PDF文档的过程,同时也为处理PDF文档提供了丰富的功能。无论是在电子商务、报告生成、合同制作还是任何需要静态文档的场景,iText都能发挥重要作用...

    菜鸟都能掌握,玩转pdf文档,把这些变成一种开发人员的技能,必备!!

    4. **PDF编辑**:PDF文档通常是只读的,但可以通过特定工具进行编辑。Adobe Acrobat Pro提供高级编辑功能,而开源工具如PDFedit或在线服务如SmallPDF则提供了基本的编辑能力。 5. **PDF合并与拆分**:开发人员可能...

    java实现pdf文件的电子签字+盖章+防伪二维码+水印+PDF文件加密

    iText库提供了将图像插入PDF的方法,可以将生成的二维码图片插入到PDF的合适位置。 **水印** 水印通常用于标记PDF的所有权或版权,可以是文本或图像。在iText中,你可以使用ColumnText类在PDF的每个页面上添加透明...

    Datawindow 导出到PDF文件

    PowerBuilder之外,还可以使用第三方库如iText、PDFsharp等来实现PDF的生成和操作,这些库提供了更灵活的接口和更强大的功能。 总的来说,将Datawindow导出为PDF是IT项目中常见的需求,涉及到数据可视化、文档格式...

    pdf source

    4. **PDF编辑**:编辑PDF文档通常需要专门的软件,因为PDF是设计为只读的。编辑可能涉及添加文本、图像、注释,或合并多个PDF文件。 5. **PDF安全**:PDF支持密码保护和权限设置,以防止未经授权的访问、复制或打印...

Global site tag (gtag.js) - Google Analytics