상세 컨텐츠

본문 제목

[java] 자바 RTF파일을 받아 출력시 데이터를 고쳐주어야 할 것

JAVA

by AlrepondTech 2010. 12. 7. 17:25

본문

반응형

 

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

 

 

//데이터를 스트링으로 받아 처리해준다.

public String GetRtfFixSymbol(String st)
    {
        String str = st;
        String fix = "\\'";

        int fSiz = 0;
        int cnt = 0;
        String tmp = "";
        String sumStr = "";
       
        while(str!=null && str.length() > 0 && str.indexOf(fix)>=0)
        {
            fSiz = str.indexOf(fix);
            tmp = tmp +"0x"+ str.substring(fSiz+2, fSiz+4);
           
            if(cnt >= 1)
            {
                tmp = hexToString(tmp);
                String Incoding;
               
                try
                {
                    Incoding = new String(tmp.getBytes("8859_1"));   
                }catch(Exception e){return str;}
               
                sumStr = sumStr + "\\0"+Incoding; //문자옵션이 제대로 자바에서 읽기위해 \0로 끈어준다.(중요)
                tmp = "";
                cnt = 0;
            }
            else
            {
                sumStr = sumStr + GetRtfFixPass(str.substring(0, fSiz));
                cnt++;
            }
           
            str = str.substring(fSiz+4);
        }
       
        if(str.length() >0)
        {
            sumStr = sumStr + str;
        }
       
       
        return sumStr;
    }



 
   //자바가 RTF를 해석할수 있게 한칸씩 띄어주는 역확
    public String GetRtfFixPass(String st)
    {
        String str = st;
        String fix = " ";

        int fSiz = 0;
        String tmp = "";
        String sumStr = "";
       
        while(str.indexOf(fix)>=0)
        {
            fSiz = str.indexOf(fix);
            tmp = str.substring(fSiz, fSiz+1);
       
            sumStr = sumStr + str.substring(0, fSiz) + " " + "\\0";
            str = str.substring(fSiz+1);
        }
       
        if(str.length() >0)
        {
            sumStr = sumStr + str;
        }
       
       
       
        return sumStr;
    }



      // 자바에서 RTF의 HEX 데이터 처리
      public String hexToString(String hexString) {
            Pattern p = Pattern.compile("(0x([a-fA-F0-9]{2}([a-fA-F0-9]{2})?))");
            Matcher m = p.matcher(hexString);

            StringBuffer buf = new StringBuffer();
            int hashCode = 0;
            while( m.find() ) {
                hashCode = Integer.decode("0x" + m.group(2));
                m.appendReplacement( buf, new String( Character.toChars( hashCode ) ) );
            }

            m.appendTail(buf);

            return buf.toString();
        }

 

 

 

=================================

=================================

=================================

 

 

 

반응형


관련글 더보기

댓글 영역