`

iText操作pdf文件

    博客分类:
  • Java
阅读更多

      这几天研究了一下对pdf文件的操作,简单点的比如怎样用iText来复制一个pdf文件等,这是对本地的pdf文件进行操作。当然,iText还可以对网络上的pdf文件进行操作,比如下载网络上的pdf文件等。下面的代码就是专门针对http://www.jms20x.com/dzts/default.html上的pdf文件进行下载的。这可以对中文进行操作,而且能很好的保存成原文件的版式。

 

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;

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 downloadFiles 
{
	private static final String urlname = "http://www.jms20x.com/dzts/";
	private static ArrayList<String> urllist = new ArrayList<String>();
	private static ArrayList<String> savelist = new ArrayList<String>();
	
	public static void main(String[] args)
	{		
		String savepath = "";
		String tempurl = "";
		
		for(int i=1; i<=100; i++)
		{
			if(i==61 || i==63 || i==65 || i==66 || i==70 || i==71 || i==74 || i==82 || 
			   i==87 || i==89 || i==91 || i==93 || i==95 || i==97 )
				continue;
			
			savepath = "C:\\" + i + "\\";
			tempurl = urlname + i + "/";
			
			downloadFiles.getURLS(tempurl, savepath, urllist, savelist);
			if(urllist.size() > 0)
			{
				System.out.println("Creating a new directory : C:\\" + i );
				for(int j=0; j<urllist.size(); j++)
				{
					System.out.println(j);
					downloadFiles.getWebFiles(urllist.get(j), savelist.get(j));
				}
				
				urllist.clear();
				savelist.clear();
			}
		}
	}
	
	public static void getURLS(String urlname, String savedir, ArrayList<String> urllist, ArrayList<String> savelist)
	{		
		try 
		{
			URL url = new URL(urlname + "/index.html");
			HttpURLConnection httpconn =(HttpURLConnection)url.openConnection();
			
			BufferedReader br = new BufferedReader(new InputStreamReader(httpconn.getInputStream()));
						
			String str = br.readLine();
			String temp = "";
			String urlpath = "";
			String savepath = "";
			
			while(str != null)
			{
				if(str.indexOf("<a href=") > -1)
				{
					if(str.indexOf("</a>") > -1)
					{
						temp = str.substring(str.indexOf("<a href=")+9, str.indexOf("</a>"));
						
						urlpath = urlname + temp.substring(0, temp.indexOf(".pdf")+4);
						if(urlpath.length() > 60)
						{
							str = br.readLine();
							continue;
						}
						
						savepath = temp.substring(temp.indexOf(">")+1) + ".pdf";
						if(savepath.indexOf(":") > -1)
							savepath = savepath.replace(':', '_');
						if(savepath.indexOf(":") > -1)
							savepath = savepath.replace(':', '_');
						savepath = savedir + savepath;

						urllist.add(urlpath);
						savelist.add(savepath);
					}
				}
								
				str = br.readLine();
			}
			
			httpconn.disconnect();
			
		} catch (MalformedURLException e) {
			return;
		} catch (IOException e) {
			return;
		} 		
	}
	
	public static void getWebFiles(String urlpath, String savepath)
	{
		String tempdir = savepath.substring(0, savepath.lastIndexOf("\\"));
		File dir = new File(tempdir);
		if(!dir.exists())
			dir.mkdir();
		
		File f = new File(savepath);
		if(f.exists())		
			return;
		
		try 
		{
			URL url = new URL(urlpath);
			URLConnection conn = url.openConnection(); 
			HttpURLConnection httpconn =(HttpURLConnection)conn;
			
			if(httpconn.getContentLength() > 20000000)
			{
				httpconn.disconnect();
				return;
			}	
			
			f.createNewFile();
			
			InputStream is = httpconn.getInputStream();
			PdfReader reader = new PdfReader(is);			
			httpconn.disconnect();

			int n = reader.getNumberOfPages();
			Document document = new Document(reader.getPageSize(1));
			PdfCopy copy = new PdfCopy(document, new FileOutputStream(f));
			document.open();
			
			for(int i=1; i<=n; i++)
			{
				document.newPage(); 
				PdfImportedPage page = copy.getImportedPage(reader, i);
				copy.addPage(page);
			}
			
			document.close();

		} catch (MalformedURLException e1) {
			return;
		} catch (IOException e) {
			return;
		} catch(DocumentException e) {
			return;
		} catch(Exception e) {
			if(f.exists())		
				f.delete();
			return;
		}
	}
}

 

 

      需要说明的是,这里需要用itext-2.0.2.jar包和bcprov-jdk15-139.jar,不能使用最新的itext-2.1.4.jar版本,否则会出现错误。可以使用附件里面的文件进行下载,解压后直接双击Start.bat就可进行下载了(默认是保存在C盘里)。对JDK为1.5和1.6的,可以分别使用附件里对应版本的文件。

 

      对本地pdf文件的操作差不多。下面的代码是针对本地pdf文件进行操作的一个简单例子,就是对文件进行复制。 

     

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

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();
		}
	}	
}

     

 

        上面的代码只是简单的对本地和网络文件进行操作的例子,还算比较简单。

 

      下面是学习iText的几个比较有用的网址。

 

      http://itextdocs.lowagie.com/tutorial/

 

      http://www.1t3xt.info/api/

 

 

5
0
分享到:
评论

相关推荐

    iText操作Pdf简单整理

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

    java使用itext实现pdf文件下载

    在实际应用中,你可能需要根据业务需求对PDF文件进行更复杂的操作,如添加页眉页脚、插入表格、处理图像等。Itext库提供了丰富的API来支持这些功能,你可以查阅其官方文档或者相关的教程进行深入学习。 在压缩包中...

    iText_pdf.rar_iText pdf_itext PDF类

    在描述中提到的“iText可以制作中文PDF文件的JAVA源程序”,意味着这个压缩包可能包含示例代码或教程,展示了如何使用iText库在Java程序中创建包含中文字符的PDF文档。通常,处理中文字符需要正确配置字体资源,并...

    使用itext生成PDF文件

    本篇文章将详细介绍如何使用iText库生成PDF文件,以及在这个过程中可能遇到的关键知识点。 首先,我们需要了解iText的基本概念。iText是一个开源库,它提供了一系列API,使开发者能够方便地处理PDF文档。通过这个库...

    利用itext操作pdf从数据库导出大量数据

    本篇文章将详细介绍如何利用iText库操作PDF,从数据库中导出大量数据。 首先,我们需要理解iText的基本概念和功能。iText提供了丰富的API,可以用于创建新的PDF文档、添加文本、图像、表格、链接等元素,以及对已有...

    使用itextpdf将PDF大文件拆分成若干份指定大小文件.zip

    2. **读取PDF**: 使用`PdfReader`类打开原始PDF文件,获取其`PdfStamper`实例,这将允许你访问并操作PDF的内部结构。 3. **计算页面大小**: 每个PDF页面可能包含不同的元素,如文本、图像和图形,这导致每页的大小...

    IText解析PDF文件

    iText是一个开源的Java库,用于生成、修改和操作PDF文件。它提供了一套丰富的API,允许开发者轻松地集成到现有的应用程序中。无论是从头创建PDF文档,还是编辑现有的PDF文件,iText都提供了强大的支持。 #### 二、...

    freemarker+itext生成PDF

    在Java世界中,Itext 是一个广泛使用的库,它允许开发者创建、修改和操作PDF文档。这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的...

    itext7 pdf转图片

    - PDF文档的结构:PDF由多个对象组成,如页、字体、图像、注释等,这些对象在PDF文件中以XML式的语法存储。 - 转换PDF:除了基本的创建和编辑功能,iText 7还允许开发者将PDF文档转换为其他格式,例如HTML、XML或...

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

    Java通过iText库操作PDF模板来写入PDF合同数据是一项常见的技术任务,尤其在文档自动化处理和企业级应用中。iText是一个强大的PDF处理库,它允许开发者创建、修改和处理PDF文档。在这个过程中,首先我们需要一个PDF...

    itext打印pdf文件拆分list数据

    Itext是一个Java库,专门用于处理PDF文档,包括创建、编辑和阅读PDF文件。本话题将深入探讨如何使用iText库来打印PDF文件并拆分包含在List数据中的信息。 首先,我们要理解iText的工作原理。iText提供了一系列API,...

    itextpdf-5.5.13

    《iTextPDF 5.5.13:创建PDF文件的高效工具》 iTextPDF是一款功能强大的Java库,主要用于创建、编辑以及处理PDF文档。版本5.5.13是其历史版本之一,提供了丰富的API和功能,使得开发者能够方便地在Android平台上...

    iText PDF中文字体文件.rar

    iText是一个强大的PDF库,它允许开发者在程序中创建、修改和操作PDF文档。然而,对于处理中文字符,iText需要额外的字体文件支持,因为默认的字体库不包含中文字符集。本教程将深入探讨如何在Java中使用iText PDF...

    Itext删除PDF的图层

    Itext是一个开源Java库,专为处理PDF文档设计,提供了一系列API用于创建、编辑和阅读PDF文件。 **Itext库介绍** Itext是PDF处理的强力工具,它允许开发者进行各种操作,包括添加文本、图像、表格,以及处理PDF的...

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

    通过以上步骤,你可以在Java环境中利用iTextPDF和iText-Asian库为PDF文件添加中文水印。这个过程涉及到PDF文档的读取、写入、文本样式设定以及内容的定位,是一个典型的PDF处理应用场景。在实际开发中,你可能需要...

    使用itextpdf将excel转化为pdf + pdf加水印

    TestForExcel2PDF测试类可能包含这样的逻辑:首先,加载Excel文件,然后使用itextpdf的API将工作表的内容转换为PDF页面,最后保存为PDF文件。这个过程中可能涉及到对Excel表格的样式、字体、颜色等元素的保持,以...

    使用IText生成PDF和WORD文档

    这将生成一个名为"output.pdf"的PDF文件,其中包含指定的文本。 接下来,我们转向Word文档的生成。虽然IText的主要功能是处理PDF,但它也可以通过使用Apache POI库或iTextAspose库生成Word(.doc或.docx)文件。...

    springboot使用itext生成pdf并保存到本地

    本教程将探讨如何利用iText库在Spring Boot应用中从HTML页面生成PDF,并进行一系列的定制化操作,如添加页眉、页码、水印、目录以及二维码。 首先,iText是一个强大的Java库,专门用于创建和编辑PDF文档。它提供了...

    iText PDF pdf文档生成itext5.5.11.zip,itxt-asian5.20.jar,加水印,去水印代码,功能强大。

    iText是一款广泛应用于PDF文档处理的Java库,尤其在生成、编辑和操作PDF文档方面表现卓越。本资源包包含了iText 5.5.11版本的组件,以及专门针对亚洲语言支持的itext-asian5.20.jar,同时提供了加水印和去水印的代码...

    itextpdf.jar

    例如,通过数字签名,可以确保PDF文件的完整性和来源的真实性;通过加密,可以保护敏感信息不被未经授权的人员访问。 在实际开发中,iTextPDF库易于集成,提供了丰富的示例和文档,使得开发者能够快速上手。同时,...

Global site tag (gtag.js) - Google Analytics