Knowledge Base - Print of encrypted documents

To support the print of encrypted documents, you have to decrypt it first.

To do so, you need to change PDFViewController.printPDF as follows:

public void onWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal,
WriteResultCallback callback) {
InputStream input;
OutputStream output;
try {
String mDocPath = m_view.PDFGetDoc().getDocPath();
if(!TextUtils.isEmpty(mDocPath)) {
if(m_view.PDFGetDoc().IsEncrypted() && m_view.PDFGetDoc().SaveAs(m_parent.getContext().getFilesDir() +
File.separator + "temp.pdf",true))
mDocPath = m_parent.getContext().getFilesDir() + File.separator + "temp.pdf";

input = new FileInputStream(mDocPath);
output = new FileOutputStream(destination.getFileDescriptor());
byte[] buf = new byte[1024];
int bytesRead;

// check for cancellation
if (cancellationSignal.isCanceled()) {
callback.onWriteCancelled();
input.close();
output.close();
return;
}

while ((bytesRead = input.read(buf)) > 0) {
output.write(buf, 0, bytesRead);
}
callback.onWriteFinished(new PageRange[]{PageRange.ALL_PAGES});

input.close();
output.close();
} else
callback.onWriteFailed(m_parent.getContext().getString(R.string.pdf_print_not_available));
} catch (Exception e) {
e.printStackTrace();
callback.onWriteFailed(e.toString());
}
}

And add the onFinish callback:

@Override
public void onFinish() {
     super.onFinish();
    if(m_view.PDFGetDoc().IsEncrypted())
        new File(m_parent.getContext().getFilesDir() + File.separator + "temp.pdf").delete();
}
Applies To

RadaeePDF SDK for Android

Details

Created : 2017-02-17 15:09:43, Last Modified : 2017-02-17 15:18:38