2

環境

必要なのは、WPF アプリケーションからユーザー入力 (書式設定されたテキスト) をキャプチャし、保存された画像と最後のページにユーザー入力を含む PDF を出力することです。

試したこと

WPF アプリを作成し、iTextSharp ライブラリを追加し、DB から画像を復元して PDF に追加します。それは働いています。ここで、ユーザー入力のために、Extended WPF Toolkit からRichTextBoxコントロールを追加しました。このコントロールを追加した主な理由は、バインディング プロパティとフォーマッタです。基本的に、コントロールのリッチ コンテンツをプロパティにバインドできます。そのバインディングは機能しています。(例) のように、既に RTF 形式があります。

"{\rtf1\ansi\ansicpg1252\uc1\htmautsp\deff2{\fonttbl{\f0\fcharset0 Times New Roman;}{\f2\fcharset0 Segoe UI;}}{\colortbl\red0\green0\blue0;\red255\green255\blue255;}\loch\hich\dbch\pard\plain\ltrpar\itap0{\lang1033\fs18\f2\cf0 \cf0\ql{\f2 {\ltrch This is the }{\b\ltrch RichTextBox}\li0\ri0\sa0\sb0\fi0\ql\par}}}"

問題

問題は、PDF の実際の出力は、以前に示した RTF とまったく同じですが、予想される出力 (例として) は次のようにする必要があるということです。

"This is the **RichTextBox**\r\n"

これは明らかに、バインドされた RTF をコントロールから PDF に挿入するために発生しています。

PS。他の実用的なアイデアや解決策がある場合 (richtextbox などを使用せずに)、それは大歓迎です。前もって感謝します。

4

2 に答える 2

1

残念ながら、iTextSharpはRTF形式を直接サポートしなくなりました。最初にRTFフラグメントをXHTMLに変換してから、結果のXHTMLを最終的なドキュメントにインポートすることをお勧めします(公式のHTMLサポートがなくなったようです。したがって、この場合はXHTMLが唯一の代替手段です)。

要するに、私は次のことを提案します:

  1. RTFフラグメントをXHTMLに変換します。
  2. XHTMLストリームを新しいiTextSharpドキュメントに配置します(または、必要に応じて、最終的なドキュメントに直接配置します)。
  3. 前述のドキュメントのコンテンツを、PDFとしてエクスポートするターゲットドキュメントに追加します。

アップデート

RTFからXHTMLに変換するための組み込みのメカニズムはありませんが、多くのオープンソースプロジェクトが存在します。このRTFからHTMLへのコンバーターをHTMLAgilityPack(HTMLをXHTMLに変換します)と結合し始めます。

ただし、率直に言って、フロー全体をたどるのは少し複雑なので、プロジェクトで直接HTMLエディター代替)を使用するか、他の人が提案しているようにFlowDocumentに戻すことで、より単純なソリューションを選択するでしょう。

于 2012-07-01T11:11:27.340 に答える
1

WPF には既に優れた FlowDocument があり、適切にレンダリングされます。そのため、ベータ版の Xaml から PDF へのコンバーターを作成しましたが、ほとんどの文字列、テーブル、画像は PDF に正常に変換されます。これはオープン ソース プロジェクトであり、 http: //xamltopdf.codeplex.com/で入手できます。RTF は FlowDocument と FlowDocument を提供します。 XAML に変換して、XamlToPDF コンバーターに渡すことができます。

于 2012-07-01T11:49:30.113 に答える