Caused by java.lang.NoSuchMethodException: <init> [class com.itextpdf.text.Image]
at java.lang.Class.getConstructor0(Class.java:2320)
at java.lang.Class.getDeclaredConstructor(Class.java:2166)
at com.itextpdf.text.Image.getInstance(Unknown Source:16)
at com.itextpdf.text.pdf.PdfPCell.(Unknown Source:124)
at com.itextpdf.text.pdf.PdfPTable.addCell(Unknown Source:17)
at com.itextpdf.text.pdf.ColumnText.addElement(Unknown Source:109)
at com.itextpdf.text.pdf.PdfPCell.addElement(Unknown Source:63)
at com.clystnet.wcr.wcrinternal.activitys.RaamsFormViewActivity$creatingPdf.doInBackground(Unknown Source:590)
at com.clystnet.wcr.wcrinternal.activitys.RaamsFormViewActivity$creatingPdf.doInBackground(Unknown Source:2)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
Caused by com.itextpdf.text.ExceptionConverter: <init> [class com.itextpdf.text.Image]
当我在crashlytics中设置图片时,应用在发布版本中崩溃,它也未在任何行上显示错误。请帮助我。
implementation 'com.itextpdf:itextpdf:5.5.13'
我的代码,用于从可绘制图像添加图像。
Drawable d = getResources().getDrawable(R.drawable.wcr_logo);
BitmapDrawable bitDw = ((BitmapDrawable) d);
Bitmap bmp = bitDw.getBitmap();
Image logo = null;
if (bmp != null) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
if (stream != null) {
if (stream.size() > 0) {
Log.d("zcusfs","reached here2");
logo = Image.getInstance(stream.toByteArray(),true);
Log.d("zcusfs","reached here2c");
logo.scaleAbsolute(40, 40);
logo.setBorder(Image.NO_BORDER);
}
}
}
//Image logo = Image.getInstance(HeaderFooterPageEvent.class.getResource("/ic_launcher.png"));
PdfPCell img = new PdfPCell();
img.addElement(logo);
img.setBorder(Rectangle.NO_BORDER);
答案 0 :(得分:1)
在ProGuard文件中添加以下文本
# proguard configuration for iText
-keep class org.spongycastle.** { *; }
-dontwarn org.spongycastle.**
-keep class com.itextpdf.** { *; }
-keep class javax.xml.crypto.dsig.** { *; }
-dontwarn javax.xml.crypto.dsig.**
-keep class org.apache.jcp.xml.dsig.internal.dom.** { *; }
-dontwarn org.apache.jcp.xml.dsig.internal.dom.**
-keep class javax.xml.crypto.dom.** { *; }
-dontwarn javax.xml.crypto.dom.**
-keep class org.apache.xml.security.utils.** { *; }
-dontwarn org.apache.xml.security.utils.**
-keep class javax.xml.crypto.XMLStructure
-dontwarn javax.xml.crypto.XMLStructure
答案 1 :(得分:-2)
在我的情况下,这是由于我用“ minifyEnabled true”启用了Progaurd。只需将其更改为“ minifyEnabled false”并删除“ shrinkResources true”即可。
在build.gradle(应用级别)
中buildTypes {
release {
minifyEnabled false
debuggable false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}