跳到内容
  • 福昕首页
  • 开发中心
  • SDK文档资料
  • 福昕首页
  • 开发中心
  • SDK文档资料
申请试用
  • 企业自动化
    • Compressor
  • 福昕CloudAPI
  • 福昕PDF SDK 软件开发工具包
    • 福昕PDF SDK(ActiveX)
    • 福昕PDF SDK(桌面/服务器)
    • 福昕PDF SDK(Plug-in)
    • 福昕 PDF SDK(安卓)
    • 福昕PDF SDK(iOS)
    • 福昕PDF SDK(Web)
  • 福昕管理控制台
    • 公有云
    • 私有云
    • 通用情况
  • 福昕阅读器
    • RMS插件
  • 福昕高级编辑器
    • AI助手
    • Mac版本
      • 常规问题
    • windows版本
      • ECM集成
      • 互联PDF
      • 企业管理指南
      • 保护
      • 内容编辑
      • 创建PDF
      • 压缩
      • 图章
      • 安装与卸载
      • 常见问题
      • 打印
      • 注释/评论
      • 福昕插件
      • 翻译助手
      • 翻译助手教程
      • 试用与激活
      • 转换
      • 页面管理
    • 教育用户
      • 论文查重
      • 论文畅
    • 网页版
      • 电子签章
    • 订阅
    • 资源
  • 福昕高级编辑器Linux版本
  • 福船图纸管理系统
  • 福昕PDF SDK 软件开发工具包 > 福昕 PDF SDK(安卓)
  • 标签:

动态设置工具栏

  • 福昕知识库
  • 2024-08-26

Foxit PDF for Android保存getCenterItems()获取到的数据格式,通过setCenterItems恢复设置。

  • 支持通过读取json来设置
  • 持久化保存工具栏配置
  • 恢复工具栏配置
package com.foxit.pdfreader.fragment;

import static com.foxit.uiextensions.utils.AppUtil.getApplicationContext;

import android.content.Context;
import android.content.res.AssetManager;
import android.util.Log;

import com.foxit.uiextensions.UIExtensionsManager;
import com.foxit.uiextensions.controls.toolbar.ToolItemBean;
import com.foxit.uiextensions.controls.toolbar.ToolProperty;
import com.foxit.uiextensions.pdfreader.MainCenterItemBean;
import com.foxit.uiextensions.utils.AppSharedPreferences;
import com.foxit.uiextensions.utils.AppUtil;

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

public class CenterItemsManager {

    public static final String SP_NAME = "Foxit_Plugin_SP";
    public static final String TAB_ITEMS_KEY = "KEY_TAB_ITEMS";


    /**
     * 读取assets目录下的json文件
     *
     * @param fileName json文件Name
     * @param context  系统上下文
     * @return json字符串
     */
    public static String getJson(String fileName, Context context) {
        //将json数据变成字符串
        StringBuilder stringBuilder = new StringBuilder();
        try {
            //获取assets资源管理器
            AssetManager assetManager = context.getAssets();
            //通过管理器打开文件并读取
            BufferedReader bf = new BufferedReader(new InputStreamReader(
                    assetManager.open(fileName)));
            String line;
            while ((line = bf.readLine()) != null) {
                stringBuilder.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return stringBuilder.toString();
    }

    /**
     * 保存TabItems
     *
     * @param items getMainFrame().getCenterItems() 配置
     */
    public static void saveTabItems(List<MainCenterItemBean> items) {
        try {
            JSONObject rootObj = new JSONObject();
            JSONArray centerItemsObj = new JSONArray();
            rootObj.put("centerItems", centerItemsObj);

            for (MainCenterItemBean centerItem : items) {
                JSONObject centerObj = new JSONObject();
                centerObj.put("type", centerItem.type);
                centerObj.put("position", centerItem.position);

                if (centerItem.toolItems != null) {
                    JSONArray toolItemsObj = new JSONArray();
                    centerObj.put("toolItems", toolItemsObj);
                    for (ToolItemBean toolItem : centerItem.toolItems) {
                        JSONObject toolObj = new JSONObject();
                        toolObj.put("itemStyle", toolItem.itemStyle);
                        toolObj.put("type", toolItem.type);
                        {
                            ToolProperty property = toolItem.property;
                            JSONObject propObj = new JSONObject();

                            if (property != null) {
                                setToolPropObjVal(propObj, property);
                            }
                            toolObj.put("property", propObj);
                        }
                        toolItemsObj.put(toolObj);
                    }
                }
                centerItemsObj.put(centerObj);
            }
            Log.d("ddd", rootObj.toString());
            AppSharedPreferences.getInstance(getApplicationContext()).setString(SP_NAME, TAB_ITEMS_KEY, rootObj.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 恢复设置好的tabItems
     *
     * @param mUiExtensionsManager UiExtensionsManager
     */
    public static void restoreItems(UIExtensionsManager mUiExtensionsManager, String tabItems) {
        if (!AppUtil.isEmpty(tabItems)) {
            try {
                JSONObject rootObj = new JSONObject(tabItems);
                JSONArray centerItemsObj = rootObj.getJSONArray("centerItems");

                ArrayList<MainCenterItemBean> items = new ArrayList<>();
                for (int i = 0; i < centerItemsObj.length(); i++) {
                    JSONObject centerObj = centerItemsObj.getJSONObject(i);

                    MainCenterItemBean centerItem = new MainCenterItemBean();
                    centerItem.type = centerObj.getInt("type");
                    centerItem.position = centerObj.getInt("position");
                    if (!centerObj.has("toolItems")) {
                        items.add(centerItem);
                        continue;
                    }

                    centerItem.toolItems = new ArrayList<>();
                    JSONArray toolItemsObj = centerObj.getJSONArray("toolItems");
                    for (int toolIndex = 0; toolIndex < toolItemsObj.length(); toolIndex++) {
                        JSONObject toolObj = toolItemsObj.getJSONObject(toolIndex);

                        ToolItemBean toolItem = new ToolItemBean();
                        toolItem.itemStyle = toolObj.getInt("itemStyle");
                        toolItem.type = toolObj.getInt("type");
                        toolItem.property = new ToolProperty();
                        {
                            ToolProperty property = toolItem.property;
                            JSONObject propObj = toolObj.getJSONObject("property");

                            if (!setToolPropVal(property, propObj)) {
                                toolItem.property = null;
                            }
                        }
                        centerItem.toolItems.add(toolItem);
                    }
                    items.add(centerItem);
                }
                mUiExtensionsManager.getMainFrame().setCenterItems(items);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }


    /**
     * 设置工具属性值
     *
     * @param property 工具属性
     * @param propObj  JSON对象
     * @return 是否设置了属性
     */
    static boolean setToolPropVal(ToolProperty property, JSONObject propObj) {
        try {
            boolean haveProp = false;
            if (propObj.has("type")) {
                property.type = propObj.getInt("type");
                haveProp = true;
            }
            if (propObj.has("color")) {
                property.color = propObj.getInt("color");
                haveProp = true;
            }
            if (propObj.has("fillColor")) {
                property.fillColor = propObj.getInt("fillColor");
                haveProp = true;
            }
            if (propObj.has("opacity")) {
                property.opacity = propObj.getInt("opacity");
                haveProp = true;
            }
            if (propObj.has("style")) {
                property.style = propObj.getInt("style");
                haveProp = true;
            }
            if (propObj.has("rotation")) {
                property.rotation = propObj.getInt("rotation");
                haveProp = true;
            }
            if (propObj.has("lineWidth")) {
                property.lineWidth = (float) propObj.getDouble("lineWidth");
                haveProp = true;
            }
            if (propObj.has("fontSize")) {
                property.fontSize = (float) propObj.getDouble("fontSize");
                haveProp = true;
            }
            if (propObj.has("fontName")) {
                property.fontName = propObj.getString("fontName");
                haveProp = true;
            }
            if (propObj.has("scaleFromUnitIndex")) {
                property.scaleFromUnitIndex = propObj.getInt("scaleFromUnitIndex");
                haveProp = true;
            }
            if (propObj.has("scaleToUnitIndex")) {
                property.scaleToUnitIndex = propObj.getInt("scaleToUnitIndex");
                haveProp = true;
            }
            if (propObj.has("scaleFromValue")) {
                property.scaleFromValue = BigDecimal.valueOf(propObj.getDouble("scaleFromValue")).floatValue();
                haveProp = true;
            }
            if (propObj.has("scaleToValue")) {
                property.scaleToValue = BigDecimal.valueOf(propObj.getDouble("scaleToValue")).floatValue();
                haveProp = true;
            }
            if (propObj.has("eraserShape")) {
                property.eraserShape = propObj.getInt("eraserShape");
                haveProp = true;
            }
            if (propObj.has("tag")) {
                property.mTag = propObj.get("tag");
                haveProp = true;
            }
            return haveProp;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 设置工具属性对象值
     *
     * @param propObj  工具属性对象
     * @param property 工具属性
     */
    static void setToolPropObjVal(JSONObject propObj, ToolProperty property) {
        try {
            propObj.put("type", property.type);
            propObj.put("color", property.color);
            propObj.put("fillColor", property.fillColor);
            propObj.put("opacity", property.opacity);
            propObj.put("style", property.style);
            propObj.put("rotation", property.rotation);
            propObj.put("lineWidth", property.lineWidth);
            propObj.put("fontSize", property.fontSize);
            propObj.put("fontName", property.fontName);
            propObj.put("scaleFromUnitIndex", property.scaleFromUnitIndex);
            propObj.put("scaleToUnitIndex", property.scaleToUnitIndex);
            propObj.put("scaleFromValue", property.scaleFromValue);
            propObj.put("scaleToValue", property.scaleToValue);
            propObj.put("eraserShape", property.eraserShape);
            if (property.mTag != null)
                propObj.put("tag", property.mTag);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

相关内容

PDF打印时,如何在每张纸上放置多页?

扫描件如何转为可编辑的Word?

如何批量OCR文档?

PDF文档中如何添加下划线?

如何在PDF中添加超链接?

如何使用PDF把彩色图片转为灰度图?

安装报“无法安装Foxit PDF Editor Printer Driver 内核模式打印驱动程序……”

outlook邮件使用福昕转换的pdf打开提示为文件包

如何关闭受保护视图

使用OCR文本识别提示下载对应语言识别插件

推荐内容

PDF打印时,如何在每张纸上放置多页?

扫描件如何转为可编辑的Word?

如何批量OCR文档?

PDF文档中如何添加下划线?

如何在PDF中添加超链接?

如何使用PDF把彩色图片转为灰度图?

安装报“无法安装Foxit PDF Editor Printer Driver 内核模式打印驱动程序……”

outlook邮件使用福昕转换的pdf打开提示为文件包

如何关闭受保护视图

使用OCR文本识别提示下载对应语言识别插件

产品
  • 应用行业
  • 白皮书
开发支持
  • 开发中心
  • SDK文档资料

销售咨询:010-50951668

客服电话:0591-38509808

销售咨询
微信公众号

©2025 福建福昕软件开发股份有限公司 版权所有

隐私策略