Domanda

Ho una situazione dove voglio documento convertire un rtf per l'immagine per l'archiviazione e la stampa. Sto usando .NET.
Ci sono delle librerie là fuori che mi potesse aiutare con questa conversione?

Ho bisogno di

  • convertire un formato RTF per immagine su un server
  • impostare il formato della carta che deve essere rispettato durante la creazione dell'immagine

Una libreria commerciale è un'opzione, ma io preferisco OS. Se c'è un modo lato client per farlo questa è una risposta valida pure, ma lato server sarebbe estremamente piacevole.

Modifica:

Grazie per tutte le grandi risposte. Dal momento che tutti loro coinvolgere la stampa di un documento RTF Ho una domanda di follow-up:

  • Qual è il modo migliore per stampare un documento RTF sul server
È stato utile?

Soluzione

La mia raccomandazione sarebbe di avere un driver di stampa che scarica a un'immagine -. In questo modo è possibile utilizzare le funzioni di stampa standard (come comprese le dimensioni della carta) e quindi prelevare il file e l'uso che per la stampa effettiva o l'archiviazione

Free & versione open source è: Virtuale Image Printer Driver

Altri suggerimenti

Ho avuto a che fare con questo di recente. La nostra applicazione permetterebbe all'utente di modificare alcuni RTF in un controllo standard (viene fornito con Visual Studio) e quindi convertirlo in un'immagine in modo da potremmo inviare a un'altra applicazione che non ha capito RTF.

Ho guardato abbastanza duro in linea e sembrava l'unica possibilità era quella di prendere uno screenshot del controllo e convertire che a un'immagine. Significato qualsiasi testo che era al di fuori dell'area visibile (cioè si doveva scorrere) non sembra. mi ha sorpreso davvero che doveva essere violato in quel modo.

So che hai chiesto di librerie commerciali, ma ho pensato di farvi sapere la mia esperienza con il built-in di controllo.

Ampliando la risposta di Robert, è possibile, se necessario, evitare di scaricare un driver di stampa standard con solo la raccolta di una stampante "standard" che viene fornito con il sistema operativo e la stampa su file. Un sacco di piloti sono justing utilizzando una versione standard di PostScript. In genere è abbastanza facile per convertire file PostScript in file PDF per la visualizzazione, se necessario. stamparli è generalmente facile, anche.

Questa soluzione è leggermente più lavoro che semplicemente utilizzando un driver specializzato che emette un'immagine.

Sono stato in grado di catturare l'immagine del RichTextBox seguendo frammento di codice. Penso che possa essere di vostro uso.

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

    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top