问题描述
我创建了一个动态功能模块(由资产,字体和文件组成),当用户点击onChooseFontClicked()时将下载并安装该模块。正在下载并安装动态模块,但字体未在PDF中呈现。这些字体可用于在应用程序视图内设置文本的字体,但它们不会在PDF中呈现。为什么?
有人可以帮助我解决这个问题吗? 它在DEBUG模式下运行正常。
SomeActivity.java:无法使用此代码进行渲染。 资产文件已下载并保存到资产文件夹,该文件夹再次在“应用程序视图”中呈现,但不在PDF视图(iTextPDF)中呈现。
String downloadedAssetsName = "assets/fonts/fontName.ttf";
BaseFont bFont = BaseFont.createFont(downloadedAssetsName,"UTF-8",BaseFont.EMbedDED);
Font urFontName = new Font(bFont,12);
Paragraph createdAtparagraph = new Paragraph("Some Data",urFontName);
在发布模式下,使用上述几行PDF会使用新下载字体的默认字体显示出来。但是在借记模式下,此代码可以正常工作。
**
@Override
public void onChooseFontClicked(View v) {
String fontModule = "module_font";
if (splitInstallManager.getInstalledModules().contains(fontModule)) {
AppUtils.showToast(this,"Already Installed module.");
showFontStyleFragment();
} else {
requestInstall(fontModule);
}
}
private void requestInstall(String moduleName) {
Splitinstallrequest request = Splitinstallrequest.newBuilder()
.addModule(moduleName)
.build();
splitInstallManager.startInstall(request);
}
/**
* Perform actions on callbacks of state updates for the install session.
*/
private SplitInstallStateUpdatedListener stateListener =
splitInstallSessionState -> {
if (splitInstallSessionState.status() == SplitInstallSessionStatus.Failed &&
splitInstallSessionState.sessionId() < 0) {
AppUtils.showLog(TAG,"Service process died");
return;
}
if (splitInstallSessionState.status() == SplitInstallSessionStatus.DOWNLOADING) {
long size = splitInstallSessionState.totalBytesTodownload();
long downloaded = splitInstallSessionState.bytesDownloaded();
int percentage = (int) ((downloaded * 100) / size);
// double completedPercent = Double.parseDouble(downloaded + "") * 100 / Double.parseDouble(size + "");
AppUtils.showToast(PDFPreviewActivity.this,percentage + "% Completed. Total MB: " + size / 1000000 + " Downloaded: " + downloaded / 1000000 + "MB");
AppUtils.showLog(TAG,"SplitInstallSessionStatus.DOWNLOADING: " + downloaded);
// Update progress bar.
} else if (splitInstallSessionState.status() == SplitInstallSessionStatus.CANCELED) {
AppUtils.showLog(TAG,"Installation cancelled");
} else if (splitInstallSessionState.status() == SplitInstallSessionStatus.Failed) {
Log.e(TAG,"Install Failed");
} else if (splitInstallSessionState.status() == SplitInstallSessionStatus.INSTALLED) {
AppUtils.showLog(TAG,"Split successfully installed,launching GreetActivity");
//Module is downloaded successfully
AppUtils.showToast(PDFPreviewActivity.this,"SplitInstallSessionStatus.INSTALLED: ");
SplitInstallHelper.updateAppInfo(PDFPreviewActivity.this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Update app context with the code and resources of the installed module.
SplitInstallHelper.updateAppInfo(PDFPreviewActivity.this);
}
SplitCompat.installActivity(this);
showFontStyleFragment();
}
};
@Override
protected void onResume() {
super.onResume();
splitInstallManager.registerListener(stateListener);
}
@Override
protected void onPause() {
super.onPause();
splitInstallManager.unregisterListener(stateListener);
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
SplitCompat.install(this);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)