PdfDocument - это класс, который позволяет создавать PDF-файлы из Android представления. Вы просто добавляете вид в PdfDocument
, а затем сохраняете PDF в память.
Однако я не хотел бы добавлять вид, который уже отображается на экране, поскольку такой вид подходит только для смартфона. экраны, и я хочу создать PDF-документ для принтеров.
Поэтому я хочу передать вид без рендеринга. Хотя я, конечно, могу это сделать, как будут решаться размеры и пропорции? Как я могу контролировать это в своем PDF-файле?
ОБНОВЛЕНИЕ:
Следуя приведенному ниже ответу от clotodex, я сделал:
LayoutInflater inflater = getLayoutInflater();
View linearview;
linearview = inflater.inflate(R.layout.printed_order,
findViewById(android.R.id.content),
false);
PdfDocument document = new PdfDocument();
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(2480, 3508, 0).create();
PdfDocument.Page page = document.startPage(pageInfo);
linearview.draw(page.getCanvas());
document.finishPage(page);
OutputStream outStream;
File file = new File(getExternalFilesDir(null), "pedido.PDF");
try {
outStream = new FileOutputStream(file);
document.writeTo(outStream);
document.close();
outStream.flush();
outStream.close();
но я получить пустой PDF. Если я выполняю
View view = findViewById(android.R.id.content);
view.draw(page.getCanvas());
вместо
linearview.draw(page.getCanvas());
, я получаю действие, в котором я участвую, что подтверждает, что все верно, за исключением представления, которое я пытаюсь распечатать .