RTF ドキュメントを画像に変換するか、サーバー上で RTF を印刷します
-
21-08-2019 - |
質問
したい状況があります RTFを変換する 書類 イメージする アーカイブと印刷用。.NETを使用しています。
この変換に役立つライブラリはありますか?
する必要がある
- RTFをサーバー上の画像に変換する
- 画像を作成するときに遵守する必要がある用紙サイズを設定します
市販のライブラリも選択肢にありますが、私は OS を好みます。クライアント側でそれを行う方法がある場合、それも有効な答えですが、サーバー側の方が非常に優れています。
編集:
素晴らしい回答をありがとうございました。これらはすべて RTF ドキュメントの印刷に関係するため、追加の質問があります。
- サーバー上で RTF ドキュメントを印刷する最良の方法は何ですか?
解決
私の推薦は、画像にダンププリントドライバ持っているだろう - 。あなたは(用紙サイズなどのような)標準的な印刷機能を使用して、ファイルを取得し、実際の印刷やアーカイブのためにそれを使用することができ、そのように
フリー&オープンソース版である:仮想イメージのプリンタドライバの
他のヒント
私は最近、この問題に対処しなければなりませんでした。私たちのアプリケーションは、ユーザが標準コントロールでいくつかのRTFを編集(Visual Studioのが付属しています)、その後、我々はRTFを理解していなかった別のアプリケーションに送信することができるように画像に変換できるようになります。
私は、オンラインでかなりハードに見えたし、唯一の可能性は、コントロールのスクリーンショットを撮ると画像にそれを変換することでし登場しました。表示可能領域外で任意のテキストを意味表示されません(すなわち、あなたはスクロールしなければなりませんでした)。それはそのようにアップハッキングされなければならなかったことは本当に私を驚かせます。
私が知っているあなたは、商用ライブラリについて尋ねたが、私はあなたと私の経験を知らせたいと思った組み込みコントロールます。
ロバートの答えを拡張し、あなたは、単にオペレーティングシステム、ファイルに印刷が付属しています「標準」のプリンタを選ぶことによって、標準のプリンタドライバをダウンロードしないようすることができます。ドライバーのプレンティは、ポストスクリプトの標準バージョンを使用してjustingあります。一般的に、必要に応じて表示するためにPDFファイルにPostScriptファイルを変換するのは簡単です。それらを印刷しすぎると、一般的に簡単です。
この溶液がちょうど画像を出力する特殊なドライバを使用するよりもわずかに多くの作業である。
私は、コードスニペットに従って、リッチテキストボックスの画像を捕捉することができました。私は、それはまたあなたの使用であってもよいと考えています。
private void ShowBitmap_btn_Click(object sender, RoutedEventArgs e)
{
if (MyTextBox_txt == null)
return;
Rect _descendentBounds = VisualTreeHelper.GetDescendantBounds(MyTextBox_txt);
//RenderTargetBitmap _targetBitmap = new RenderTargetBitmap((Int32)_descendentBounds.Width,
// (Int32)_descendentBounds.Height,
// 96, 96, PixelFormats.Pbgra32);
Rect _tempRect = new Rect(System.Windows.Forms.Screen.PrimaryScreen.Bounds.X,
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Y,
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width,
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
RenderTargetBitmap _targetBitmap = new RenderTargetBitmap((Int32)_tempRect.Width,
(Int32)_tempRect.Height,
96, 96, PixelFormats.Pbgra32);
DrawingVisual _drawingVisual = new DrawingVisual();
using (DrawingContext _drwaingContext = _drawingVisual.RenderOpen())
{
VisualBrush _visualBrush = new VisualBrush(MyTextBox_txt);
_drwaingContext.DrawRectangle(_visualBrush, null, new Rect(new Point(), _tempRect.Size));
}
_targetBitmap.Render(_drawingVisual);
PngBitmapEncoder _png = new PngBitmapEncoder();
_png.Frames.Add(BitmapFrame.Create(_targetBitmap));
Stream _fileStream;
_fileStream = File.Create(@"E:\sample1.png");
_png.Save(_fileStream);
System.Drawing.Bitmap _tempBitmap = new System.Drawing.Bitmap(_fileStream);
_tempBitmap.Save(@"E:\sample1.bmp");
_fileStream.Close();
_fileStream.Dispose();
}