用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文件的读取和保存了。
保存效果还是蛮好的,而且也支持中文。