- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个文件要从 Assets 加载并在应用程序中显示 pdf。我在 Assets 文件夹中显示了文件“one.pdf”。
我的依赖项是:
compile 'com.github.barteksc:android-pdf-viewer:2.8.1'
compile "commons-io:commons-io:+"
在屏幕上加载 PDF 的代码是 (DisplayActivity.java):
pdfView= (PDFView)findViewById(R.id.pdfView);
setContentView(R.layout.activity_main);
pdfView.fromAsset("one.pdf").load();
显示PDF的代码(DisplayActivity.xml)
<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/pdfView"
android:layout_below="@+id/tv_header"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
错误日志:
FATAL EXCEPTION: main Process: in.edu.reva.revauniversity_pu, PID: 15597
java.lang.RuntimeException: Unable to start activity ComponentInfo{in.edu.reva.revauniversity_pu/in.edu.reva.revauniversity_pu.FormulaActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method 'com.github.barteksc.pdfviewer.PDFView$Configurator com.github.barteksc.pdfviewer.PDFView.fromAsset(java.lang.String)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2720)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1466)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6111)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.github.barteksc.pdfviewer.PDFView$Configurator com.github.barteksc.pdfviewer.PDFView.fromAsset(java.lang.String)' on a null object reference
at in.edu.reva.revauniversity_pu.FormulaActivity.onCreate(FormulaActivity.java:42)
at android.app.Activity.performCreate(Activity.java:6734)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2720
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1466)
at android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6111)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
该文件存在于 Assets 文件夹中。我在 Manifest 中添加了访问外部存储的权限。出现以下错误的原因可能是什么?
最佳答案
改变你的依赖到
compile 'com.github.barteksc:android-pdf-viewer:2.8.1'
compile "commons-io:commons-io:+"
来自
compile 'com.github.barteksc:android-pdf-viewer:2.0.3'
compile 'org.apache.commons:commons-collections4:4.1'
那么你的Xml文件应该有
<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/pdfView"
android:layout_below="@+id/tv_header"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
以及您的 Activity 代码:
public class YourActivity extends AppCompatActivity implements OnPageChangeListener, OnLoadCompleteListener {
public static final String SAMPLE_FILE = "one.pdf";
PDFView pdfView;
Integer pageNumber = 0;
String pdfFileName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_your);
pdfView = (PDFView) findViewById(R.id.pdfView);
displayFromAsset(SAMPLE_FILE);
}
private void displayFromAsset(String assetFileName) {
pdfFileName = assetFileName;
pdfView.fromAsset(SAMPLE_FILE).defaultPage(pageNumber).enableSwipe(true)
.swipeHorizontal(false)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.load();
}
@Override
public void onPageChanged(int page, int pageCount) {
pageNumber = page;
setTitle(String.format("%s %s / %s", pdfFileName, page + 1, pageCount));
}
@Override
public void loadComplete(int nbPages) {
PdfDocument.Meta meta = pdfView.getDocumentMeta();
printBookmarksTree(pdfView.getTableOfContents(), "-");
}
public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {
for (PdfDocument.Bookmark b : tree) {
Log.e(TAG, String.format("%s %s, p %d", sep, b.getTitle(), b.getPageIdx()));
if (b.hasChildren()) {
printBookmarksTree(b.getChildren(), sep + "-");
}
}
}
}
同时添加此权限
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
并确保您的 minSdkVersion 15 或更高。
它将正常工作。
关于android - 为什么 PDFViewer 在使用 Barteksc PDFViewer 打开文件时总是给出 NullPointer 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47450564/
我有一个文件要从 Assets 加载并在应用程序中显示 pdf。我在 Assets 文件夹中显示了文件“one.pdf”。 我的依赖项是: compile 'com.github.bartek
我安装了 this库从我的应用程序中的 url 查看 pdf 但是当我单击文件打开它时出现以下错误: 我尝试查看 ContentResolver 但没有成功 这是logcat: 07-26 15:35
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
我想为移动设备开发 pdf 电子书应用程序。 ionic 框架是否有 pdf 查看器组件。我喜欢 mozilla pdf.js。我需要 ionic 项目示例。 最佳答案 您是否尝试过角度模块ng-pd
我有一个查看 pdf 的应用程序,问题是 pdf 超出屏幕,如果我缩小 pdf,则没有聚焦。 我正在使用这个 SO 答案中的代码。 Read PDF Using PDFViewer 有任何想法吗? 谢
我已成功将 pdf 文件作为 longblob 保存到我的数据库 (MySQL) 并使用了以下代码: opf.Filter = "PDF FILES |*.pdf" If opf.ShowDi
我在 VS2008 中的 C# 项目的 winForm 中使用了 Debenu PDFViewer。我想将附件保存在磁盘上。附件已保存,但该方法的返回值为 0(表示失败)。保存的文件用Adobe Re
我正在查看许多帖子,寻找一种在我的 Android 应用程序中实现此示例的方法。 http://apv.googlecode.com/files/apv-0.3.3dev01.tar.gz 我在某处读
我从 ERP 后端流式传输 PDF 文件并将其显示在 sap.m.PDFViewer 控件中。我已将 showDownloadButton 属性值设置为“false”。下载按钮已在弹出页脚中消失。 不
嗨,我有一个奇怪的问题。我有一个 Android 应用程序,其中包含与 apk bundle 在一起的 PDF 文件。在 UI 上,我显示文件的表格列表,用户可以单击并使用他们选择的查看器加载 pdf
我想使用 PDFViewer.jar 读取存储在 Assets 文件夹中的 pdf 文件, 我尝试过这种方式,但收到错误消息,不幸的是它停止了。 谁能帮我实现一下。 public class Main
我的文档目录中有本地 pdf 文件。我的代码使用 WKWebview 或 PDFViewer 调用每一个进行显示,但它仅在 iPhone XR 模拟器上显示,而不在任何其他模拟器设备上显示。 任何早于
我正在使用 Kendo DropDwonList 开发一个 MVC 元素。 问题如下图所示。 Kendo DropDownList 元素隐藏在 PDFViewer 后面。这只发生在 safari 浏览
我正在制作一个应用程序,让用户可以上传 PDF 文件,然后将它们保存到 Firebase。现在我想在我的应用程序中显示它们,我不想让用户下载文件,但我希望它直接显示在应用程序中。 这是我保存文件的方式
ScrollBar 和 import com.github.barteksc.pdfviewer.ScrollBar; 不起作用 此外,当我在设备上运行然后点击我想查看的 pdf 时,应用程序崩溃了。
在这里,我从原始文件夹打开 Pdf,并使用 PDfViewer 的 Jar,但问题是..查看 Pdf..我想以大尺寸打开,而它以小尺寸打开..uripdf = "android.resource://
我已经开始学习 Swift 和 iOS 编程,并且编写了一个小应用程序,由一个 navigationController、一个 FirstViewController 和一个 SecondViewCo
我是一名优秀的程序员,十分优秀!