Android读取pdf文件及显示
来源:互联网 发布:西师大知行学院咋样 编辑:程序博客网 时间:2024/06/07 01:20
package com.tianjian.basic.activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle;
import com.tianjian.util.Utils;
import com.tianjian.areaxcdoc.R;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* PDF显示
*
* @author wms
* @date
* @version
*
*/
public class SeePDFActivity extends ActivitySupport implements
OnPageChangeListener, OnClickListener,Handler.Callback ,OnLoadCompleteListener {
private PDFView pdfview;
private String urlString;
private Handler handler;
private File file;
private final int FILE_DOWNLOAD_SUCCESS = 0;
private final int FILE_DOWNLOAD_FAIL = 1;
private int flag=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.load_pdf_activity);
initView();
setData();
}
/**
* 初始化view
*/
private void initView() {
pdfview = (PDFView) findViewById(R.id.pdfview);
urlString = getIntent().getStringExtra("path");
title = (TextView) findViewById(R.id.title);
String str=this.getIntent().getStringExtra("title");
if(str!=null&&!str.equals("")){
title.setText(str);
}else{
title.setText("体检报告");
}
backImg = (ImageButton) findViewById(R.id.backImg);
backImg.setOnClickListener(this);
handler = new Handler(this);
}
/**
* 下载pdf
*/
private void setData() {
startProgressDialog();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection connection = null;
ByteArrayOutputStream baos = null;
BufferedOutputStream bos = null;
FileOutputStream fos = null;
try {
URL url = new URL(urlString);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
// 实现连接
connection.connect();
if (connection.getResponseCode() == 200) {
Log.e("TAG", "请求网络编号为200");
flag=2;
InputStream is = connection.getInputStream();
// 以下为下载操作
byte[] arr = new byte[1];
baos = new ByteArrayOutputStream();
bos = new BufferedOutputStream(baos);
int n = is.read(arr);
while (n > 0) {
bos.write(arr);
n = is.read(arr);
}
bos.close();
String path = Environment.getExternalStorageDirectory() + "/download/";
String[] name = urlString.split("/");
path = path + name[name.length - 1];
file = new File(path);
fos = new FileOutputStream(file);
fos.write(baos.toByteArray());
fos.close();
baos.close();
// 关闭网络连接
connection.disconnect();
handler.sendEmptyMessage(FILE_DOWNLOAD_SUCCESS);
}
} catch (Exception e) {
Log.e("TAG", "请求失败!");
Message msg = new Message();
msg.what = FILE_DOWNLOAD_FAIL;
msg.obj = "下载pdf文件失败!";
handler.sendMessage(msg );
} finally{
if(flag!=2){
Message msg = new Message();
msg.what = FILE_DOWNLOAD_FAIL;
msg.obj = "加载失败!";
handler.sendMessage(msg );
}
Log.e("TAG", "llllllllllllllllllllllllllllllll!");
if(baos != null){
try {
baos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(bos != null){
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fos != null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection != null ){
connection.disconnect();
}
}
}
});
thread.start();
}
/**
* 加载pdf
*/
private void loadPdf() {
// 0, 2, 1, 3, 3, 3
// pdfview.fromFile(file).pages(0, 1, 1, 3, 3, 3)
// .defaultPage(1)
// .showMinimap(false)
// .enableSwipe(true)
// .onLoad(this)
// .onPageChange(SeePDFActivity.this).load();
pdfview.fromFile(file)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.load();
}
@Override
public void onPageChanged(int page, int pageCount) {
}
@Override
public void onClick(View v) {
// TODO onClick
switch (v.getId()) {
case R.id.backImg:
finish();
break;
default:
break;
}
}
@Override
public boolean handleMessage(Message msg) {
// TODO handleMessage
switch (msg.what) {
case FILE_DOWNLOAD_SUCCESS:
loadPdf();
break;
case FILE_DOWNLOAD_FAIL:
stopProgressDialog();
String str = "";
if(msg.obj == null){
str = "操作失败!";
}else{
str = (String) msg.obj;
}
Utils.show(this, str);
finish();
break;
default:
break;
}
return false;
}
@Override
public void loadComplete(int nbPages) {
stopProgressDialog();
}
}
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle;
import com.tianjian.util.Utils;
import com.tianjian.areaxcdoc.R;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* PDF显示
*
* @author wms
* @date
* @version
*
*/
public class SeePDFActivity extends ActivitySupport implements
OnPageChangeListener, OnClickListener,Handler.Callback ,OnLoadCompleteListener {
private PDFView pdfview;
private String urlString;
private Handler handler;
private File file;
private final int FILE_DOWNLOAD_SUCCESS = 0;
private final int FILE_DOWNLOAD_FAIL = 1;
private int flag=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.load_pdf_activity);
initView();
setData();
}
/**
* 初始化view
*/
private void initView() {
pdfview = (PDFView) findViewById(R.id.pdfview);
urlString = getIntent().getStringExtra("path");
title = (TextView) findViewById(R.id.title);
String str=this.getIntent().getStringExtra("title");
if(str!=null&&!str.equals("")){
title.setText(str);
}else{
title.setText("体检报告");
}
backImg = (ImageButton) findViewById(R.id.backImg);
backImg.setOnClickListener(this);
handler = new Handler(this);
}
/**
* 下载pdf
*/
private void setData() {
startProgressDialog();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection connection = null;
ByteArrayOutputStream baos = null;
BufferedOutputStream bos = null;
FileOutputStream fos = null;
try {
URL url = new URL(urlString);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
// 实现连接
connection.connect();
if (connection.getResponseCode() == 200) {
Log.e("TAG", "请求网络编号为200");
flag=2;
InputStream is = connection.getInputStream();
// 以下为下载操作
byte[] arr = new byte[1];
baos = new ByteArrayOutputStream();
bos = new BufferedOutputStream(baos);
int n = is.read(arr);
while (n > 0) {
bos.write(arr);
n = is.read(arr);
}
bos.close();
String path = Environment.getExternalStorageDirectory() + "/download/";
String[] name = urlString.split("/");
path = path + name[name.length - 1];
file = new File(path);
fos = new FileOutputStream(file);
fos.write(baos.toByteArray());
fos.close();
baos.close();
// 关闭网络连接
connection.disconnect();
handler.sendEmptyMessage(FILE_DOWNLOAD_SUCCESS);
}
} catch (Exception e) {
Log.e("TAG", "请求失败!");
Message msg = new Message();
msg.what = FILE_DOWNLOAD_FAIL;
msg.obj = "下载pdf文件失败!";
handler.sendMessage(msg );
} finally{
if(flag!=2){
Message msg = new Message();
msg.what = FILE_DOWNLOAD_FAIL;
msg.obj = "加载失败!";
handler.sendMessage(msg );
}
Log.e("TAG", "llllllllllllllllllllllllllllllll!");
if(baos != null){
try {
baos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(bos != null){
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fos != null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(connection != null ){
connection.disconnect();
}
}
}
});
thread.start();
}
/**
* 加载pdf
*/
private void loadPdf() {
// 0, 2, 1, 3, 3, 3
// pdfview.fromFile(file).pages(0, 1, 1, 3, 3, 3)
// .defaultPage(1)
// .showMinimap(false)
// .enableSwipe(true)
// .onLoad(this)
// .onPageChange(SeePDFActivity.this).load();
pdfview.fromFile(file)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.load();
}
@Override
public void onPageChanged(int page, int pageCount) {
}
@Override
public void onClick(View v) {
// TODO onClick
switch (v.getId()) {
case R.id.backImg:
finish();
break;
default:
break;
}
}
@Override
public boolean handleMessage(Message msg) {
// TODO handleMessage
switch (msg.what) {
case FILE_DOWNLOAD_SUCCESS:
loadPdf();
break;
case FILE_DOWNLOAD_FAIL:
stopProgressDialog();
String str = "";
if(msg.obj == null){
str = "操作失败!";
}else{
str = (String) msg.obj;
}
Utils.show(this, str);
finish();
break;
default:
break;
}
return false;
}
@Override
public void loadComplete(int nbPages) {
stopProgressDialog();
}
}
阅读全文
0 0
- Android读取pdf文件及显示
- android 显示 PDF 文件
- android 显示 PDF 文件
- Android开发:显示PDF文件
- android 显示pdf文件内容
- android 显示pdf文件内容
- android webView显示PDF文件
- android调用Adobe Reader读取pdf文件
- Android下读取PDF文件的解决方案
- Android使用iText生成pdf文件并读取pdf内容
- Android显示PDF文件之PDFviewer
- Android显示PDF文件之iText
- android APP内显示PDF文件
- java读取pdf文件
- JAVA读取PDF文件
- JAVA读取PDF文件
- 读取pdf文件内容
- java读取pdf文件
- 10版outlook主账户删不掉
- 【数据处理·Python】时间数据处理之Arrow库(转)
- Android学习之EventBus基础篇
- about 'Syntax error on token "Invalid Character", delete this token'
- C# 实现托盘,并显示气泡消息
- Android读取pdf文件及显示
- 新手入门,三言两语说编译:C和C++…
- JSP与Servlet的关系
- 三言两语说拷贝:深拷贝和浅拷贝
- 三言两语说new和malloc:new m…
- 三言两语说C++三性
- memset 函数 的使用
- 三言两语说继承
- 运算符重载案例