我正在开发一个pdf打印应用程序,当我被要求使用android PrintDocumentAdapter设置页面范围时卡住了。我正在使用android api设置页面范围,如此
this.printManager.print(FilenameUtils.getName(pdfPath),
new PrintDocumentAdapter() {
@Override
public void onWrite(PageRange[] pages,
ParcelFileDescriptor destination,
CancellationSignal cancellationSignal,
WriteResultCallback callback) {
OutputStream output = new FileOutputStream(destination
.getFileDescriptor());
InputStream pdfInStream = null;
try {
pdfInStream = new FileInputStream(
PdfPrint.this.pdfPath);
IOUtils.copy(pdfInStream, output);
callback.onWriteFinished(new PageRange[] {new PageRange(0, 1), new PageRange(2, 4)});
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
output.flush();
pdfInStream.close();
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
仍然会出现带有“全部”选项的打印对话框,此处我也可以手动设置范围。但我想限制此行为,因为我以编程方式设置页面范围,对话框应显示前面已设置的页面范围,并仅打印那些特定页面。有没有办法禁用此“手动页面范围选择”并设置打印对话框的页面范围。 请帮帮我
答案 0 :(得分:0)
onWriteFinished
回调表示已实际写入destination
的页面。您的代码会发送整个PDF,因此它应提供:
callback.onWriteFinished(new PageRange[] { PageRange.ALL_PAGES });
要将打印限制在某些页面上,请发送仅包含这些页面的PDF。