Java 使用editText android中的数据创建Pdf

Java 使用editText android中的数据创建Pdf,java,android,android-layout,Java,Android,Android Layout,我正在尝试创建一个pdf。数据直接取自编辑文本,但问题是,如果我在编辑文本中写入任何段落,pdf中的最终输出将在一行而不是多行中显示所有数据。 虽然正在创建pdf,但我只能在一行中看到输出。 图像链接: 陈述活动: 创建的文件: 查看的文件: 我认为这是因为多行是编辑文本的属性,而不是字符串,所以如果您从ET读取它,它将始终是单行。您可以尝试设置最大行长,然后读取字符以进行限制,然后将其添加到新的字符串,例如数组列表(您不知道文本的长度)。如果行限制没有以、或或空格结尾,则您可以进一步阅读

我正在尝试创建一个
pdf
。数据直接取自编辑文本,但问题是,如果我在编辑文本中写入任何段落,
pdf
中的最终输出将在一行而不是多行中显示所有数据。 虽然正在创建
pdf
,但我只能在一行中看到输出。 图像链接:

陈述活动:

创建的文件:

查看的文件:


我认为这是因为
多行
编辑文本
的属性,而不是
字符串
,所以如果您从ET读取它,它将始终是单行。您可以尝试设置最大行长,然后读取字符以进行限制,然后将其添加到新的
字符串
,例如
数组列表
(您不知道文本的长度)。如果行限制没有以
空格
结尾,则您可以进一步阅读,直到出现
空格
为止。将整个ArrayList添加到pdf之后,每行都以
\n
结尾。

尝试将从editText中获得的字符串拆分为预定义长度,然后在画布中使用它。drawText()


我没有试过这个。这可能会起作用

我认为您必须找到EOF字符并相应地更改要写入文件的字符串。(使用转义序列)对其他waucreatePdf(editText.getText().toString()+“\n”,editText2.getText().toString())没有帮助@Abr不工作尝试xml中的maxlines属性,也许
public class Main2Activity extends AppCompatActivity {
    Button btnCreate;
    EditText editText,editText2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        btnCreate = (Button)findViewById(R.id.create);
        editText =(EditText) findViewById(R.id.edittext);
        editText2 =(EditText) findViewById(R.id.edittext2);
        btnCreate.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.KITKAT)
            @Override
            public void onClick(View view) {
                createPdf(editText.getText().toString(),editText2.getText().toString());
            }
        });
    }

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    private void createPdf(String title,String description){
        // create a new document
        PdfDocument document = new PdfDocument();
        // crate a page description

        PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(300, 600, 1).create();
        // start a page
        PdfDocument.Page page = document.startPage(pageInfo);

        Canvas canvas = page.getCanvas();
        Paint paint = new Paint();
        paint.setColor(Color.BLACK);
        canvas.drawText(title, 20, 40, paint);
        canvas.drawText(description, 20, 60, paint);
       // canvas.drawText(description,1,20,20.0f,30.0f,paint);
        //canvas.drawt
        // finish the page
        document.finishPage(page);
// draw text on the graphics object of the page

        // write the document content
        String directory_path = Environment.getExternalStorageDirectory().getPath() + "/mypdf/";
        File file = new File(directory_path);
        if (!file.exists()) {
            file.mkdirs();
        }
        String targetPdf = directory_path+title+".pdf";
        File filePath = new File(targetPdf);
        try {
            document.writeTo(new FileOutputStream(filePath));
            Toast.makeText(this, "Done", Toast.LENGTH_LONG).show();
        } catch (IOException e) {
            Log.e("main", "error "+e.toString());
            Toast.makeText(this, "Something wrong: " + e.toString(),  
Toast.LENGTH_LONG).show();
        }
        // close the document
        document.close();
    }
}
while(description.length()>15){
    if(description.length()>15){
        String first = description.substring(0,15);
        canvas.drawText(description, 20, 60, paint);
    }
    else{
        String second =description.substring(0,description.length());
        canvas.drawText(description, 20, 60, paint);
    }

}