gpt4 book ai didi

android - 如何使用 PdfRenderer 在 Android 上渲染 PDF

转载 作者:行者123 更新时间:2023-11-29 01:19:57 28 4
gpt4 key购买 nike

在这两种情况下我都没有完成这项任务:

1.尝试从手机内存中打开它
2.尝试从资源中打开

我有 render() 方法,它在 第 1 情况下看起来像这样:

private void render() {
try {
imageView = (ImageView) findViewById(R.id.page);

int REQ_WIDTH = 1;
int REQ_HEIGHT = 1;
REQ_WIDTH = imageView.getWidth();
REQ_HEIGHT = imageView.getHeight();

Bitmap bitmap = Bitmap.createBitmap(REQ_WIDTH, REQ_HEIGHT, Bitmap.Config.ARGB_4444);

File file = new File(Environment.getExternalStorageDirectory() + "/Download/test.pdf");

PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));

if (currentPage < 0) {
currentPage = 0;
} else if (currentPage > renderer.getPageCount()) {
currentPage = renderer.getPageCount() - 1;
}

Matrix matrix = imageView.getImageMatrix();
Rect rect = new Rect(0, 0, REQ_WIDTH, REQ_HEIGHT);

renderer.openPage(currentPage).render(bitmap, rect, matrix, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);

imageView.setImageMatrix(matrix);
imageView.setImageBitmap(bitmap);
imageView.invalidate();
renderer.close();
} catch (Exception e) {
e.printStackTrace();
}
}

抛出的异常最有趣的部分is here .如果您想查看整个日志 click here .

是的,我在 AndroidManifest.xml 中添加了所需的权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.john.pdfreader">

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".BookActivity">
<intent-filter>
<action android:name="com.example.schoolreader.BookActivity" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>

</manifest>

让我们看一下第二个案例(从 Assets 中读取):

// ...previous code
ParcelFileDescriptor input = getAssets().openFd("test.pdf").getParcelFileDescriptor();
PdfRenderer renderer = new PdfRenderer(input);
// ..previous code

在这种情况下,它说的是一样的,但如果我没记错的话,有 smth 说 cannot create document,但现在它消失了,异常看起来是一样的。不管怎样,我为什么要开始谈论第二种情况? There's an open issueMETA-INF 应该在 apk 的末尾。我的已经结束了,但仍然无法正常工作。

坦率地说,我什至尝试过 Androidstudio 本身的示例。你知道吗?它的工作!但只有使用他们的 sample.pdf 时,当我尝试用我的替换它时,它才会崩溃。您知道我可以尝试在我的 Android 上进行 pdf 渲染吗?

一切都在 Nexus 5、Android 6.0 Marshmallow 上进行了测试。

最佳答案

除了 list 中的权限外,您可能还需要明确请求权限。像这样的东西:

int permission = ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE);

if (permission != PackageManager.PERMISSION_GRANTED)
{
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(getActivity(), PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
}

关于android - 如何使用 PdfRenderer 在 Android 上渲染 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37463480/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com