Pregunta

Tengo una situación donde quiero convertir un RTF documento a la imagen para el archivo y la impresión. Estoy utilizando .NET.
¿Hay bibliotecas por ahí que me pudiera ayudar con esta conversión?

Necesito

  • convertir una imagen en RTF a un servidor
  • establecer el tamaño del papel que debe ser adherido a la hora de crear la imagen

Una biblioteca comercial es una opción, pero yo prefiero OS. Si hay una manera lado del cliente para hacer que eso es una respuesta válida también, pero del lado del servidor sería extremadamente agradable.

Editar:

Gracias por todas las grandes respuestas. Ya que todos ellos implican la impresión de un documento RTF tengo una pregunta de seguimiento:

  • ¿Cuál es la mejor manera de imprimir un documento RTF en el servidor
¿Fue útil?

Solución

Mi recomendación sería tener un controlador de impresión que vuelca a una imagen -. De esa manera usted puede utilizar las funciones de impresión estándar (como incluyendo el tamaño del papel) y luego agarrar el archivo y el uso que de la impresión real o archivo

libre y la versión de código abierto es: Virtual Image Printer Driver

Otros consejos

he tenido que lidiar con esto recientemente. Nuestra aplicación permitiría al usuario editar algunos RTF en un control estándar (viene con Visual Studio) y luego convertirlo en una imagen para que pudiéramos enviarlo a otra aplicación que no entendía RTF.

Me parecía bastante duro en línea y parecía que la única posibilidad era tomar una captura de pantalla del control y convertir eso en una imagen. Es decir, cualquier texto que estaba fuera del área visible (es decir, había que desplazarse) no aparecería. Realmente me sorprendió que tuvo que ser cortado por el estilo.

Sé que preguntó acerca de las bibliotecas comerciales, sino que pensé en hacerle saber mi experiencia con el control integrado.

Ampliando la respuesta de Robert, se puede, si es necesario, evitar la descarga de un controlador de impresión estándar con sólo escoger una impresora "estándar" que viene con el sistema operativo y la impresión en un archivo. Un montón de los conductores son justing usando una versión estándar de PostScript. Por lo general, es bastante fácil de convertir archivos PostScript en archivos PDF para su visualización si es necesario. Imprimirlos es generalmente fácil, también.

Esta solución es ligeramente más trabajo que simplemente utilizando un controlador especializado que da salida a una imagen.

Yo era capaz de capturar la imagen de la RichTextBox siguiendo fragmento de código. Creo que puede ser de su uso también.

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

    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top