デバイスのフロント ディスプレイに切り取って挿入できるラベルの印刷をサポートするアプリケーション (ビルディング オートメーション用のカスタム ネットワーク管理ツール) があります。ツールの以前のバージョン (私の会社で開発されたものではありません) では、アプリケーションは文字列を Excel ファイルにプッシュするだけで、現場の技術者はそれを操作 (テキストの書式設定など) できました。新しいバージョンではこれを行いませんでした。これは、Excel ファイルの同期を維持し、外部アプリケーションへのバインドを回避することが困難 (不可能) であったためです (Excel の異なるバージョンは言うまでもありません)。
ラベルのレンダリングにはPDFSharpを使用しています。System.Drawing に似たインターフェイスを備えていますが、System.Drawing.Graphics (画面/プリンター) と PDF ファイルに出力できます。これは要件です。
その後、1 つのラベル (つまり、1 つの文字列) に適用されるフォント ファミリ、スタイル、サイズ、色などの基本的な書式設定が導入されました。現在、顧客はこれらの形式を文字列内の単一の文字に適用できるようにしたいと考えています。最も簡単な方法は、RichText のサブセットをサポートすることだと思います。とはいえ、思ったほど簡単ではありません。
現在、エディターは、編集するラベルの TextBox を表示するだけで、フォントはラベルのフォントに設定されています。これを RichTextBox に置き換えて、書式設定ボタンを更新して、RichTextBox 書式設定プロパティを使用するだけでよいと考えました。かなり簡単です。ただし、テキストを描画する必要があります。RichTextBox を取得して HDC または System.Drawing.Graphics に描画できることは知っていますが、既に述べたように、PDFSharp を使用するにはそれが必要です。PDF は巨大であってはならず、大量のラベルであるため、ビットマップへのレンダリングはオプションではありません。残念ながら、RichTextBox にテキストのレイアウトを教えてもらうことができませんでした。どこに何を描画すればよいかがわかっている限り、実際のレンダリングは手動で行ってもかまいません。これが最初の質問です。RichTextBox からリッチ テキストの適切にレイアウトされたメトリックを取得するにはどうすればよいですか? または、リッチ テキストを手動で簡単に描画できるベクター グラフィックス形式に変換する方法はありますか?
RichText の解析と操作に使用できるNRTFTreeについて知っています。ドキュメンテーションは悪いですが (実際にはわかりません。スペイン語です)、動作させることはできると思います。私が理解している限り、レイアウトも提供しません。このため、カスタム編集コントロールを作成する必要があると思います (基本的には、完全な編集コントロールではなく、基本的な RTF 形式の 1 つまたは 2 つの行のラベルであることを思い出してください。PowerPoint でテキスト ボックスを編集するようなものです)。描画に System.Drawing ではなく PDFSharp を使用したカスタム テキスト レイアウト ロジック。部分的であっても、編集または手動でレイアウトを行うための既存のソリューションはありますか (またはその両方)?
それとも、私が見ていないまったく異なるアプローチがありますか? ラベル テキストを RTF として CSV ファイルにエクスポートし、Excel にインポートすると書式が保持される場合のボーナス ポイント。
編集部分については、Windows フォームで作業する必要があります。それ以外は、Windows フォーム関連ではないと思います。