1

アーカイブと印刷のために、RTFドキュメントを画像に変換したい状況があります。私は.NETを使用しています。 この変換に役立つライブラリはありますか?

する必要がある

  • RTF をサーバー上の画像に変換する
  • 画像を作成するときに遵守する必要がある用紙サイズを設定します

商用ライブラリもオプションですが、私は OS を好みます。それを行うクライアント側の方法があれば、それも有効な答えですが、サーバー側は非常に優れています。

編集:

すべてのすばらしい答えをありがとう。それらはすべてRTFドキュメントの印刷を伴うため、フォローアップの質問があります:

  • サーバーで RTF ドキュメントを印刷する最良の方法は何ですか?
4

4 に答える 4

2

私のお勧めは、イメージにダンプするプリンター ドライバーを用意することです。これにより、標準の印刷機能 (用紙サイズなど) を使用してから、ファイルを取得して実際の印刷やアーカイブに使用できます。

フリー & オープン ソース バージョンは:仮想イメージ プリンター ドライバー

于 2009-03-20T13:04:05.210 に答える
0

コードスニペットに従って、リッチテキストボックスの画像をキャプチャできました。それもあなたの役に立つかもしれないと思います。

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();

    }
于 2009-04-21T06:29:50.317 に答える
0

Robert の回答を拡張すると、必要に応じて、オペレーティング システムに付属の「標準」プリンタを選択してファイルに出力するだけで、標準プリンタ ドライバのダウンロードを回避できます。多くのドライバーは標準バージョンの PostScript を使用しています。必要に応じて、postscript ファイルを pdf ファイルに変換して表示するのは、一般的に非常に簡単です。それらを印刷することも一般的に簡単です。

このソリューションは、画像を出力する特殊なドライバーを使用するよりも少し手間がかかります。

于 2009-03-20T13:55:01.670 に答える