Android 找不到PDFRender文件异常
以下是我的PDFRender代码,错误为“未找到文件” 请帮忙Android 找不到PDFRender文件异常,android,pdfrenderer,Android,Pdfrenderer,以下是我的PDFRender代码,错误为“未找到文件” 请帮忙 import java.io.File; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.pdf.PdfRenderer; i
import java.io.File;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.pdf.PdfRenderer;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
//import com.sun.pdfview.PDFRenderer;
public class MainActivity extends Activity
{
private ImageView imageView;
private int currentPage = 0;
private Button next, previous;
int REQ_WIDTH = 1;
int REQ_HEIGHT = 1;
File file = new File("/assets/sample.pdf");
private ParcelFileDescriptor mFileDescriptor;
Context context=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
REQ_WIDTH = imageView.getWidth();
REQ_HEIGHT = imageView.getHeight();
next = (Button) findViewById(R.id.next);
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("TAG - in next click"," TAG - in next click");
Log.i("TAG - BEFORE CLICK ","currentPage - "+currentPage);
currentPage++;
render();/**/
Log.i("TAG - POST CLICK ","currentPage - "+currentPage);
}
});
previous = (Button) findViewById(R.id.previous);
previous.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("TAG - in prevoius click","TAG - in prevoius click");
Log.i("TAG - BEFORE CLICK ","currentPage - "+currentPage);
currentPage--;
render();
Log.i("TAG - POST CLICK ","currentPage - "+currentPage);
}
});
render();
}
private void render() {/**/
try {
Log.e("TAG - In render()"," TAG - In render()");
imageView = (ImageView) findViewById(R.id.imageView);
REQ_WIDTH = imageView.getWidth();
REQ_HEIGHT = imageView.getHeight();
Log.e("TAG - In render2()","TAG - In render2");
System.out.println("REQ_HEIGHT - "+REQ_HEIGHT +" "+"REQ_WIDTH - "+REQ_WIDTH);
Bitmap bitmap = Bitmap.createBitmap(REQ_WIDTH, REQ_HEIGHT, Bitmap.Config.ARGB_4444);
//ParcelFileDescriptor filedesc=ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
//renderer = new PDFRenderer(getSeekableFileDescriptor(filedesc));
try{
mFileDescriptor = context.getAssets().openFd("file:///assets/sample.pdf").getParcelFileDescriptor();/**/
}catch(Exception ae)
{
Log.e("TAG - In render3()"," File descriptor empty");
ae.printStackTrace();
}
// This is the PdfRenderer we use to render the PDF.
PdfRenderer renderer = new PdfRenderer(mFileDescriptor);
//PDFRenderer renderer = new PDFRenderer(getSeekableFileDescriptor(mFileDescriptor));
if(mFileDescriptor != null)
{
Log.i("mFileDescriptor not null","check");
}
else
{
Log.i("mFileDescriptor is null","check");
}
final int pageCount = renderer.getPageCount();
Log.i("Total pages - "+pageCount,"currentPage - "+currentPage);
if (currentPage < 0) {
currentPage = 0;
} else if (currentPage >= renderer.getPageCount()) {
currentPage = renderer.getPageCount() - 1;
}
Matrix m = imageView.getImageMatrix();
Rect rect = new Rect(0, 0, REQ_WIDTH, REQ_HEIGHT);
renderer.openPage(currentPage).render(bitmap, rect, m, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
if(m!=null)
{
imageView.setImageMatrix(m);
imageView.setImageBitmap(bitmap);
imageView.invalidate();
renderer.close();
}else
{
Log.i("TAG - ","TAG - ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
导入java.io.File;
导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Bitmap;
导入android.graphics.Matrix;
导入android.graphics.Rect;
导入android.graphics.pdf.PdfRenderer;
导入android.os.Bundle;
导入android.os.ParcelFileDescriptor;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.ImageView;
//导入com.sun.pdfview.PDFRenderer;
公共类MainActivity扩展了活动
{
私人影像视图;
private int currentPage=0;
私人按钮下一步,上一步;
int REQ_WITH=1;
int REQ_高度=1;
File File=新文件(“/assets/sample.pdf”);
专用ParcelFileDescriptor mFileDescriptor;
Context=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=(imageView)findViewById(R.id.imageView);
REQ_WIDTH=imageView.getWidth();
REQ_HEIGHT=imageView.getHeight();
next=(按钮)findViewById(R.id.next);
next.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
e(“标记下一次单击”,“标记下一次单击”);
Log.i(“点击前标记”,“当前页面-”+当前页面);
currentPage++;
render()/**/
Log.i(“标记-点击发布”,“当前页面-”+当前页面);
}
});
previous=(按钮)findViewById(R.id.previous);
previous.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Log.e(“标记-在prevoius中单击”,“标记-在prevoius中单击”);
Log.i(“点击前标记”,“当前页面-”+当前页面);
当前页--;
render();
Log.i(“标记-点击发布”,“当前页面-”+当前页面);
}
});
render();
}
私有void render(){/**/
试试{
e(“TAG-In render()”,“TAG-In render()”;
imageView=(imageView)findViewById(R.id.imageView);
REQ_WIDTH=imageView.getWidth();
REQ_HEIGHT=imageView.getHeight();
e(“TAG-inrender2()”,“TAG-inrender2”);
System.out.println(“请求高度-”+请求高度+”+“+”请求宽度-“+请求宽度”);
位图Bitmap=Bitmap.createBitmap(请求宽度、请求高度、Bitmap.Config.ARGB\u 4444);
//ParcelFileDescriptor filedesc=ParcelFileDescriptor.open(文件,ParcelFileDescriptor.MODE\u只读);
//renderer=新的PDFRenderer(getSeekableFileDescriptor(filedesc));
试一试{
mFileDescriptor=context.getAssets().openFd(“file:///assets/sample.pdfgetParcelFileDescriptor()/**/
}捕获(异常ae)
{
e(“render3()中的标记”,“文件描述符为空”);
ae.printStackTrace();
}
//这是我们用来渲染PDF的PdfRenderer。
PdfRenderer渲染器=新的PdfRenderer(mFileDescriptor);
//PDFRenderer renderer=新的PDFRenderer(getSeekableFileDescriptor(mFileDescriptor));
if(mFileDescriptor!=null)
{
Log.i(“mFileDescriptor非空”、“检查”);
}
其他的
{
Log.i(“mFileDescriptor为空”、“检查”);
}
final int pageCount=renderer.getPageCount();
Log.i(“总页数-”+页数,“当前页-”+当前页);
如果(当前页面<0){
currentPage=0;
}else if(currentPage>=renderer.getPageCount()){
currentPage=renderer.getPageCount()-1;
}
矩阵m=imageView.getImageMatrix();
Rect Rect=新Rect(0,0,请求宽度,请求高度);
renderer.openPage(currentPage).render(位图、rect、m、PdfRenderer.Page.render_模式_用于_显示);
如果(m!=null)
{
imageView.setImageMatrix(m);
设置图像位图(位图);
imageView.invalidate();
close();
}否则
{
Log.i(“标记-”,“标记-”);
}
}捕获(例外e){
e、 printStackTrace();
}
}
}
来自PDFRenderer.class的源代码:
import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
...
AWT在Android afaik上的应用非常有限。您必须寻找另一个pdf库管理员。您没有以正确的方式读取文件。以下是如何读取位于资产文件夹中的文件:
mFileDescriptor = context.getAssets().openFd("sample.pdf").getParcelFileDescriptor();
有关更多帮助,请参阅。有人能帮我吗…我如何从fileDescriptor中正确读取mu文件,直到它到达某个程序的帖子。Thanx…但问题是我必须仅使用PDFRenderer来完成…请让我检查其他东西。。