将 PDF 传递到打印机应用程序时,灰色字母被黑点包围

When passing PDF to printer app, grey letters are surrounded with black dots

我的应用程序创建 PDF 格式的可打印工作表。我在打印工作表时发现了一个小问题。这些工作表在我的 phone.

上看起来很完美

但是,当使用PrintDocumentAdapter()将PDF发送到打印机驱动应用程序时,等待打印的结果图像的字母被随机黑点包围,如图所示:

我该如何解决这个问题?或者这是无法避免的打印功能的继承限制?

显然问题是我使用 PrintedPdfDocument.writeTo(FileOutputStream()) 来完成打印工作,这可能有缺陷并导致了上述工件。

我尝试了另一种方法来按照此处所述进行打印: 使用此方法不再有问题!

这是我的最终代码:

    @Override
    public void onWrite(PageRange[] pageRanges, ParcelFileDescriptor ParcelFileDescriptor, CancellationSignal cancellationSignal, WriteResultCallback writeResultCallback) {
        InputStream inputStream = null;
        OutputStream outputStream = null;
        try {
            inputStream = getContentResolver().openInputStream(pdfUri);
            outputStream = new FileOutputStream(ParcelFileDescriptor.getFileDescriptor());
            byte[] buff = new byte[16384];
            int size;
            while ((size = inputStream.read(buff)) >= 0
                    && !cancellationSignal.isCanceled()) {
                outputStream.write(buff, 0, size);
            }
            if (cancellationSignal.isCanceled()) {
                writeResultCallback.onWriteCancelled();
            } else {
                writeResultCallback.onWriteFinished(new PageRange[]{PageRange.ALL_PAGES});
            }
        } catch (Exception e) {
            writeResultCallback.onWriteFailed(e.getMessage());
        } finally {
            try {
                inputStream.close();
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }