作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当用户点击 UI 中的按钮时,PrintManager 生成要打印的文档。然后用户单击打印图标以推送打印命令。
以上部分完成。但要求是:我想消除用户必须单击打印图标(图片中显示的打印图标,由 PrintDocumentAdapter 生成)并自动生成/打印文档。
再次:我已经实现了打印功能,我只想删除用户交互。当生成下图时,打印命令会自动执行,无需用户点击打印图标。
最佳答案
不要使用 PrintManager,您可以使用 android.print 包中的类 PdfPrint.java 进行打印。
将这段代码放在 java/android/print 中(在你的包之外)
package android.print;
import android.os.CancellationSignal;
import android.os.ParcelFileDescriptor;
import android.util.Log;
import java.io.File;
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(final 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;
}
}
你可以使用这样的代码(从 webview 打印)
private fun createWebPrintJob(webView: WebView, date: Long) {
try {
val jobName = getString(R.string.app_name) + " Document"
val attributes = PrintAttributes.Builder()
.setMediaSize(PrintAttributes.MediaSize.NA_LEGAL)
.setResolution(PrintAttributes.Resolution("pdf", "pdf", 600, 600))
.setMinMargins(PrintAttributes.Margins.NO_MARGINS).build()
val path =
Environment.getExternalStoragePublicDirectory("/pdf_output")
val pdfPrint = PdfPrint(attributes)
pdfPrint.print(
webView.createPrintDocumentAdapter(jobName),
path,
"output_$date.pdf"
)
Log.i("pdf", "pdf created")
} catch (e: Exception) {
Log.e("pdf", " pdf failed e.localizedMessage")
}
}
关于android - 我想在没有用户交互的情况下自动打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48578728/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!