Java 如何在android中创建PDF时将长文本拆分为多行?
我有一个笔记本应用程序,我想把笔记保存为PDF文件。用户可以在TextView中编写长文本,但当我将文本设置为字符串并创建PDF文件时,只有一行中的一小部分文本会出现在PDF文件中。如何将文本拆分为多行以在PDF页面中查看整个文本? 我使用这部分java代码来分解文本,但它不起作用Java 如何在android中创建PDF时将长文本拆分为多行?,java,android,pdf,Java,Android,Pdf,我有一个笔记本应用程序,我想把笔记保存为PDF文件。用户可以在TextView中编写长文本,但当我将文本设置为字符串并创建PDF文件时,只有一行中的一小部分文本会出现在PDF文件中。如何将文本拆分为多行以在PDF页面中查看整个文本? 我使用这部分java代码来分解文本,但它不起作用 textView = findViewById(R.id.textView); String pdfText = textView.getText().toString(); Pai
textView = findViewById(R.id.textView);
String pdfText = textView.getText().toString();
Paint contentPaint = new Paint();
int length = pdfText.length();
contentPaint.breakText(pdfText, 0, length, true, 70, null);
canvas.drawText(pdfText, 30, 285, contentPaint);
我也有同样的问题。我设法从邮局解决了这个问题。它使用静态布局。下面是我的全部代码,它将字符串值保存到使用多行分隔符创建的pdf文件中
String saveFilePath = path.getPath();
String textToSave = detectedText.getText().toString();
File file = new File(path, filenameString + ".pdf");
file.createNewFile();
FileOutputStream fOut = new FileOutputStream(file);
PdfDocument document = new PdfDocument();
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(595, 842, 1).create();
PdfDocument.Page page = document.startPage(pageInfo);
Canvas canvas = page.getCanvas();
//*this part i took from the post for multiline breaks*
TextPaint mTextPaint = new TextPaint();
StaticLayout mTextLayout = new StaticLayout( textToSave ,mTextPaint, canvas.getWidth() - 100, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
canvas.save();
int textX = 50;
int textY = 50;
canvas.translate(textX, textY);
//**
mTextLayout.draw(canvas);
canvas.restore();
document.finishPage(page);
document.writeTo(fOut);
document.close();
如果字符串仍然溢出页面,请在此处尝试不同的值
canvas.getWidth() - 100
在静态布局初始化中。
我将提供一些前后截图