⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xfaform.java

📁 源码包含生成 PDF 和 HTML 的类库
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    public PdfReader getReader() {        return reader;    }    /**     * Sets the <CODE>PdfReader</CODE> to be used by this instance.     * @param reader the <CODE>PdfReader</CODE> to be used by this instance     */    public void setReader(PdfReader reader) {        this.reader = reader;    }    /**     * Checks if this XFA form was changed.     * @return <CODE>true</CODE> if this XFA form was changed     */    public boolean isChanged() {        return changed;    }    /**     * Sets the changed status of this XFA instance.     * @param changed the changed status of this XFA instance     */    public void setChanged(boolean changed) {        this.changed = changed;    }        /**     * A structure to store each part of a SOM name and link it to the next part     * beginning from the lower hierarchy.     */    public static class InverseStore {        protected ArrayList part = new ArrayList();        protected ArrayList follow = new ArrayList();                /**         * Gets the full name by traversing the hierarchy using only the         * index 0.         * @return the full name         */        public String getDefaultName() {            InverseStore store = this;            while (true) {                Object obj = store.follow.get(0);                if (obj instanceof String)                    return (String)obj;                store = (InverseStore)obj;            }        }                /**         * Search the current node for a similar name. A similar name starts         * with the same name but has a different index. For example, "detail[3]"          * is similar to "detail[9]". The main use is to discard names that         * correspond to out of bounds records.         * @param name the name to search         * @return <CODE>true</CODE> if a similitude was found         */        public boolean isSimilar(String name) {            int idx = name.indexOf('[');            name = name.substring(0, idx + 1);            for (int k = 0; k < part.size(); ++k) {                if (((String)part.get(k)).startsWith(name))                    return true;            }            return false;        }    }    /**     * Another stack implementation. The main use is to facilitate     * the porting to other languages.     */    public static class Stack2 extends ArrayList {        private static final long serialVersionUID = -7451476576174095212L;		/**         * Looks at the object at the top of this stack without removing it from the stack.         * @return the object at the top of this stack         */        public Object peek() {            if (size() == 0)                throw new EmptyStackException();            return get(size() - 1);        }                /**         * Removes the object at the top of this stack and returns that object as the value of this function.         * @return the object at the top of this stack          */        public Object pop() {            if (size() == 0)                throw new EmptyStackException();            Object ret = get(size() - 1);            remove(size() - 1);            return ret;        }                /**         * Pushes an item onto the top of this stack.         * @param item the item to be pushed onto this stack         * @return the <CODE>item</CODE> argument         */        public Object push(Object item) {            add(item);            return item;        }                /**         * Tests if this stack is empty.         * @return <CODE>true</CODE> if and only if this stack contains no items; <CODE>false</CODE> otherwise         */        public boolean empty() {            return size() == 0;        }    }        /**     * A class for some basic SOM processing.     */    public static class Xml2Som {        /**         * The order the names appear in the XML, depth first.         */        protected ArrayList order;        /**         * The mapping of full names to nodes.         */        protected HashMap name2Node;        /**         * The data to do a search from the bottom hierarchy.         */        protected HashMap inverseSearch;        /**         * A stack to be used when parsing.         */        protected Stack2 stack;        /**         * A temporary store for the repetition count.         */        protected int anform;        /**         * Escapes a SOM string fragment replacing "." with "\.".         * @param s the unescaped string         * @return the escaped string         */        public static String escapeSom(String s) {            int idx = s.indexOf('.');            if (idx < 0)                return s;            StringBuffer sb = new StringBuffer();            int last = 0;            while (idx >= 0) {                sb.append(s.substring(last, idx));                sb.append('\\');                last = idx;                idx = s.indexOf('.', idx + 1);            }            sb.append(s.substring(last));            return sb.toString();        }        /**         * Unescapes a SOM string fragment replacing "\." with ".".         * @param s the escaped string         * @return the unescaped string         */        public static String unescapeSom(String s) {            int idx = s.indexOf('\\');            if (idx < 0)                return s;            StringBuffer sb = new StringBuffer();            int last = 0;            while (idx >= 0) {                sb.append(s.substring(last, idx));                last = idx + 1;                idx = s.indexOf('\\', idx + 1);            }            sb.append(s.substring(last));            return sb.toString();        }        /**         * Outputs the stack as the sequence of elements separated         * by '.'.         * @return the stack as the sequence of elements separated by '.'         */        protected String printStack() {            if (stack.empty())                return "";            StringBuffer s = new StringBuffer();            for (int k = 0; k < stack.size(); ++k)                s.append('.').append((String)stack.get(k));            return s.substring(1);        }                /**         * Gets the name with the <CODE>#subform</CODE> removed.         * @param s the long name         * @return the short name         */        public static String getShortName(String s) {            int idx = s.indexOf(".#subform[");            if (idx < 0)                return s;            int last = 0;            StringBuffer sb = new StringBuffer();            while (idx >= 0) {                sb.append(s.substring(last, idx));                idx = s.indexOf("]", idx + 10);                if (idx < 0)                    return sb.toString();                last = idx + 1;                idx = s.indexOf(".#subform[", last);            }            sb.append(s.substring(last));            return sb.toString();        }                /**         * Adds a SOM name to the search node chain.         * @param unstack the SOM name         */        public void inverseSearchAdd(String unstack) {            inverseSearchAdd(inverseSearch, stack, unstack);        }                /**         * Adds a SOM name to the search node chain.         * @param inverseSearch the start point         * @param stack the stack with the separated SOM parts         * @param unstack the full name         */        public static void inverseSearchAdd(HashMap inverseSearch, Stack2 stack, String unstack) {            String last = (String)stack.peek();            InverseStore store = (InverseStore)inverseSearch.get(last);            if (store == null) {                store = new InverseStore();                inverseSearch.put(last, store);            }            for (int k = stack.size() - 2; k >= 0; --k) {                last = (String)stack.get(k);                InverseStore store2;                int idx = store.part.indexOf(last);                if (idx < 0) {                    store.part.add(last);                    store2 = new InverseStore();                    store.follow.add(store2);                }                else                    store2 = (InverseStore)store.follow.get(idx);                store = store2;            }            store.part.add("");            store.follow.add(unstack);        }        /**         * Searches the SOM hierarchy from the bottom.         * @param parts the SOM parts         * @return the full name or <CODE>null</CODE> if not found         */        public String inverseSearchGlobal(ArrayList parts) {            if (parts.isEmpty())                return null;            InverseStore store = (InverseStore)inverseSearch.get(parts.get(parts.size() - 1));            if (store == null)                return null;            for (int k = parts.size() - 2; k >= 0; --k) {                String part = (String)parts.get(k);                int idx = store.part.indexOf(part);                if (idx < 0) {                    if (store.isSimilar(part))                        return null;                    return store.getDefaultName();                }                store = (InverseStore)store.follow.get(idx);            }            return store.getDefaultName();        }            /**         * Splits a SOM name in the individual parts.         * @param name the full SOM name         * @return the split name         */        public static Stack2 splitParts(String name) {            while (name.startsWith("."))                name = name.substring(1);            Stack2 parts = new Stack2();            int last = 0;            int pos = 0;            String part;            while (true) {                pos = last;                while (true) {                    pos = name.indexOf('.', pos);                    if (pos < 0)                        break;                    if (name.charAt(pos - 1) == '\\')                        ++pos;                    else                        break;                }                if (pos < 0)                    break;                part = name.substring(last, pos);                if (!part.endsWith("]"))                    part += "[0]";                parts.add(part);                last = pos + 1;            }            part = name.substring(last);            if (!part.endsWith("]"))                part += "[0]";            parts.add(part);            return parts;        }        /**         * Gets the order the names appear in the XML, depth first.         * @return the order the names appear in the XML, depth first         */        public ArrayList getOrder() {            return order;        }        /**         * Sets the order the names appear in the XML, depth first         * @param order the order the names appear in the XML, depth first         */        public void setOrder(ArrayList order) {            this.order = order;        }        /**         * Gets the mapping of full names to nodes.         * @return the mapping of full names to nodes         */        public HashMap getName2Node() {            return name2Node;        }        /**         * Sets the mapping of full names to nodes.         * @param name2Node the mapping of full names to nodes         */        public void setName2Node(HashMap name2Node) {            this.name2Node = name2Node;        }        /**         * Gets the data to do a search from the bottom hierarchy.         * @return the data to do a search from the bottom hierarchy         */        public HashMap getInverseSearch() {            return inverseSearch;        }        /**         * Sets the data to do a search from the bottom hierarchy.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -