Auteur de questions
Sauvegarder l'orientation dans un fichier rtf

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
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 ...
Cordialement,
Xavier
Alias Troxsa My M@iL- Modifié TroxsaEditor mercredi 16 février 2011 16:01
-
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 -
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 -
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
-
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
-
\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 -
-
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 :
On y lit :Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load RichTextBox1.Text = RichTextBox1.Rtf End Sub
{\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 -
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
________________
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.
-
Bonjour,
Scalpa, est-ce que l’utilisation de \landscape donne les mêmes résultats ?
Cordialement,
Alex
________________
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.
-
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
Cordialement Pascal http://www.scalpa.info- Modifié scalpa mardi 22 février 2011 17:28 orthographe