gpt4 book ai didi

java - Android将webview转换为PDF

转载 作者:行者123 更新时间:2023-12-04 13:02:54 28 4
gpt4 key购买 nike

我正在尝试将 Android 中的 webview 转换为 pdf 文件。这是我的按钮是 onClick 时的功能:

public void export(WebView wv) {
Context context = getApplication();
String jobName = context.getString(R.string.app_name) + " Document";
PrintAttributes attributes = new PrintAttributes.Builder()
.setMediaSize(PrintAttributes.MediaSize.ISO_A4)
.setResolution(new PrintAttributes.Resolution("pdf", "pdf", 600, 600))
.setMinMargins(PrintAttributes.Margins.NO_MARGINS).build();
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM + "/PDFTest/");
PdfPrint pdfPrint = new PdfPrint(attributes);
pdfPrint.print(wv.createPrintDocumentAdapter(jobName), path, "output_" + System.currentTimeMillis() + ".pdf");
}

和 PdfPrint 类:
public class PdfPrint {

private static final String TAG = PdfPrint.class.getSimpleName();
private final PrintAttributes printAttributes;

public PdfPrint(PrintAttributes printAttributes) {
this.printAttributes = printAttributes;
}

public void print(PrintDocumentAdapter printAdapter, final File path, final String fileName) {
printAdapter.onLayout(null, printAttributes, null, new PrintDocumentAdapter.LayoutResultCallback() {
@Override
public void onLayoutFinished(PrintDocumentInfo info, boolean changed) {
printAdapter.onWrite(new PageRange[]{PageRange.ALL_PAGES}, getOutputFile(path, fileName), new CancellationSignal(), new PrintDocumentAdapter.WriteResultCallback() {
@Override
public void onWriteFinished(PageRange[] pages) {
super.onWriteFinished(pages);
}
});
}
}, null);
}

private ParcelFileDescriptor getOutputFile(File path, String fileName) {
if (!path.exists()) {
path.mkdirs();
}
File file = new File(path, fileName);
try {
file.createNewFile();
return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_WRITE);
} catch (Exception e) {
Log.e(TAG, "Failed to open ParcelFileDescriptor", e);
}
return null;
}
}

但是,我在 PrintDocumentAdapter.WriteResultCallback() 处收到编译错误消息

错误信息是

WriteResultCallback is not public in android.print.PrintDocumentAdapter.WriteResultCallback. Cannot be accessed from outside package.



问题是我无法找到 android.print 包。有任何想法吗?谢谢!

最佳答案

您可以尝试在您的src 中创建一个包。文件夹名称:android.print .然后用你的“打印”方法在那里创建一个文件。

或者 ,

有这个库ConvertWebViewToPdfDemo效果很好。

使用示例:

        File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM + "/PDFTest/");
final String fileName="Test.pdf";

final ProgressDialog progressDialog=new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Please wait");
progressDialog.show();
PdfView.createWebPrintJob(MainActivity.this, webView, directory, fileName, new PdfView.Callback() {

@Override
public void success(String path) {
progressDialog.dismiss();
PdfView.openPdfFile(MainActivity.this,getString(R.string.app_name),"Do you want to open the pdf file?"+fileName,path);
}

@Override
public void failure() {
progressDialog.dismiss();

}
});

关于java - Android将webview转换为PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51128205/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com