【发布时间】:2022-03-08 21:51:42
【问题描述】:
我正在 A4 大小的应用程序中创建一个 pdf 文档,我想在该页面上绘制我的文本,但是当文本大得多时,它将覆盖页面的所有区域,而其余文本则没有在页面上绘制,所以如果我的第一页是创建另一个页面并在另一个页面上绘制其余文本,我想实现这一点。有人可以帮我吗?
我的代码是
public void create_Pdf_File(String text, String filename) {
Typeface font = scanEditText.getTypeface();
PdfDocument pdf_doc = new PdfDocument();
try {
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Scanned Documents/pdf file/";
File pdf_dir = new File(path);
if(!pdf_dir.exists())
pdf_dir.mkdirs();
File pdf_file = new File(pdf_dir, filename + ".pdf");
FileOutputStream fout = new FileOutputStream(pdf_file);
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(595, 842, 1).create();
PdfDocument.Page page = pdf_doc.startPage(pageInfo);
Paint myPaint = new Paint();
myPaint.setTypeface(font);
int x = 10, y = 25;
for(String line : text.split("\n")) {
page.getCanvas().drawText(line, x, y, myPaint);
y += myPaint.descent() - myPaint.ascent();
}
pdf_doc.finishPage(page);
pdf_doc.writeTo(fout);
pdf_doc.close();
Toast.makeText(this, "saved", Toast.LENGTH_SHORT).show();
}
catch(Exception e) {
System.out.println(e);
e.printStackTrace();
}
}
【问题讨论】:
-
发布您的代码块以创建 PDF 文档
-
我已经提到上面的代码请帮助我
-
在您的代码中,您有
page = pdf_doc.startPage(pageInfo)和pdf_doc.finishPage(page)。您是否尝试过完成上一页并在循环中创建一个新页面,y 位置变得足够低... -
如果文本很长,需要在文本限制结束时自动创建下一页或防止文本溢出,那么您可以做的是限制特定页面的字符数。首先,您必须根据该页面中的字符数划分长文本,循环并打印。 在我用示例代码解释如何处理它的地方查看我的答案。 stackoverflow.com/a/71394812/12552434