android - iText7 AbstractITextEvent 仅供内部使用

标签 android itext7

我正在尝试在公共(public)文档文件夹中创建一个新的 PDF 文件。 iTex7 直接从外部库 com.afollestad.materialdialogs.MaterialDialog 创建的对话框启动。

 lateinit var writer : PdfWriter

    path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).absolutePath

 val file = File(path + "/" + filename + ".pdf")

        if (!file.parentFile.exists()) file.parentFile.mkdirs()

    writer = PdfWriter(file)

  pdf = PdfDocument(writer)

有时这会导致错误:

Fatal Exception: java.lang.UnsupportedOperationException: AbstractITextEvent is only for internal usage.
       at com.itextpdf.commons.actions.AbstractITextEvent.<init>(AbstractITextEvent.java:52)
       at com.itextpdf.commons.actions.AbstractProductITextEvent.<init>(AbstractProductITextEvent.java:41)
       at com.itextpdf.commons.actions.AbstractContextBasedITextEvent.<init>(AbstractContextBasedITextEvent.java:43)
       at com.itextpdf.commons.actions.AbstractProductProcessITextEvent.<init>(AbstractProductProcessITextEvent.java:50)
       at com.itextpdf.kernel.actions.events.ITextCoreProductEvent.<init>(ITextCoreProductEvent.java:53)
       at com.itextpdf.kernel.actions.events.ITextCoreProductEvent.createProcessPdfEvent(ITextCoreProductEvent.java:69)
       at com.itextpdf.kernel.pdf.PdfDocument.open(PdfDocument.java:1947)
       at com.itextpdf.kernel.pdf.PdfDocument.<init>(PdfDocument.java:273)
       at com.itextpdf.kernel.pdf.PdfDocument.<init>(PdfDocument.java:254)
       at com.afollestad.materialdialogs.callbacks.DialogCallbackExtKt.invokeAll(DialogCallbackExtKt.java:68)
       at com.afollestad.materialdialogs.MaterialDialog.onActionButtonClicked$core(MaterialDialog.java:406)
       at com.afollestad.materialdialogs.internal.button.DialogActionButtonLayout$onFinishInflate$1.onClick(DialogActionButtonLayout.kt:84)
       at android.view.View.performClick(View.java:6659)
       at android.view.View.performClickInternal(View.java:6631)
       at android.view.View.access$3100(View.java:790)
       at android.view.View$PerformClick.run(View.java:26187)
       at android.os.Handler.handleCallback(Handler.java:907)
       at android.os.Handler.dispatchMessage(Handler.java:105)
       at android.os.Looper.loop(Looper.java:216)
       at android.app.ActivityThread.main(ActivityThread.java:7625)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)

有什么帮助吗?对不起,我是编程初学者。

最佳答案

如果您使用的是 Proguard,则向“proguard-rules.pro”(应用程序模块)添加一行:

-keep public class com.itextpdf.**

enter image description here

关于android - iText7 AbstractITextEvent 仅供内部使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73006970/

相关文章:

java - 如何使用 iText 读取 PDF 文件作为模板

java - 拆分/合并时某些 PDF 的间接对象出现错误

java - 在 Android 中,您将如何开发它? ( Activity 和观点问题)

java - 在 if/else 命令下读取字符串值

java - Android - AutoCompleteTextView、showDropDown() 并不总是有效

java - 使用 iText 签名,Adobe Reader 报告 "Signature was created using Not available."

java - 如何在 iText 7 中获取和设置 yline?

java - iText7:如何获取段落的实际宽度

android - 在 Flutter 的登录屏幕中显示循环进度对话框,如何在 Flutter 中实现进度对话框?

android - Plus.PeopleApi.getCurrentPerson 在 Play 服务 8.4 中已弃用。如何使用 GoogleSignInApi 获取用户的名字、姓氏和性别?