1
我有一份表格,当前填写的内容会在提交时发送到专门的电子邮件地址。我想有机会提供其他选择。就像将其保存为PDF文件一样。该表单在main.xml布局中完成。是否有可能将XML布局转换为PDF?如果有的话可以有人指向我的一个很好的例子方向。Android如何将XML布局转换为PDF?
非常感谢
我有一份表格,当前填写的内容会在提交时发送到专门的电子邮件地址。我想有机会提供其他选择。就像将其保存为PDF文件一样。该表单在main.xml布局中完成。是否有可能将XML布局转换为PDF?如果有的话可以有人指向我的一个很好的例子方向。Android如何将XML布局转换为PDF?
非常感谢
你可以把这个链接看看:
https://github.com/HendrixString/Android-PdfMyXml
说明
首先创建XML布局。根据比例1:1.41,按照像素(以及所有它的子视图)给出尺寸,并根据横向或纵向比例给出尺寸。
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>
您可以创建多达页/模板,因为你需要。
通过延伸AbstractViewRenderer或通过匿名实例化并注入布局ID实施你的视图渲染器。 initView(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);
使用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);
应该有对谷歌的教程。 – alicanbatur 2013-05-10 09:42:09
我看起来只能找到那些从活动而不是布局创建的人。 – PaulH 2013-05-10 09:44:00
我不知道这个,但你有没有通过这个链接http://stackoverflow.com/questions/7806847/converting-xml-to-pdf-using-styles-from-xsl它可能会帮助你,也http: //stackoverflow.com/questions/212577/how-do-you-create-a-pdf-from-xml-in-java?rq=1 – surhidamatya 2013-05-10 09:45:40