2011-08-05 4 views
2
내가 문자열 [BreakPage]에 의해 2 광석 이상의 부분에서 (C# 또는 VB.Net 포함) RTF 파일을 분할 할

을 분할하는 방법에 대해 설명합니다.나는 RTF 파일

{\ rtf1 \ ANSI \ ansicpg1251 \ UC1 \ deff0 \ stshfdbch0 \ stshfloch0 \ stshfhich0 \ stshfbi0 \ deflang1049 \ deflangfe1049 {: 나는 두 부분으로 분리 될 필요가 [BreakPage] 포함, exemple이 파일이 \ fonttbl {\ f0 \ froman \ fcharset204 \ fprq2 {* \ panose 02020603050405020304} Times New Roman;} {\ f38 \ froman \ fcharset0 \ fprq2 Times New Roman;} {\ f36 \ from \ fcharset238 \ fprq2 Times New Roman CE;} {\ f39 \ from \ fcharset161 \ fprq2 Times New Roman 그리스어} {\ f40 \ from \ fcharset162 \ fprq2 Times New Roman Tur;} {\ f41 \ froman \ fcharset177 \ fprq2 Times New Roman (히브리어);} {\ f42 \ froman \ fcharset178 \ fprq2 Times New Roman (아랍어);} {\ f43 \ froman \ fcharset186 \ fprq2 Times New Roman 발트 어} {\ f44 \ from \ fcharset163 \ fprq2 Times New Roman (베트남어)}} {\ colortbl; \ red0 \ green0 \ blue0; \ red0 \ green0 \ blue255; \ red0 \ green255 \ blue255; \ red0 \ green255 \ blue0; \ red255 \ green0 \ blue255; \ red255 \ green0 \ blue0; \ red255 \ green255 \ blue0; \ red255 \ green255 \ blue255; \ red0 \ green0 \ blue128; \ red0 \ green128 \ blue128; \ red0 \ green128 \ blue0; \ red128 \ green0 \ blue128; \ red128 \ green0 \ blue0; \ red128 \ green128 \ blue0; red128 green128 \ blue128 \ \ ; \ red192 \ green192 \ blue192} {\ 스타일 {\ QL \ li0 \ RI0 \ widctlpar \ aspalpha \ aspnum \ faauto \ adjustright \ rin0 \ lin0 \ itap0 \ fs24 \ lang1049 \ langfe1049 \ cgrid \ langnp1049 \ langfenp1049 \ snext0 일반;} {* \ CS10 \ 첨가제 \ ssemihidden 기본 단락 폰트} {* \ TS11 \ tsrowd \ trftsWidthB3 \ trpaddl108 \ trpaddr108 \ trpaddfl3 \ trpaddft3 \ trpaddfb3 \ trpaddfr3 \ trcbpat1 \ trcfpat1 \ tscellwidthfts0 \ tsvertalt \ tsbrdrt \ tsbrdrl \ tsbrdrb \ tsbrdrr \ tsbrdrdgl \ tsbrdrdgr \ tsbrdrh \ tsbrdrv \ QL \ li0 \ RI0 \ widctlpar \ aspalpha \ aspnum \ faauto \ adjustright \ rin0 \ lin0 \ itap0 \ FS20 \ lang1024 \ langfe1024 \ cgrid \ langnp1024 \ langfenp1024 \ snext11 \ ssemihidden 일반 표;}} {* \ latentstyles \ lsdstimax156 \ lsdlockeddef0} {* \ rsidtbl \ rsid2111663 \ rsid7154806 \ rsid15558346} {* \ generator Microsoft Word 11.0.5604;} {\ info {\ author 프로그래머} {\ operator 프로그래머} {\ creatim \ yr2011 \ mo8 \ dy2 \ hr12 \ min45} { \ revtim \ yr2011 \ mo8 \ dy5 \ hr12 \ min34} {\ version3} {\ edmins1} {\ nofpages1} {\ nofchars34} {\ nofcharsws38} {\ vern24689}} \ margl1701 \ margr850 \ margt1134 \ margb1134 \ widowctrl \ ftnbj \ aenddoc \ noxlattoyen \ expshrtn \ noultrlspc \ dntblnsbdb \ nospaceforul \ hyphcaps0 \ horzdoc \ dghspace120 \ dgvspace120 \ dghorigin1701 \ dgvorigin1984 \ dghshow0 \ dgvshow3 \ jcompress \ viewkind1 \ viewscale100 \ nolnhtadjtbl \ rsidroot15558346 \ fet0 \ sectd \ linex0 \ sectdefaultcl \ sftnbj {* \ pnseclvl1 \ pnucrm \ pnstart1 \ pnindent720 \ pnhang {\ pntxta .}} {* \ pnseclvl2 \ pnucltr \ pnstart1 \ pnindent720 \ pnha NG {\ pntxta .}} {* \ pnseclvl3 \ pndec \ pnstart1 \ pnindent720 \ pnhang {\ pntxta .}} {* \ pnseclvl4 \ pnlcltr \ pnstart1 \ pnindent720 \ pnhang {\ pntxta )}} {* \ pnseclvl5 \ pndec \ pnstart1 \ pnindent720 \ pnhang {\ pntxtb (} {\ pntxta )}} {* \ pnseclvl6 \ pnlcltr \ pnstart1 \ pnindent720 \ pnhang {\ pntxtb (} {\ pntxta)}} {* \ pnseclvl7 \ pnlcrm \ pnstart1 \ pnindent720 \ pnhang {\ pntxtb (} {\ pntxta )}} {* \ pnseclvl8 \ pnlcltr \ pnstart1 \ pnindent720 \ pnhang {\ pntxtb (} {\ pntxta)}} {* \ pnseclvl9 \ pnlcrm \ pnstart1 \ pnindent720 \ pnhang {\ pntxtb (} {\ pntxta)}} \ PARD \ 일반 \ QL \ li0 \ RI0 \ nowidctlpar \ faauto \ rin0 \ lin0 \ itap0 \ fs24 \ lang1049 \ langfe1049 \ cgrid \ langnp1049 \ langfenp1049 {\ B를 \ insrsid7154806 \ charrsid7154806 줄 1 개 \ 파} {\ insrsid7154806의 \ 파 } {\ 나 \ insrsid7154806 \ charrsid7154806,호선} {\ lang1048 \ langfe1049 \ langnp1048 \ insrsid7154806 \ 파} {\는 lang1048 \ langfe1049 \ langnp1048 \ insrsid2111663 [BreakPage] \ 호선 \ 파}} 동위 \ 파 라인 4 \ insrsid7154806 파 } {\

아무도 도와 줄 수 있습니까?

감사합니다.

답변

5

문제는 RTF에 전체 헤더에 형식 정보가 일부 있지만 필수는 아닙니다. RTF 텍스트를 분할하여 결과가 다시 유효한 RTF 형식으로 적용되도록하려면 본질적으로 헤더 정보의 위치를 ​​알고 분할을 통해 복제해야합니다.

이 일을 두 가지 방법이 있습니다 :

  1. 는 RTF 파서
  2. 쓰기 기존 RTF 파서를 사용

(1) 행할 수 있지만, 시간이 소요됩니다. 다행히 RTF 파서가 이미 존재합니다 (예 : this one on CodeProject).

또는, 당신은 또한 다음 프로그램의 RichTextBox 내부의 분할 텍스트 "[BreakPage]" 검색 제 1 및 제 2 부분을 선택하고 SelectedRtf 속성을 사용하여 RTF 텍스트를 검색하는 RichTextBox로 RTF 텍스트를로드 할 수 있습니다.