I'm using standard print service to save WebView content as pdf or to print. But from the latest update of Android System WebView on Playstore (version: 86.0.4240.75).
With older version of the WebView, it's working fine.
public class MainActivity extends AppCompatActivity {
private static final String
TAG = "MainActivity";
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main);
// Initialize member variables
mWebView = findViewById(R.id.
web_view);
Button pdf = findViewById(R.id.
pdf);
WebView.
setWebContentsDebuggingEnabled(true);
mWebView.getSettings().setLoadWithOverviewMode(true);
// mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setDisplayZoomControls(false);
mWebView.setInitialScale(150);
pdf.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createPDF();
}
});
loadWebView();
}
private void loadWebView() {
mWebView.loadUrl("
http://www.google.com");
}
private void createPDF() {
// Get a PrintManager instance
PrintManager printManager = (PrintManager) getSystemService(Context.
PRINT_SERVICE);
String jobName = "Document";
// Get a print adapter instance
PrintDocumentAdapter printAdapter;
if (android.os.Build.VERSION.
SDK_INT >= Build.VERSION_CODES.
LOLLIPOP) {
printAdapter = mWebView.createPrintDocumentAdapter(jobName);
} else {
printAdapter = mWebView.createPrintDocumentAdapter();
}
// Create a print job with name and adapter instance
PrintAttributes.Builder builder = new PrintAttributes.Builder();
builder.setMediaSize(PrintAttributes.MediaSize.
ISO_A4);
printManager.print(jobName, printAdapter, builder.build());
}
Thank you.