`

iText操作错误:PdfReader not opened with owner password

    博客分类:
  • Java
阅读更多

   用iText读取一个pdf文件,然后把它保存成另一个pdf文件(相当于复制一份),代码如下:

 

import java.io.FileOutputStream;
import java.io.IOException;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;

public class pdfCopy 
{
	public static void main(String[] args)
	{
		String filepath = "C:\\a.pdf";
		String savepath = "C:\\b.pdf";
		copyLocalFiles(filepath, savepath);
	}
	
	public static void copyLocalFiles(String filepath, String savepath)
	{
		try 
		{
			PdfReader reader = new PdfReader(filepath);
			
			int n = reader.getNumberOfPages();
			Document document = new Document(reader.getPageSize(1));
			PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));
						
			document.open();
			
			for(int i=1; i<=n; i++)
			{
				document.newPage(); 
				PdfImportedPage page = copy.getImportedPage(reader, i);
				copy.addPage(page);
			}
			
			document.close();

		} catch (IOException e) {
			e.printStackTrace();
		} catch(DocumentException e) {
			e.printStackTrace();
		}
	}
	
}

    

 

     运行时出现了下面这样的错误:

 

Exception in thread "main" java.lang.IllegalArgumentException: PdfReader not opened with owner password
	at com.lowagie.text.pdf.PdfReaderInstance.getImportedPage(Unknown Source)
	at com.lowagie.text.pdf.PdfCopy.getImportedPage(Unknown Source)

 

    上网查了一下,最后好不容易找到了原因,找到了解决办法。原来,我用的iText是itext-2.1.4.jar,使用以前的版本itext-2.0.2.jar,这时就不会出现这个错误了,就可以进行pdf文件的读取和保存了。

 

    保存效果还是蛮好的,而且也支持中文。

 

分享到:
评论
3 楼 pyl574069214 2019-01-09  
1楼的方法可用
2 楼 pyl574069214 2019-01-09  
谢谢
1 楼 ggyyso 2017-03-30  
解决方法:
import java.lang.reflect.Field;

PdfReader reader= new PdfReader(pdfpath);
Field f = PdfReader.class.getDeclaredField("ownerPasswordUsed");
f.setAccessible(true);
f.set(reader, Boolean.TRUE);
即可         

相关推荐

    itextsharp

    `PdfReader not opened with owner password` 这个错误通常出现在尝试打开受所有者密码保护的 PDF 文件时,如果缺少正确的密码,itextsharp 将无法读取或修改文件。 在使用 iTextSharp 处理 PDF 文件时,有以下几个...

    Android使用iText生成pdf并读取pdf内容

    PdfReader reader = new PdfReader(filePath); int n = reader.getNumberOfPages(); StringBuilder contentBuilder = new StringBuilder(); for (int i = 0; i ; i++) { contentBuilder.append...

    itext-2.1.7.js7.zip

    《iText库与JasperReports...可能会遇到一个问题:“The POM for com.lowagie:itext:jar:2.1.7.js7 is missing, no dependency information available.” 这个错误提示意味着在Maven的项目对象模型(POM)文件中找不到...

    Itext in Action: Creating and Manipulating PDF

    关于PDF文件制作及操作的经典书籍,适用于java C#等多种语言,可以添加图片,水印,各种字体,报表,教你如何一步一步的成为PDF编程高手,真正的step by step,深入浅出,五步即可制作自己的PDF文件。

    itext-2.1.7.js7.jar

    Error POM for com.lowagie:itext:jar:2.1.7.js7 This is the bit that causes issues: &lt;groupId&gt;com.lowagie&lt;/groupId&gt; &lt;artifactId&gt;itext &lt;version&gt;2.1.7.js7 &lt;scope&gt;compile &lt;optional&gt;false &lt;groupId&gt;org....

    itextpdf不同版本的jar包

    iTextPDF是一款强大的Java库,专门用于创建和编辑PDF文档。这个库的多个版本在不同的项目中被广泛使用,以满足特定的需求和兼容性要求。本文将深入探讨iTextPDF的不同版本及其在Web项目中生成PDF文档的应用。 首先...

    itextpdf-5.4.3.jar java 转pdf 工具类 jar

    《Java使用iTextPDF库创建和操作PDF文档详解》 在Java开发中,有时我们需要将数据转换为PDF格式,以便于打印、分享或长期存储。这时,iTextPDF库成为了一个强大的工具。本文将深入探讨如何使用iTextPDF 5.4.3版本的...

    itextpdf5.5.5和itext-asian5.2.0

    适用于android,编译提示有问题的话,在app的Build.gradle的android下加如下代码: packagingOptions { exclude 'com/itextpdf/text/pdf/fonts/cmap_info.txt' }

    java使用itextpdf、itext-asian对pdf文件加水印

    PdfReader reader = new PdfReader(fis); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("目标文件路径")); ``` 3. **定义水印内容和样式**:创建一个`ColumnText`对象,设置字体、大小、颜色...

    itext-2.1.7.js8.zip

    在实际操作中,首先,开发者需要在项目中引入iText 2.1.7.js8的依赖,这通常通过Maven或Gradle等构建工具完成。然后,使用JasperReport的JasperFillManager填充报表,接着使用JasperExportManager将填充好的报表导出...

    iText7 itextpdf/kernel

    iText 7 基础包kernel-7.0.4.jar。。。。。。。。。。

    iText操作Pdf简单整理

    在实际开发中,`iText操作Pdf简单整理.txt`可能包含了关于如何使用这些功能的示例代码和说明,通过学习和实践,开发者能够熟练掌握iText,满足各种PDF文档处理需求。 总的来说,iText是一款功能丰富的PDF处理工具,...

    Java_Pdf_itext7-7.0.5

    2. **iText7核心概念**:iText7的核心组件包括PdfDocument、PdfWriter、PdfReader和PdfCanvas。PdfDocument代表PDF文档,PdfWriter用于创建新文档或追加到现有文档,PdfReader用于读取现有文档,PdfCanvas则用于在...

    itext-2.1.7.js6.jar

    在使用最新版jasperreports的时候,比如6.8.0版本时,itext-2.1.7.js6.jar无法根据maven来下载,需要使用此jar包导入本地仓库。

    itext-2.1.7.js8.jar

    JasperReports依赖itext-2.1.7.js8.jar,目前maven仓库下载不了,估计后面也下载不了

    itextpdf中文依赖包

    在Java开发中,处理PDF文档是一项常见的任务,iTextPDF是一个广泛使用的开源库,它提供了丰富的API来创建、修改和操作PDF文档。在处理中文字符时,我们需要引入特定的依赖包,以确保中文文字能够正确显示。本文将...

    itext-2.1.7.jar itext-rtf-2.1.7.jar

    本文将详细介绍如何利用iText库在Java中实现Word文档的生成,包括添加段落、插入图片和设置页码等操作。 首先,我们需要引入iText库。在本例中,我们有两个jar文件:`itext-2.1.7.jar`和`itext-rtf-2.1.7.jar`。`...

    java通过itext操作pdf模板写入pdf合同数据

    - **读取模板**:使用`PdfReader`类读取PDF模板文件,创建`PdfStamper`对象,它允许在模板上进行写入操作。 - **写入数据**:利用`AcroFields`接口,可以填充表单字段或者直接在页面上添加文本、图像。例如,`...

    itext将图片生成PDF(高清版)

    `iText`是一个强大的Java库,专门用于创建、编辑和处理PDF文档。本教程将详细介绍如何使用`iText`将图片转换为高清PDF,并提供一个无坑版的demo示例。 首先,我们需要理解`iText`库的核心概念。`iText`提供了丰富的...

    利用ITEXT、PDFBOX将PDF转为图片

    2. **读取PDF**:使用ITEXT,你可以通过`PdfReader`类打开并读取PDF文档。`PdfReader`对象提供了访问PDF页面的方法。 ```java PdfReader reader = new PdfReader("path_to_your_pdf"); ``` 3. **获取PDF页面**:...

Global site tag (gtag.js) - Google Analytics