首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Relativelayout转换为PDF,然后打印和下载

如何将Relativelayout转换为PDF,然后打印和下载
EN

Stack Overflow用户
提问于 2021-02-02 19:54:28
回答 1查看 38关注 0票数 1

我尝试了一些代码,但无法在这里工作,这是我的XML文件

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#D2D3D5"
tools:context=".View.Dashbord.AllotmentDoc">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

<RelativeLayout
    android:id="@+id/fulldoc"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


<LinearLayout
    android:layout_marginTop="10dp"
    android:id="@+id/toipbar"
    android:layout_centerHorizontal="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/logo"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_marginEnd="20sp"
        android:layout_marginBottom="10dp"
        android:src="@drawable/logo"
        android:contentDescription="@string/todo" />

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">


        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="@font/calibri_bold"
            android:text="@string/tcb_title"
            android:textColor="@color/black"
            android:textSize="15sp"
            android:textStyle="bold"
            tools:ignore="SmallSp" />

        <LinearLayout
            android:layout_centerHorizontal="true"
            android:layout_below="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="@font/calibri_bold"
            android:layout_marginStart="10dp"
            android:text="@string/karjaloy"
            android:textColor="@color/black"
            android:textSize="15sp"
            android:textStyle="bold"
            tools:ignore="SmallSp" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/calibri_bold"
                android:text="@string/dhaka"
                android:textColor="@color/black"
                android:textSize="15sp"
                android:textStyle="bold"
                tools:ignore="SmallSp" />

             </LinearLayout>

    </RelativeLayout>

    <RelativeLayout
        android:layout_marginStart="10sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/rightnav"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/calibri_bold"
                android:text="@string/date"
                android:textColor="@color/black"
                android:textSize="15sp"
                android:textStyle="bold"
                tools:ignore="SmallSp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/calibri_bold"
                android:text="@string/_01_01_21"
                android:textColor="@color/black"
                android:textSize="15sp"
                android:textStyle="bold"
                tools:ignore="SmallSp" />
            </LinearLayout>


        </LinearLayout>
        <LinearLayout
            android:layout_below="@+id/rightnav"
            android:id="@+id/rightnavroll"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="@font/calibri_bold"
                    android:text="ক্রমিক নং: "
                    android:textColor="@color/black"
                    android:textSize="15sp"
                    android:textStyle="bold"
                    tools:ignore="SmallSp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fontFamily="@font/calibri_bold"
                    android:text="01"
                    android:textColor="@color/black"
                    android:textSize="15sp"
                    android:textStyle="bold"
                    tools:ignore="SmallSp" />
            </LinearLayout>


        </LinearLayout>


    </RelativeLayout>


</LinearLayout>

<TextView
    android:id="@+id/titleBar"
    android:layout_below="@+id/toipbar"
    android:layout_centerHorizontal="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="@font/calibri_bold"
    android:textColor="@color/black"
    android:text="@string/aggrement"
    android:textSize="15sp"
    android:textStyle="bold"
    tools:ignore="SmallSp" />

<TableLayout
    android:layout_centerHorizontal="true"
    android:id="@+id/tableheader"
    android:layout_marginTop="10dp"
    android:layout_below="@+id/titleBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="@string/product_name"
            android:padding="3dip" />
        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="@string/products_quantity"
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />
        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="@string/mesurment"
            android:padding="3dip" />
        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="@string/total_price"
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />


    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:gravity="center"
            android:text="@string/onion"
            android:padding="3dip" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="@string/_2000_kg"
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="25.00"
            android:gravity="right"
            android:padding="3dip" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="50000"
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:gravity="center"
            android:text="@string/onion"
            android:padding="3dip" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="@string/_2000_kg"
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="@string/_20_00"
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="40000"
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

    </TableRow>
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text=" "
            android:padding="3dip" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text=" "
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text=" "
            android:padding="3dip" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text=" "
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

    </TableRow>
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:padding="3dip" />
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:padding="3dip" />
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

    </TableRow>
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:padding="3dip" />
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:padding="3dip" />
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

    </TableRow>
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:padding="3dip" />
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:padding="3dip" />
        <TextView
            android:background="@drawable/table_border"
            android:text=" "
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

    </TableRow>
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text=" "
            android:padding="3dip" />
        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text=" "
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="@string/intotal"
            android:gravity="right"
            android:padding="3dip" />

        <TextView
            android:fontFamily="@font/calibri_bold"
            android:textColor="@color/black"
            android:background="@drawable/table_border"
            android:text="@string/_90000"
            android:gravity="right"
            android:padding="3dip"
            tools:ignore="RtlHardcoded" />

    </TableRow>

</TableLayout>

<TextView
    android:layout_marginTop="20sp"
    android:text="@string/aggrement1"
    android:layout_centerHorizontal="true"
    android:layout_below="@+id/tableheader"
    android:id="@+id/aggrement"
    android:textColor="@color/black"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />



<LinearLayout
    android:id="@+id/bottombar"
    android:layout_centerHorizontal="true"
    android:layout_below="@id/aggrement"
    android:layout_marginTop="15sp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:text="@string/nd_sign"
        android:layout_marginEnd="10sp"
        android:textColor="@color/black"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:text="@string/office_prodhan"
        android:layout_marginLeft="10sp"
        android:layout_marginRight="10sp"
        android:textColor="@color/black"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:text="@string/signofbuyer"
        android:layout_marginStart="10sp"
        android:textColor="@color/black"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>


 </RelativeLayout>


<LinearLayout
    android:id="@+id/pdfsection"
    android:layout_below="@id/fulldoc"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="100sp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:ignore="NotSibling">


    <TextView
        android:id="@+id/printpdf"
        android:layout_marginTop="20dp"
        android:gravity="center"
        android:background="@drawable/editbox"
        android:text="@string/prints_pdf"
        android:layout_marginEnd="10dp"
        android:layout_width="150dp"
        android:layout_marginBottom="10sp"
        android:layout_height="45sp" />

    <TextView
        android:id="@+id/downloadpdf"
        android:layout_marginTop="20dp"
        android:gravity="center"
        android:layout_marginStart="10dp"
        android:background="@drawable/editbox"
        android:text="@string/download_pdf"
        android:layout_width="150sp"
        android:layout_marginBottom="10sp"
        android:layout_height="45sp" />

</LinearLayout>

<TextView
    android:id="@+id/gotopayment"
    android:layout_centerHorizontal="true"
    android:layout_below="@+id/pdfsection"
    android:background="@drawable/editbox"
    android:text="@string/go_to_payment"
    android:gravity="center"
    android:layout_marginTop="20sp"
    android:layout_width="150sp"
    android:layout_height="45sp"/>
</RelativeLayout>


</ScrollView>

这是我正在尝试的Java代码。我尝试这个库:https://github.com/Gkemon/Android-XML-to-PDF-Generator

但不能工作。

代码语言:javascript
复制
 package com.example.tcbmobileapp.View.Dashbord;


import androidx.appcompat.app.AppCompatActivity;
import com.example.tcbmobileapp.R;
import com.example.tcbmobileapp.View.Payment.PaymentOption;
import com.gkemon.XMLtoPDF.PdfGenerator;
import com.gkemon.XMLtoPDF.PdfGeneratorListener;
import com.gkemon.XMLtoPDF.model.FailureResponse;
import com.gkemon.XMLtoPDF.model.SuccessResponse;
import android.content.Context;
import android.content.Intent;

import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;



public class AllotmentDoc extends AppCompatActivity {

TextView printPDF, downloadPDF, gotoPayment;
RelativeLayout pdfmain;
String str;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_allotment_doc);


    printPDF = findViewById(R.id.printpdf);
    downloadPDF = findViewById(R.id.downloadpdf);
    gotoPayment = findViewById(R.id.gotopayment);
    pdfmain = findViewById(R.id.fulldoc);




    gotoPayment.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(AllotmentDoc.this, PaymentOption.class));
        }
    });

    pdfmain = (RelativeLayout)findViewById(R.id.fulldoc);

    printPDF.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Context context= AllotmentDoc.this;
            PdfGenerator.getBuilder()
                    .setContext(context)
                    .fromLayoutXMLSource()
                    .fromLayoutXML(R.layout.activity_allotment_doc, R.layout.activity_allotment_doc)
                    .setDefaultPageSize(PdfGenerator.PageSize.A4)
                    .setFileName("Allotment_PaperPDF")
                    /* It is file name */
                    .setFolderName("TCBMobileApp")
                    .openPDFafterGeneration(true)
                    /* It true then the generated pdf will be shown after generated. */
                    .build(new PdfGeneratorListener() {
                        @Override
                        public void onFailure(FailureResponse failureResponse) {
                            super.onFailure(failureResponse);

                        }

                        @Override
                        public void showLog(String log) {
                            super.showLog(log);
                            /*It shows logs of events inside the pdf generation process*/
                        }

                        @Override
                        public void onSuccess(SuccessResponse response) {
                            super.onSuccess(response);
                            /* If PDF is generated successfully then you will find SuccessResponse
                             * which holds the PdfDocument,File and path (where generated pdf is 
 stored)*/

                        }
                    });

        }
    });

    }

  }

基本上,我想打印我的布局(R.id.fulldoc),但我不会包括在我的pdf中的其余,所以我如何做到这一点。我想显示我的pdf,以便用户可以查看,也可以下载它使用下载按钮。

以下是图像链接:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-14 04:47:30

您可以使用这个图书馆在几行代码中轻松地完成任务。在这里,我看到您正在输入完整的布局,但是您只需要输入特定的视图,而只是像-

代码语言:javascript
复制
  PdfGenerator.getBuilder()
                        .setContext(context)
                        .fromViewIDSource()
                        .fromViewID(activity,R.id.fulldoc) //The specifi view id you want to print
                        .setDefaultPageSize(PdfGenerator.PageSize.A4)
                        .setFileName("Allotment_PaperPDF")
                        .setFolderName("TCBMobileApp")
                        .build(new PdfGeneratorListener() {
                        @Override
                        public void onFailure(FailureResponse failureResponse) {
                            super.onFailure(failureResponse);
                        }
            
                        @Override
                        public void onStartPDFGeneration() {
                            /*When PDF generation begins to start*/
                        }

                        @Override
                        public void onFinishPDFGeneration() {
                            /*When PDF generation is finished*/
                        }

                        @Override
                        public void showLog(String log) {
                            super.showLog(log);
                        }

                        @Override
                        public void onSuccess(SuccessResponse response) {
                            super.onSuccess(response);
                        }
                    });

想了解更多的信息,请看我的文档,这与你的问题有关。

首先,确保您使用的是我的最新版本v.2.0,其中我修复了应用程序级gradle中的一些bug和Java version 1.8 -

代码语言:javascript
复制
 implementation 'com.github.Gkemon:XML-to-PDF-generator:2.0' 

要获得一个示例,请参见这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66016722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档