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

📄 pdftool.java

📁 Java生成PDF Java生成PDF Java生成PDF
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                    t.add(new Integer(getPage(s1, num)-1));                } else {                    int start = getPage(s1.substring(0, k), num);                    int end = getPage(s1.substring(k+1), num);                    if (start<end) {                        for(int i=start;i<=end;i++) t.add(new Integer(i-1));                    } else {                        for(int i=end;i>=start;i--) t.add(new Integer(i-1));                    }                }            }            out = new int[t.size()];            for (int i=0;i<out.length;i++) {                out[i] = ((Integer)t.get(i)).intValue();            }        }        return out;    }    private static int getPage(String val, int num) {        if (val.equals("end")) {            return num;        } else {            try {                int i = Integer.parseInt(val);                if (i<1 || i>num) {                    throw new IllegalArgumentException("Page "+i+" outside range 1-"+num);                }                return i;            } catch (NumberFormatException e) {                throw new IllegalArgumentException("Invalid page '"+val+"'");            }        }    }    private static PDF form(ListIterator i, PDF pdf) throws IOException, SAXException {        Map fields = new HashMap();        boolean flatten = false;        String xfa = null, fdf = null;        while (i.hasNext()) {            String opt = (String)i.next();            if (opt.startsWith("--properties=")) {                String filename = getValue(opt);                Properties p = new Properties();                p.load(new FileInputStream(filename));                for (Enumeration e = p.propertyNames();e.hasMoreElements();) {                    String key = (String)e.nextElement();                    String value = p.getProperty(key);                    fields.put(key, value);                }            } else if (opt.startsWith("--fdf=")) {                fdf = getValue(opt);            } else if (opt.startsWith("--xfa=")) {                String filename = getValue(opt);                Reader in = new InputStreamReader(new FileInputStream(filename), "UTF-8");                StringWriter w = new StringWriter();                int c;                while ((c=in.read())>=0) w.write(c);                xfa = w.toString();            } else if (opt.startsWith("--field=")) {                String val = getValue(opt);                int x = val.indexOf('=');                if (x<0) {                    throw new IllegalArgumentException("\""+opt+"\" is invalid");                } else {                    fields.put(val.substring(0, x), val.substring(x+1));                }            } else if (opt.equals("--flatten") || opt.equals("--flatten=true")) {                flatten = true;            } else if (opt.equals("--flatten=false")) {                flatten = false;            } else if (opt.startsWith("--")) {                i.previous();                break;            } else {                pdf = load(opt);            }        }        if (pdf!=null) {            Form form = pdf.getForm();            if (xfa!=null) {                form.setXFADatasets(xfa);            } else if (fdf!=null) {                FDF fdfobject = new FDF(new FileInputStream(fdf));                pdf.importFDF(fdfobject);            } else {                for (Iterator j = fields.entrySet().iterator();j.hasNext();) {                    Map.Entry e = (Map.Entry)j.next();                    String key = (String)e.getKey();                    String val = (String)e.getValue();                    FormElement elt = (FormElement)form.getElement(key);                    if (elt==null) {                        System.err.println("Unknown field: \""+key+"\"");                    } else if (elt instanceof FormText) {                        ((FormText)elt).setValue(val);                    } else if (elt instanceof FormRadioButton) {                        ((FormRadioButton)elt).setValue(val);                    } else if (elt instanceof FormCheckbox) {                        ((FormCheckbox)elt).setValue(val);                    } else if (elt instanceof FormChoice) {                        ((FormChoice)elt).setValue(val);                    } else {                        System.err.println("Unable to set "+elt.getClass()+" element");                    }                }                fields.clear();            }            if (flatten) form.flatten();        }        return pdf;    }    private static PDF sign(ListIterator i, PDF pdf) throws IOException, GeneralSecurityException {        String keypassword=null, password=null, reason=null, location=null, alias=null, keystorefile=null, field=null, name=null, keystoretype="JKS";        int left=0, top=0, right=0, bottom=0, page=0;        while (i.hasNext()) {            String opt = (String)i.next();            if (opt.startsWith("--keypassword=")) {                keypassword = getValue(opt);            } else if (opt.startsWith("--password=")) {                password = getValue(opt);            } else if (opt.startsWith("--reason=")) {                reason = getValue(opt);            } else if (opt.startsWith("--location=")) {                location = getValue(opt);            } else if (opt.startsWith("--alias=")) {                alias = getValue(opt);            } else if (opt.startsWith("--name=")) {                name = getValue(opt);            } else if (opt.startsWith("--keystore=")) {                keystorefile = getValue(opt);            } else if (opt.startsWith("--keystoretype=")) {                keystoretype = getValue(opt);            } else if (opt.startsWith("--field=")) {                field = getValue(opt);            } else if (opt.startsWith("--left=")) {                left = Integer.parseInt(getValue(opt));            } else if (opt.startsWith("--top=")) {                top = Integer.parseInt(getValue(opt));            } else if (opt.startsWith("--right=")) {                right = Integer.parseInt(getValue(opt));            } else if (opt.startsWith("--bottom=")) {                bottom = Integer.parseInt(getValue(opt));            } else if (opt.startsWith("--page=")) {                page = Integer.parseInt(getValue(opt)) - 1;            } else if (opt.startsWith("--")) {                i.previous();                break;            } else {                pdf = load(opt);            }        }        if (pdf!=null) {            Form form = pdf.getForm();            FormSignature sig = null;            if (field!=null) sig = (FormSignature)form.getElement(field);            if (sig==null) {                if (field==null) field = "Signature";                sig = new FormSignature();                if (left!=right && top!=bottom) {                    sig.addAnnotation(pdf.getPage(page), left, top, right, bottom);                }                pdf.getForm().addElement(field, sig);            }            if (keypassword==null) keypassword=password;            KeyStore keystore = KeyStore.getInstance(keystoretype);            keystore.load(new FileInputStream(keystorefile), password.toCharArray());            sig.sign(keystore, alias, keypassword.toCharArray(), FormSignature.HANDLER_ACROBATSIX);            sig.setReason(reason);            sig.setLocation(location);            if (name==null) {                PKCS7SignatureHandler pkcs7 =  (PKCS7SignatureHandler)sig.getSignatureHandler();                name = FormSignature.getSubjectField(pkcs7.getCertificates()[0], "CN");            }            sig.setName(name);        }        return pdf;    }    private static void toimage(ListIterator i, PDF pdf, OutputStream out) throws IOException {        java.awt.image.ColorModel cm = PDFParser.getBlackAndWhiteColorModel(128);        int dpi = 200;        String pages = null;        String format = "tiff";        while (i.hasNext()) {            String opt = (String)i.next();            if (opt.startsWith("--dpi=")) {                dpi = Integer.parseInt(getValue(opt));                if (dpi<=0 || dpi>600) throw new IllegalArgumentException("DPI must be betweeen 1 and 600");            } else if (opt.equals("--model=bw")) {                cm = PDFParser.getBlackAndWhiteColorModel(128);            } else if (opt.startsWith("--model=bw")) {                try {                    int threshold=Integer.parseInt(opt.substring(10));                    cm = PDFParser.getBlackAndWhiteColorModel(threshold);                } catch (NumberFormatException e) {                    throw new IllegalArgumentException("Black and white threshold \""+opt.substring(10)+"\" not between 1 and 255");                }            } else if (opt.equals("--model=rgb")) {                cm = PDFParser.RGB;            } else if (opt.equals("--model=rgba")) {                cm = PDFParser.RGBA;            } else if (opt.equals("--model=cmyk")) {                cm = PDFParser.CMYK;            } else if (opt.equals("--model=gray")) {                cm = PDFParser.GRAYSCALE;            } else if (opt.equals("--format=tiff")) {                format="tiff";

⌨️ 快捷键说明

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