【问题标题】:Printing PDF via Print Manager - Print Preview Doesn't Match Output通过打印管理器打印 PDF - 打印预览与输出不匹配
【发布时间】:2018-06-01 19:15:26
【问题描述】:

我正在使用此处的示例通过 Android 打印框架打印 PDF: How to Print PDF using Android 4.4 Printing framework

但是,打印预览与打印输出不匹配。事实上,输出是正确的,但预览不正确。有什么办法可以改正吗?

编辑:Google PDF 查看器在尝试打印 PDF 时显然会正确显示预览。是否有一些未知的方法可以让预览在打印预览中正确显示?似乎没有任何解决方案。

【问题讨论】:

  • 您使用的是哪种打印服务。实际上,传递给打印服务的 pdf 与用于创建预览的 pdf 相同,但打印服务可以使用不同的 pdf 渲染器来创建输出,而打印框架使用 PDFium:opensource.google.com/projects/pdfium,因此您可能需要对它提出一个错误
  • 我正在使用佳能打印服务。
  • 更新 - 在 Google PDF 查看器中,预览显示正确。
  • 张贴一些图片说明 pdf 的不同之处

标签: android pdf android-print-framework


【解决方案1】:

我的建议是您要打印的数据,通过 webview 加载并使用 PrintManager 使用 webview 适配器打印该数据

我们有 Printmanager https://developer.android.com/reference/android/print/PrintManager 并打印数据,这个经理需要 printadapter,它将从 webview createPrintDocumentAdapter 获得

PrintManager printManager = (PrintManager)getSystemService(Context.PRINT_SERVICE);
PrintDocumentAdapter printAdapter;
if(android.os.Build.VERSION.SDK_INT >= 21){
    printAdapter = webView.createPrintDocumentAdapter(jobName);
}else{
    printAdapter = webView.createPrintDocumentAdapter();
}
PrintAttributes.Builder builder = new PrintAttributes.Builder();
builder.setMinMargins(PrintAttributes.Margins.NO_MARGINS);
builder.setMediaSize(PrintAttributes.MediaSize.ISO_A4);
File filePdf = new File(pathAndJobName);
printManager.print(filePdf.getName(), printAdapter, builder.build());

谢谢,

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    相关资源
    最近更新 更多