PdfDocument的布局

时间:2018-11-11 00:21:16

标签: java android pdf pdf-generation android-view

我已经环顾四周,并对如何使用本地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本身。

0 个答案:

没有答案