`
rensanning
  • 浏览: 3549394 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38168
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607361
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682401
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89397
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401900
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69710
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91744
社区版块
存档分类
最新评论

使用HttpClient和iText下载slideshare上的文档

    博客分类:
  • Java
 
阅读更多
1、使用HttpClient获取页面HTML
2、解析HTML获取最大页数和第一页的图像地址
3、分别抓取各页的图像
4、使用iText将所有页面的图像做成PDF

前提是需FQ(PacketiX VPN)

	private static final String SD_URL = "http://www.slideshare.net/ProphetsAgency/trends-in-interactive-design-2013";
	private static final String OUT_PUT_FOLDER = "C:\\sd\\";
	private static final String PDF_NAME = "trends-in-interactive-design-2013.pdf";

	public static void main(String[] args) throws Exception {
		// Get HTML
		HttpClient client = new DefaultHttpClient();
		HttpGet get = new HttpGet(SD_URL);
		HttpResponse res = client.execute(get);
		
		if (res.getEntity() != null) {
			String htmldata = EntityUtils.toString(res.getEntity());
			
			int maxpage = 0;
			String imgurl = "";
			List<String> fileNameList = new ArrayList<String>();
			
			// Get max page
			Pattern dataPattern = Pattern.compile("<span>/(.+)</span>", Pattern.CASE_INSENSITIVE);
			Matcher tagMatcher = dataPattern.matcher(htmldata);
			if (tagMatcher.find()) {
				maxpage  = Integer.parseInt(tagMatcher.group(1));
			}
			
			// Get the first page image's URL
			Pattern dataPattern2 = Pattern.compile("background-image:url\\(\\'(.+)\\?.+\\'\\)", Pattern.CASE_INSENSITIVE);
			Matcher tagMatcher2 = dataPattern2.matcher(htmldata);
			if (tagMatcher2.find()) {
				imgurl = tagMatcher2.group(1);
			}

			System.out.println("maxpage:" + maxpage);
			
			// Get all page images to local
			for (int i = 1; i <= maxpage; i++) {
				String[] uriArray = imgurl.split("/");
				
				String filename = uriArray[uriArray.length-1];
				String[] nameArray = filename.split("-");
				filename = nameArray[0] + "-" + i + "-" + nameArray[2];
				
				imgurl = imgurl.substring(0,imgurl.lastIndexOf("/")) + "/" + filename;
				
				getUrlImg(imgurl, OUT_PUT_FOLDER + filename);

				System.out.println("imgurl:" + imgurl);
				fileNameList.add(filename);
			}
			
			// Create PDF
			Rectangle rect = new Rectangle(PageSize.B5.rotate());
			Document document = new Document(rect);
			PdfWriter.getInstance(document, new FileOutputStream(OUT_PUT_FOLDER + PDF_NAME));
			document.open();
			for (int i = 0; i < fileNameList.size(); i++) {
				if (i != 0) {
					document.newPage();
				}
				Image img = Image.getInstance(OUT_PUT_FOLDER + fileNameList.get(i));
				img.setAlignment(Image.TOP);
	            document.add(img);
			}
			document.close();
			
		}
		EntityUtils.consume(res.getEntity());
		client.getConnectionManager().shutdown();
	}
	
	public static void getUrlImg(String URLName, String target) throws Exception {
		URL url = new URL(URLName);
		URLConnection urlconn = url.openConnection();
		HttpURLConnection httpconn = (HttpURLConnection) urlconn;		
		int HttpResult = httpconn.getResponseCode();		
		if (HttpResult != HttpURLConnection.HTTP_OK) {
			System.out.print("fail");
			return;
		}	
		BufferedInputStream bis = new BufferedInputStream(urlconn.getInputStream());
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(target));
		byte[] buffer = new byte[1024];
		int num = -1;
		while (true) {
			num = bis.read(buffer);
			if (num == -1) {
				bos.flush();
				break;
			}
			bos.flush();
			bos.write(buffer, 0, num);
		}
		bos.close();
		bis.close();
	}


分享到:
评论

相关推荐

    httpclient-4.5.3官方API中文文档_最新译版_2886K

    本文将基于4.5.3版本的HttpClient官方API中文文档,深入探讨其核心概念、使用方法及常见应用场景。 一、HttpClient简介 HttpClient是一款高效的HTTP客户端库,它支持多种HTTP标准,包括HTTP/1.1、HTTP/2以及...

    httpClient官方文档

    在讨论HttpClient的文档时,首先应该明确它的使用范围,也即HttpClient能够做什么,以及它不做什么。在文档中,这一点被明确地指出,以帮助用户正确地利用HttpClient。 文档中提到了HttpClient的基础知识,包括以下...

    httpclient-4.5.6-API文档-中文版.zip

    赠送jar包:httpclient-4.5.6.jar; 赠送原API文档:httpclient-4.5.6-javadoc.jar; 赠送源代码:httpclient-4.5.6-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    httpclient-4.2.5-API文档-中文版.zip

    赠送jar包:httpclient-4.2.5.jar; 赠送原API文档:httpclient-4.2.5-javadoc.jar; 赠送源代码:httpclient-4.2.5-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    httpclient-4.5.5-API文档-中文版.zip

    赠送jar包:httpclient-4.5.5.jar; 赠送原API文档:httpclient-4.5.5-javadoc.jar; 赠送源代码:httpclient-4.5.5-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    java使用HttpClient通过url下载文件到本地

    综上所述,通过Java的HttpClient库,可以在Eclipse环境中编写程序,实现从指定URL下载文件到本地的功能。通过理解HttpClient的工作原理和提供的API,开发者可以构建出稳定、高效的文件下载解决方案。

    httpclient-4.5.3中文版文档,很实用

    HttpClient是Apache软件基金会的一个开源项目,提供了一个强大的、高度可定制的HTTP客户端...中文版文档的出现,降低了国内开发者的使用门槛,使得更多开发者能够熟练掌握和运用HttpClient,提升开发效率和应用质量。

    httpclient-4.4.1-API文档-中文版.zip

    赠送jar包:httpclient-4.4.1.jar; 赠送原API文档:httpclient-4.4.1-javadoc.jar; 赠送源代码:httpclient-4.4.1-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    HttpClient中文文档,快速开发

    这个标题"HttpClient中文文档,快速开发"表明我们有了一份关于HttpClient的中文版使用指南,对于快速理解和应用HttpClient进行开发来说非常有价值。 HttpClient允许开发者执行各种HTTP方法,如GET、POST、PUT、...

    httpclient.jar包下载

    然而,具体code.jar的内容需要根据实际下载的文件和项目的上下文来确定。 在使用httpclient.jar时,开发者需要注意版本兼容性,因为不同的HttpClient版本可能与不同的Java版本和服务器环境有不同的适配性。此外,...

    使用HttpClient下载图片

    HttpClient是个很不错的开源框架(org.appache.http),封装了访问http的请求头,参数,内容体,响应等等,使用起来更方面更强大。 HttpURLConnection是java的标准类,可以实现简单的基于URL请求、响应功能,什么都...

    httpclient-4.5.3-API文档-中文版.zip

    赠送jar包:httpclient-4.5.3.jar 赠送原API文档:httpclient-4.5.3-javadoc.jar 赠送源代码:httpclient-4.5.3-sources.jar ...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    httpclient多线程下载(分段下载)实践

    本篇文章将深入探讨如何使用HTTPClient进行多线程分段下载的实践。 首先,我们要理解多线程下载的基本原理。多线程下载是通过将大文件分割成多个小段,每个线程负责下载一个或多个段,这样可以充分利用多核处理器的...

    httpclient-4.5.13-API文档-中英对照版.zip

    赠送jar包:httpclient-4.5.13.jar; 赠送原API文档:httpclient-4.5.13-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    httpclient-4.5.13-API文档-中文版.zip

    赠送jar包:httpclient-4.5.13.jar; 赠送原API文档:httpclient-4.5.13-javadoc.jar; 赠送源代码:httpclient-4.5.13-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    HttpClient介绍和使用文档

    HttpClient是Apache开源组织Jakarta Commons项目中的一个组件,版本为2.0RC2,它的主要目的是简化HTTP客户端与...通过学习和使用HttpClient,开发者可以避免直接操作底层网络API的繁琐工作,专注于应用程序的核心逻辑。

    HttpClient实现文件下载

    ### HttpClient 实现文件下载 #### 一、简介与原理 在Java开发中,经常会遇到需要通过HTTP协议来获取网络资源的需求,例如从...希望本篇文章能够帮助开发者更好地理解和掌握使用 HttpClient 进行文件下载的技术要点。

    使用 HttpClient 和 HtmlParser 实现简易网络爬虫

    通过HttpClient,我们可以方便地访问和下载互联网上的网页内容。你可以在这里找到HttpClient的更多信息和下载链接:https://hc.apache.org/httpcomponents-client-ga/index.html HtmlParser是一个开源的HTML解析库...

    httpclient-4.4.1-API文档-中英对照版.zip

    赠送jar包:httpclient-4.4.1.jar; 赠送原API文档:httpclient-4.4.1-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

Global site tag (gtag.js) - Google Analytics