Question

J'ai une situation où je veux convertir un document RTF à l'image pour l'archivage et l'impression. J'utilise .NET.
Y a-t-il des bibliothèques là-bas qui pourrait me aider avec cette conversion?

Je dois

  • convertir un format RTF à l'image sur un serveur
  • définir la taille de papier qui doit être collée à l'image lors de la création

Une bibliothèque commerciale est une option, mais je préfère OS. S'il y a un moyen de côté client pour faire c'est une réponse valable aussi bien, mais côté serveur serait extrêmement agréable.

Edit:

Merci pour toutes les grandes réponses. Étant donné que tous les impliquent l'impression d'un document RTF, j'ai suivi la question:

  • Quelle est la meilleure façon d'imprimer un document RTF sur un serveur
Était-ce utile?

La solution

Ma recommandation serait d'avoir un pilote d'impression dépotoirs à une image -. De cette façon vous pouvez utiliser les fonctions d'impression standard (comme y compris la taille du papier), puis saisir le fichier et l'utiliser pour l'impression réelle ou archivage

Gratuit et version Open Source est: Virtual Image pilote d'imprimante

Autres conseils

J'ai dû faire face à récemment. Notre application permettrait à l'utilisateur de modifier certains RTF dans un contrôle standard (livré avec visual studio), puis le convertir en une image afin que nous puissions l'envoyer à une autre application qui ne comprenait pas RTF.

J'ai regardé assez dur en ligne et il est apparu la seule possibilité était de prendre une capture d'écran du contrôle et de le convertir en une image. Signification tout texte qui était en dehors de la zone d'affichage (à savoir que vous deviez faire défiler) n'apparaît. Surpris m'a vraiment qu'il a dû être piraté comme ça.

Je sais que vous avez demandé des bibliothèques commerciales mais je pensais que je vous préviendrai mon expérience avec le contrôle intégré.

L'expansion sur la réponse de Robert, vous pouvez, le cas échéant, d'éviter le téléchargement d'un pilote d'impression standard simplement en choisissant une imprimante « standard » qui vient avec le système d'exploitation et de l'impression dans un fichier. Beaucoup de pilotes sont justing en utilisant une version standard de post-scriptum. Il est généralement assez facile de convertir des fichiers PostScript en fichiers pdf pour la visualisation en cas de besoin. Impression leur est généralement facile, aussi.

Cette solution est un peu plus de travail que d'utiliser un pilote spécialisé qui délivre une image.

J'ai pu capturer l'image du richtextbox en suivant extrait de code. Je pense qu'il peut être de l'utilisation aussi.

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

    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top