我已经环顾四周,并对如何使用本地android工具生成Pdf有了不错的理解。我对应该如何构造xml / view还是有点困惑。因为对我来说,它永远不会加载。我将从xml开始。如下所示
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/dh_pdf_viewer_root"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.duethealth.lib.pdfviewer.ui.PdfDocumentView
android:id="@+id/dh_pdf_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<TextView
android:id="@+id/dh_pdf_page_counter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:layout_margin="@dimen/dh_padding_default"
android:background="@color/dh_color_background_75"
android:gravity="center"
android:padding="@dimen/dh_padding_default"
android:textAppearance="@style/DuetHealth.TextAppearance.ListLine2"/>
<include layout="@layout/dh_include_loading_50"/>
因此底部的TextView用于显示我的页面计数器(如果需要),我不需要扩展ViewPager,它只是一个占位符。
public class PdfDocumentView extends ViewPager {
public void writePdf(File file) {
PdfDocument document = new PdfDocument();
PageInfo pageInfo = new PageInfo.Builder(300, 300, 1).create();
Page page = document.startPage(pageInfo);
View content = findViewById(R.id.dh_pdf_view);
content.measure(800, 480);
content.layout(0, 0, 800, 480);
content.draw(page.getCanvas());
document.finishPage(page);
try {
FileOutputStream fileOutputStream = new FileOutputStream(file.getPath());
document.writeTo(fileOutputStream);
document.close();
fileOutputStream.close();
} catch (IOException e) {
Timber.e(e, "Error writing PDF");
}
}
我不知道我应该为PdfDocumentView
扩展哪个ViewGroup,或者整个文档可以放入ImageView还是其他东西?当我进行调试时,一切似乎都正常,PDF已成功地从URL提取到字节流中,然后写到文件中,然后再写到内存中,并且没有错误。似乎我的问题出在View本身。