2011-06-25 10 views
0

ある文書管理システムから別のシステムにデータを転送する処理中です。ワードパッドと互換性があるようにRTFをプログラムで編集する

古いシステムには、置換フィールドを挿入するためのブックマークボタンがありました。私は新しいシステムで動作するように、置換フィールドの構文を置き換える必要があります(問題はありません)。

彼らの古いシステムで印刷し、旧RTF

{\rtf1\ansi\deflang1033\ftnbj\uc1\deff1 
{\fonttbl{\f0 \froman \fcharset0 Times New Roman;}{\f1 \fswiss Arial;}} 
{\colortbl ;\red255\green255\blue255 ;\red0\green0\blue0 ;} 
{\stylesheet{\f1\fs20\cf2\cb1\ulc2 Normal;}{\cs1\cf2\cb1\ulc2 Default Paragraph Font;}} 
{\*\revtbl{Unknown;}} 
\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\headery720\footery0\deftab720\formshade\aendnotes\aftnnrlc\pgbrdrhead\pgbrdrfoot 
\sectd\pgwsxn12240\pghsxn15840\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\headery720\footery0\sbkpage\pgncont\pgndec 
\plain\plain\f1\fs20\ql\plain\f1\fs20 TEST\lang1033\f1 {\field\fldlock{\*\fldinst MERGEFIELD ID}{\fldrslt}} TEST\plain\f1\fs20\par} 

:印刷したとき

TEST {ID} TEST

そして{ID}は、正しいID番号に置き換えられます。私はちょうどそれが

TESTテスト

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss Arial;}} 
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\f0\fs20 TEST TEST\par 
} 

のように見えるRTFを保存した後のように見えるワードパッドでRTFを開いた場合しかし

ここでは私の問題です私は本当に他のメタデータのほとんどを気にしませんが、私は理解していないのはなぜそれが外されているのですか{ID}。私がlooking on MSDNによって何を伝えることができるかについては、約\field\fldlock{\*\fldinst MERGEFIELD ID}{\fldrslt}については気づいています。

フィールドタグと一致するように正規表現を書いて、それらを削除するか、より良い解決策がありますか?

EDIT

私はWordでRTFを開く場合、これがまた起こるが、それはファイルtoo long to post hereになります。

答えて

1

私は誰にも好奇心旺盛であれば、ここでのパターン

\{(?:\s*\\\*)?\s*\\field\s*\\fldlock\s*\{\s*\\\*\s*\\fldinst\s*MERGEFIELD\s*(\\.*?)?([\w\[\]]+)(\s+\w+)?(\s*\\.*?)?\s*\}(?:\s*\{\s*\\fldrslt\s*\})?\s*\} 
は、正規表現を使用して終了
関連する問題