读取金蝶图片

package com.fr.function;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.Arrays;
import java.util.zip.DataFormatException;
import java.util.zip.Inflater;
import com.fr.data.core.db.*;
import com.fr.script.AbstractFunction;
import com.fr.stable.ArrayUtils;
import com.fr.stable.Primitive;
import javax.swing.JEditorPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.EditorKit;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class getK3ZipRTF extends AbstractFunction{
        private static final long serialVersionUID = 1L;
        @Override
        public Object run(Object[] args) {
                // TODO Auto-generated method stub
                if(ArrayUtils.getLength(args)!=1) {
                        return Primitive.ERROR_VALUE;
                }                
                return getK3Rtf2Html((BinaryObject)args[0]);
        }
        /***
         * 
         * @param data 从数据库取得的IMAGE类型数据
         * @return 解压后的字节数组
         */
        private static byte[] decompress(BinaryObject data) {
                        byte[] bt=data.getBytes();
                        Inflater decompresser=new Inflater(); //压缩对象
                        decompresser.reset(); //清空对象数据
                        decompresser.setInput(bt);//入入待解压二进制数
                        int len=-1;
                                byte[] buf=new byte[1024];
                                try {
                                        len=decompresser.inflate(buf); //解压后的数据写入字节数组,并获得数据长度
                                } catch (DataFormatException e) {
                                        e.printStackTrace();
                                }
                                decompresser.end();                //结束解压
                                return Arrays.copyOf(buf,len); 
                }
        private static String getK3Rtf2Html(BinaryObject ins)
                {
                        String insNew=null;
                        byte[] b=decompress(ins); //解压后的字节数组
                        InputStream is=new ByteArrayInputStream(b); //读入InputStream
                        try {
                                insNew= rtfToHtml(is); //将输入流转为HTML
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                        try {
                                insNew= new String(insNew.getBytes("Cp1252"), "GB2312"); //编码转换为GB2312
                                insNew=convertText(insNew);        //提取元素标签并进行转换                                
                        } catch (UnsupportedEncodingException e) {
                                e.printStackTrace();
                        }
                        try {
                                is.close();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        return insNew;                
                }
        /***
         * 
         * @param in输入流
         * @return 输出String格式的HTML
         * @throws IOException
         */
        private static String rtfToHtml(InputStream in) throws IOException {
            JEditorPane p = new JEditorPane();
            p.setContentType("text/rtf");
           
            EditorKit kitRtf = p.getEditorKitForContentType("text/rtf");
            try {
                    kitRtf.read(in, p.getDocument(), 0); //inputstream转成文档
                kitRtf = null;        
                EditorKit kitHtml = p.getEditorKitForContentType("text/html");                 
                Writer writer = new StringWriter();
                kitHtml.write(writer, p.getDocument(), 0, p.getDocument().getLength()); 
               
                return writer.toString();
            } catch (BadLocationException e) {
                e.printStackTrace();
            }
            return null;
        }
        /***
         * 
         * @param HTML格式的字串
         * @return 处理过的字串
         */
        private static String convertText(String text) {
                if(text!=null) {
                        Document doc=Jsoup.parse(text); 
                        Elements links=doc.getElementsByTag("span");
                        StringBuffer buffer=new StringBuffer(); 
                                for(Element link:links) {
                                        buffer.append(link.text().trim()+"<br />");
                                }
                                return buffer.toString().trim();
                }
                return null;
        }
}

  

  1. package com.fr.function;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.StringWriter;
  6. import java.io.UnsupportedEncodingException;
  7. import java.io.Writer;
  8. import java.util.Arrays;
  9. import java.util.zip.DataFormatException;
  10. import java.util.zip.Inflater;
  11. import com.fr.data.core.db.*;
  12. import com.fr.script.AbstractFunction;
  13. import com.fr.stable.ArrayUtils;
  14. import com.fr.stable.Primitive;
  15. import javax.swing.JEditorPane;
  16. import javax.swing.text.BadLocationException;
  17. import javax.swing.text.EditorKit;
  18. import org.jsoup.Jsoup;
  19. import org.jsoup.nodes.Document;
  20. import org.jsoup.nodes.Element;
  21. import org.jsoup.select.Elements;
  22. public class getK3ZipRTF extends AbstractFunction{
  23.         private static final long serialVersionUID = 1L;
  24.         @Override
  25.         public Object run(Object[] args) {
  26.                 // TODO Auto-generated method stub
  27.                 if(ArrayUtils.getLength(args)!=1) {
  28.                         return Primitive.ERROR_VALUE;
  29.                 }                
  30.                 return getK3Rtf2Html((BinaryObject)args[0]);
  31.         }
  32.         /***
  33.          * 
  34.          * @param data 从数据库取得的IMAGE类型数据
  35.          * @return 解压后的字节数组
  36.          */
  37.         private static byte[] decompress(BinaryObject data) {
  38.                         byte[] bt=data.getBytes();
  39.                         Inflater decompresser=new Inflater(); //压缩对象
  40.                         decompresser.reset(); //清空对象数据
  41.                         decompresser.setInput(bt);//入入待解压二进制数
  42.                         int len=-1;
  43.                                 byte[] buf=new byte[1024];
  44.                                 try {
  45.                                         len=decompresser.inflate(buf); //解压后的数据写入字节数组,并获得数据长度
  46.                                 } catch (DataFormatException e) {
  47.                                         e.printStackTrace();
  48.                                 }
  49.                                 decompresser.end();                //结束解压
  50.                                 return Arrays.copyOf(buf,len); 
  51.                 }
  52.         private static String getK3Rtf2Html(BinaryObject ins)
  53.                 {
  54.                         String insNew=null;
  55.                         byte[] b=decompress(ins); //解压后的字节数组
  56.                         InputStream is=new ByteArrayInputStream(b); //读入InputStream
  57.                         try {
  58.                                 insNew= rtfToHtml(is); //将输入流转为HTML
  59.                         } catch (IOException e) {
  60.                                 e.printStackTrace();
  61.                         }
  62.                         try {
  63.                                 insNew= new String(insNew.getBytes("Cp1252"), "GB2312"); //编码转换为GB2312
  64.                                 insNew=convertText(insNew);        //提取元素标签并进行转换                                
  65.                         } catch (UnsupportedEncodingException e) {
  66.                                 e.printStackTrace();
  67.                         }
  68.                         try {
  69.                                 is.close();
  70.                         } catch (IOException e) {
  71.                                 // TODO Auto-generated catch block
  72.                                 e.printStackTrace();
  73.                         }
  74.                         return insNew;                
  75.                 }
  76.         /***
  77.          * 
  78.          * @param in输入流
  79.          * @return 输出String格式的HTML
  80.          * @throws IOException
  81.          */
  82.         private static String rtfToHtml(InputStream in) throws IOException {
  83.             JEditorPane p = new JEditorPane();
  84.             p.setContentType("text/rtf");
  85.            
  86.             EditorKit kitRtf = p.getEditorKitForContentType("text/rtf");
  87.             try {
  88.                     kitRtf.read(in, p.getDocument(), 0); //inputstream转成文档
  89.                 kitRtf = null;        
  90.                 EditorKit kitHtml = p.getEditorKitForContentType("text/html");                 
  91.                 Writer writer = new StringWriter();
  92.                 kitHtml.write(writer, p.getDocument(), 0, p.getDocument().getLength()); 
  93.                
  94.                 return writer.toString();
  95.             } catch (BadLocationException e) {
  96.                 e.printStackTrace();
  97.             }
  98.             return null;
  99.         }
  100.         /***
  101.          * 
  102.          * @param HTML格式的字串
  103.          * @return 处理过的字串
  104.          */
  105.         private static String convertText(String text) {
  106.                 if(text!=null) {
  107.                         Document doc=Jsoup.parse(text); 
  108.                         Elements links=doc.getElementsByTag("span");
  109.                         StringBuffer buffer=new StringBuffer(); 
  110.                                 for(Element link:links) {
  111.                                         buffer.append(link.text().trim()+"<br />");
  112.                                 }
  113.                                 return buffer.toString().trim();
  114.                 }
  115.                 return null;
  116.         }
  117. }
原文地址:https://www.cnblogs.com/liangyuwen/p/13130125.html