gpt4 book ai didi

Android 如何将 XML 布局转换为 PDF?

转载 作者:行者123 更新时间:2023-11-29 18:00:27 25 4
gpt4 key购买 nike

我有一个表格,当当前填写时会在提交时发送到一个专用的电子邮件地址。我希望有机会提供其他选择。就像将其另存为 PDF 文件一样。该表单在 main.xml 布局中完成。是否可以将 xml 布局转换为 PDF?如果可以,有人可以给我指出一个很好的例子。

非常感谢

最佳答案

你可以看看这个链接:

https://github.com/HendrixString/Android-PdfMyXml

说明

  1. 创建 XML 布局

首先创建 XML 布局。根据比例 1:1.41 为其提供以像素为单位的尺寸(及其所有 subview )和比例(横向或纵向)。

page1.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="2115px"
android:layout_height="1500px"
android:background="@color/white">
<TextView android:id="@+id/tv_hello"
android:textColor="@color/black"
android:textSize="27px"
android:textStyle="bold"
android:padding="6px"/>

</RelativeLayout>

您可以根据需要创建任意数量的页面/模板。

  1. 实现 View 渲染器

通过扩展 AbstractViewRenderer 或通过匿名实例化它并注入(inject)布局 ID 来实现您的 View 渲染器。 initView(View view) 将自动为您提供一个膨胀的 View 。还有其他选项,但我现在不会介绍它。

AbstractViewRenderer page = new AbstractViewRenderer(context, R.layout.page1) {
private String _text;

public void setText(String text) {
_text = text;
}

@Override
protected void initView(View view) {
TextView tv_hello = (TextView)view.findViewById(R.id.tv_hello);
tv_hello.setText(_text);
}
};

// you can reuse the bitmap if you want
page.setReuseBitmap(true);
  1. 构建 PDF 文档

使用 PdfDocument 或 PdfDocument.Builder 添加页面并在后台渲染和运行它,带进度条。

    PdfDocument doc            = new PdfDocument(ctx);

// add as many pages as you have
doc.addPage(page);

doc.setRenderWidth(2115);
doc.setRenderHeight(1500);
doc.setOrientation(PdfDocument.A4_MODE.LANDSCAPE);
doc.setProgressTitle(R.string.gen_please_wait);
doc.setProgressMessage(R.string.gen_pdf_file);
doc.setFileName("test");
doc.setInflateOnMainThread(false);
doc.setListener(new PdfDocument.Callback() {
@Override
public void onComplete(File file) {
Log.i(PdfDocument.TAG_PDF_MY_XML, "Complete");
}

@Override
public void onError(Exception e) {
Log.i(PdfDocument.TAG_PDF_MY_XML, "Error");
}
});

doc.createPdf(ctx);

或使用 PdfDocument.Builder

new PdfDocument.Builder(ctx).addPage(page).filename("test").orientation(PdfDocument.A4_MODE.LANDSCAPE)
.progressMessage(R.string.gen_pdf_file).progressTitle(R.string.gen_please_wait).renderWidth(2115).renderHeight(1500)
.listener(new PdfDocument.Callback() {
@Override
public void onComplete(File file) {
Log.i(PdfDocument.TAG_PDF_MY_XML, "Complete");
}

@Override
public void onError(Exception e) {
Log.i(PdfDocument.TAG_PDF_MY_XML, "Error");
}
}).create().createPdf(this);

关于Android 如何将 XML 布局转换为 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16479337/

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