none
Sauvegarder l'orientation dans un fichier rtf RRS feed

  • Question

  • Bonjour

    Peut-on sauvegarder l'orientation du contenu d'un RichTextBox ?

    MaBox.SaveFile(SaveFileDialog1.FileName)
    

    Quand j'ouvre le fichier rtf obtenu avec word il est en Portrait. Peut-on "dire" dans vb que le fichier en question est en format Paysage?

    Je ne sais pas si je suis très clair? En fait il faudrait que le fichier rtf que je fabrique s'ouvre en Landscape automatiquement.

    merci

    pascal

     


    Cordialement Pascal http://www.scalpa.info
    mercredi 16 février 2011 15:34

Toutes les réponses

  • Bonjour,

    Le fait de créer un fichier temporaire ou pas qui indiquerais le format du document serait envisageable ?
    Peut etre, voir aussi, la lecture par bytes si le fichier commence par {01} alors c'est le format paysage, si cela commence par {00} alors le format paysage ne sera pas appliquer ...

    pour la creation d'un fichier temporaire on pourrais voir un peut pres la meme chose ...

     

    A bientot
    Cordialement,
    Xavier
    Alias Troxsa My M@iL
    mercredi 16 février 2011 15:44
    Auteur de réponse
  • Là j'avoue que je n'ai pas compris... Un truc (au moins un ...) me dépasse. Si dans Word j'ouvre le rtf en question et je l'enregistre en format paysage, la fois d'après il s'ouvre direct en paysage.

    Donc je me suis dit qu'il devait bien y avoir un truc à faire au moment du SaveFile.... dans vb?!


    Cordialement Pascal http://www.scalpa.info
    mercredi 16 février 2011 15:49
  • Oui je pense aussi qu'il doit bien y avoir un truc

    le truc doit être l’entête du document en question comme dans tout document il y a des informations importante comme les images sur la taille, combien de pixel, quel pareille photo la fait, et bien d'autre information, sur les documents de type Word cela doit etre fait de la même façon 

    dans les images cela s'appelle des meta data qui son stocker dans les premier 128 octect (ou bytes) donc il faudra faire la meme chose avec les documents de type RTF car les meta data sont en read/write ou si cela n'est pas possible il doit etre possible d'en creer sans y modifier sa structure.

     

    A bientot


    Cordialement,
    Xavier
    Alias Troxsa My M@iL
    mercredi 16 février 2011 16:00
    Auteur de réponse
  • Bonsoir,

    dans les spécifications du format rtf  Rich Text Format (RTF) Specification, version 1.6 Document Area on trouve une section : Document Formatting Properties.

    Dans les "Page Information" il est fait mention d'un control : \ landscape Landscape format.

    Il donc peut être possible d'ajouter cette option directement dans le source du document rtf.

    Cordialement

     

    mercredi 16 février 2011 17:16
    Modérateur
  • Un petit test, permet de constater que Word ne semble plus s'appuyer sur \paperw.

    Ainsi à partir du contenu rtf d'une richtextbox

    {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
    \viewkind4\uc1\pard\f0\fs17 Test\par
    }

    en ajoutant la chaine : \paperw15840\paperh12240\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect (récupérer depuis word) passe le doc en paysage

    {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
    \paperw15840\paperh12240\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect
    \viewkind4\uc1\pard\f0\fs17 Test\par
    }

    Cordialement

     

    • Proposé comme réponse TroxsaEditor mercredi 16 février 2011 21:43
    mercredi 16 février 2011 18:13
    Modérateur
  • \rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
    \paperw15840\paperh12240\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect
    \viewkind4\uc1\pard\f0\fs17 Test\par
    }

    Bonjour,

    Comment faites-vous pour récupérer ses "codes"?

    Comment fait-on pour les insérer dans le document . Avec un append avant le contenu lui même?


    Cordialement Pascal http://www.scalpa.info
    jeudi 17 février 2011 17:06
  • Bonjour,

    pour récupérer les codes vous pouvez ouvrir un document rtf créé dans word ou wordpad dans un éditeur de text.

    Pour les insérer il faut effectivement travailler directement sur le propriété Rtf du RichtTexBox.

    Cordialement

    vendredi 18 février 2011 12:58
    Modérateur
  • Bonjour

    Merci pour ces infos :

    J'ai donc créé 2 fichiers vides depuis Word l'un que j'ai appelé portrait et l'autre paysage. Entre les deux seule change l'orientation. Je les ai comparés avec winmerge:

    \paperw12240\paperh15840\margl1417\margr1417\margt1417\margb1417\gutter0\ltrsect pour portrait

    \paperw15840\paperh12240\margl1418\margr1418\margt1418\margb1418\gutter0\ltrsect pour paysage

    J'ai regardé du coté de la propriété rtf du RichTextBox :

      Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        RichTextBox1.Text = RichTextBox1.Rtf
      End Sub
    
    On y lit :

    {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}\viewkind4\uc1\pard\f0\fs17\par}

    Puis en refaisant :

      Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            RichTextBox1.Rtf = ("{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}\paperw15840\paperh12240\margl1418\margr1418\margt1418\margb1418\gutter0\ltrsect\viewkind4\uc1\pard\f0\fs17\par}")
        RichTextBox1.Text = RichTextBox1.Rtf
      End Sub
    

    Cela ne change rien au contenu du RichTextBox1...

    De plus, l'aperçu avant impression que j'en fait est toujours en portrait... bizarre!

     


    Cordialement Pascal http://www.scalpa.info
    samedi 19 février 2011 14:41
  • Bonjour,

     

    Selon la page de spécifications pour le format rtf, on a le contrôle \landscape qui définit le mode paysage dans un document.

     

    Avez-vous trouve ce contrôle dans votre document ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    lundi 21 février 2011 13:09
  • Bonjour,

     

    Scalpa, est-ce que l’utilisation de \landscape donne les mêmes résultats ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    mardi 22 février 2011 11:36
  • Bonjour

    J'ai bien l'impression que cela ne change rien, mais peut-être que je ne l'insère pas où il le faut. Peut-être que les append que je fais modifient l'en-tête du fichier RTF à mon insu?

    Sub exportExo()
      Dim sFilePath As String = ""
      Try
       With SaveFileDialog1
        .AddExtension = True
        .CheckPathExists = True
        .CreatePrompt = False
        .OverwritePrompt = True
        .ValidateNames = True
        '.ShowHelp = True
        .DefaultExt = "rtf"
        '.FileName = nomFichier
        .Filter = "Exercices (*.rtf)|*.rtf"
        .FilterIndex = 1
    
        If .ShowDialog() = Windows.Forms.DialogResult.OK Then
    
         Try
          creerRtf()
             Catch ex1 As Exception
          MsgBox(ex1.Message, MsgBoxStyle.Exclamation, Me.Text)
         End Try
    
    
        End If
    
       End With
      Catch ex2 As Exception
       MsgBox(ex2.Message, MsgBoxStyle.Exclamation, Me.Text)
      End Try
    
     End Sub
    

    Puis :

    Sub creerRtf()
    
      'Dim sTmp As String = ""
      Dim MaBox As New RichTextBox
      MaBox.Rtf = ("{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}\landscape\paperw15840\paperh12240\margl1418\margr1418\margt1418\margb1418\gutter0\ltrsect\viewkind4\uc1\pard\f0\fs17\par}")
    
    
      Try
    
       'Centrer la sélection 
       MaBox.RightMargin = 0
       MaBox.SelectionAlignment = HorizontalAlignment.Center
       MaBox.SelectionFont = New Font("Verdana", 14, FontStyle.Bold)
       MaBox.AppendText("LES NOMBRES EN LETTRES")
       MaBox.SelectionFont = New Font("Times New Roman", 11, FontStyle.Bold)
       MaBox.AppendText(vbNewLine)
       MaBox.AppendText(vbNewLine)
    
       MaBox.SelectionFont = New Font("Verdana", 6, FontStyle.Italic)
       MaBox.AppendText(" ---------- SC@LPA PRODUCTION ---------- ")
       MaBox.SelectionFont = New Font("Times New Roman", 11, FontStyle.Regular)
       MaBox.AppendText(vbNewLine)
       MaBox.AppendText(vbNewLine)
    
       MaBox.SelectionAlignment = HorizontalAlignment.Left
       MaBox.SelectionFont = New Font("Times New Roman", 11, FontStyle.Bold)
       'MaBox.SelectionIndent = 1
       MaBox.AppendText("Ecris en chiffres les nombres suivants :")
       MaBox.SelectionFont = New Font("Times New Roman", 11, FontStyle.Regular)
       MaBox.AppendText(vbNewLine)
       MaBox.AppendText(vbNewLine)
       MaBox.AppendText(vbNewLine)
       ' sauver l'exercice
       MaBox.SelectionFont = New Font("Times New Roman", 11, FontStyle.Regular)
    
       Dim mtEspaces As String = " = ......."
    
       Dim myStr1 As List(Of ULong)
       
       myStr1 = GenNombres.GenArrayNbres(Min, Max, 20, True)
       Dim i = 1
       For Each nombre As Long In myStr1
        NbreEnLettres = Spell(nombre)
        If CheckBoxRef90.Checked = True Then
         NbreEnLettres = Ref1990(NbreEnLettres)
        End If
    
        MaBox.SelectionFont = New Font("Times New Roman", 10, FontStyle.Regular)
        MaBox.AppendText(i.ToString.PadRight(2) & ") " & NbreEnLettres & mtEspaces & vbCrLf)
        MaBox.SelectionFont = New Font("Times New Roman", 15, FontStyle.Regular)
        MaBox.AppendText(vbNewLine)
        i = i + 1
       Next
       If CheckBoxAide.Checked = True Then
        ColorierMots(MaBox, "bleu")
       End If
    
       MaBox.SaveFile(SaveFileDialog1.FileName)
       MsgBox("Terminé." & ChrW(13) & "Le nom du fichier est : " & ChrW(13) & SaveFileDialog1.FileName, CType(MsgBoxStyle.Information + MsgBoxStyle.OkOnly + MsgBoxStyle.DefaultButton1, MsgBoxStyle), "L'exercice est créé.")
    
      Catch ex1 As Exception
       MsgBox(ex1.Message, MsgBoxStyle.Exclamation, Me.Text)
      End Try
    
    
     End Sub
    
    Mais quand j'édite le fichier rtf dans Word il est en mode portrait!!! Arrgh !
    Cordialement Pascal http://www.scalpa.info
    • Modifié scalpa mardi 22 février 2011 17:28 orthographe
    mardi 22 février 2011 17:28