Android 从WebView创建PDF会截断PDF
我一直在尝试使用PdfDocument将Android WebView转换为PDF。代码如下: WebView的初始化:Android 从WebView创建PDF会截断PDF,android,pdf,webview,android-webview,Android,Pdf,Webview,Android Webview,我一直在尝试使用PdfDocument将Android WebView转换为PDF。代码如下: WebView的初始化: WebView webView = (WebView) findViewById(R.id.invoice_web_view); WebSettings webSettings = webView.getSettings(); webSettings.setBuiltInZoomControls(true); webSettings.setLoadWithOverviewMo
WebView webView = (WebView) findViewById(R.id.invoice_web_view);
WebSettings webSettings = webView.getSettings();
webSettings.setBuiltInZoomControls(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setDefaultTextEncodingName("UTF-8");
转换为PDF格式:
private void createPdf(File file) {
try {
PdfDocument document = new PdfDocument();
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(595, 842, 1).create(); //A4 page
PdfDocument.Page page = document.startPage(pageInfo);
View content = webView;
content.draw(page.getCanvas());
document.finishPage(page);
document.writeTo(new FileOutputStream(file));
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
上面的代码给了我这个PDF。以下是PDF的截图:
现在,当我更改WebView设置并添加webSettings.setUseWideViewPort(true)时,它会给出下面的PDF以及上面的代码:
我还使用以下代码直接从Android设备打印:
public void createWebPrintJob(WebView webView, Context context) {
// Get a PrintManager instance
PrintManager printManager = (PrintManager) context
.getSystemService(Context.PRINT_SERVICE);
// Get a print adapter instance
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
// Create a print job with name and adapter instance
String jobName = context.getString(R.string.app_name) + " Document";
printManager.print(jobName, printAdapter,
new PrintAttributes.Builder().build());
}
此代码正确呈现WebView并将其发送到打印机。它给出了以下屏幕:
我有几个问题:
你试过这个吗?“@Starlord我不喜欢使用iText,因为他们需要你购买商业许可证。我相信一定有办法利用Android内置的PdfDocument生成PDF。Android在打印WebView时会这样做。我怎样才能做到这一点?@varun你找到解决这个问题的方法了吗?我也遇到了同样的问题…刚刚找到了解决方案,看看这个答案:@varun你找到这个问题的答案了吗?