Comment imprimer le fichier .rtf en utilisant C#? (WinForms/application WPF)Comment imprimer le fichier .rtf?
Répondre
De https://support.microsoft.com/en-us/kb/812425:
Dans Visual C# ou Visual C# 2005, créez un nouveau projet de bibliothèque de classes nommé RichTextBoxPrintCtrl. Par défaut, Class1.cs est créé. Modifiez le nom de Class1.cs en RichTextBoxPrintCtrl.cs. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Références, puis cliquez sur Ajouter une référence. Dans la boîte de dialogue Ajouter une référence, double-cliquez sur System.Drawing.dll et System.Windows.Forms.dll, puis cliquez sur OK.
Remplacez le code existant dans RichTextBoxPrintCtrl.cs avec le code suivant:
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Drawing.Printing;
namespace RichTextBoxPrintCtrl
{
public class RichTextBoxPrintCtrl:RichTextBox
{
//Convert the unit used by the .NET framework (1/100 inch)
//and the unit used by Win32 API calls (twips 1/1440 inch)
private const double anInch = 14.4;
[StructLayout(LayoutKind.Sequential)]
private struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
[StructLayout(LayoutKind.Sequential)]
private struct CHARRANGE
{
public int cpMin; //First character of range (0 for start of doc)
public int cpMax; //Last character of range (-1 for end of doc)
}
[StructLayout(LayoutKind.Sequential)]
private struct FORMATRANGE
{
public IntPtr hdc; //Actual DC to draw on
public IntPtr hdcTarget; //Target DC for determining text formatting
public RECT rc; //Region of the DC to draw to (in twips)
public RECT rcPage; //Region of the whole DC (page size) (in twips)
public CHARRANGE chrg; //Range of text to draw (see earlier declaration)
}
private const int WM_USER = 0x0400;
private const int EM_FORMATRANGE = WM_USER + 57;
[DllImport("USER32.dll")]
private static extern IntPtr SendMessage (IntPtr hWnd , int msg , IntPtr wp, IntPtr lp);
// Render the contents of the RichTextBox for printing
// Return the last character printed + 1 (printing start from this point for next page)
public int Print(int charFrom, int charTo,PrintPageEventArgs e)
{
//Calculate the area to render and print
RECT rectToPrint;
rectToPrint.Top = (int)(e.MarginBounds.Top * anInch);
rectToPrint.Bottom = (int)(e.MarginBounds.Bottom * anInch);
rectToPrint.Left = (int)(e.MarginBounds.Left * anInch);
rectToPrint.Right = (int)(e.MarginBounds.Right * anInch);
//Calculate the size of the page
RECT rectPage;
rectPage.Top = (int)(e.PageBounds.Top * anInch);
rectPage.Bottom = (int)(e.PageBounds.Bottom * anInch);
rectPage.Left = (int)(e.PageBounds.Left * anInch);
rectPage.Right = (int)(e.PageBounds.Right * anInch);
IntPtr hdc = e.Graphics.GetHdc();
FORMATRANGE fmtRange;
fmtRange.chrg.cpMax = charTo; //Indicate character from to character to
fmtRange.chrg.cpMin = charFrom;
fmtRange.hdc = hdc; //Use the same DC for measuring and rendering
fmtRange.hdcTarget = hdc; //Point at printer hDC
fmtRange.rc = rectToPrint; //Indicate the area on page to print
fmtRange.rcPage = rectPage; //Indicate size of page
IntPtr res = IntPtr.Zero;
IntPtr wparam = IntPtr.Zero;
wparam = new IntPtr(1);
//Get the pointer to the FORMATRANGE structure in memory
IntPtr lparam= IntPtr.Zero;
lparam = Marshal.AllocCoTaskMem(Marshal.SizeOf(fmtRange));
Marshal.StructureToPtr(fmtRange, lparam, false);
//Send the rendered data for printing
res = SendMessage(Handle, EM_FORMATRANGE, wparam, lparam);
//Free the block of memory allocated
Marshal.FreeCoTaskMem(lparam);
//Release the device context handle obtained by a previous call
e.Graphics.ReleaseHdc(hdc);
//Return last + 1 character printer
return res.ToInt32();
}
}
}
Dans le menu Debug, cliquez sur Démarrer pour exécuter l'application. Form1 est affiché. Saisissez du texte dans RichTextBoxPrintCtrl. Cliquez sur Mise en page pour définir les paramètres de la page. Cliquez sur Aperçu avant impression pour afficher l'aperçu avant impression de la page. Cliquez sur Imprimer pour imprimer le contenu de RichTextBoxPrintCtrl.
Lien direct: http://support.microsoft.com/default.aspx?scid=kb;en-us;812425 – amalgamate
Printing Word(RTF) Documents in C#
Vous pouvez ouvrir votre fichier dans un contrôle RichTextBox et send to printing à partir de là.
- 1. Python: convertir le fichier RTF en unicode?
- 2. ASP.NET MVC Imprimer le fichier
- 3. comment lire le fichier .rtf à partir du serveur FTP?
- 4. MFC - Impression du document RTF
- 5. Lire un fichier RTF et supprimer le texte dynamique
- 6. Comment obtenir le RTF de RichTextBox
- 7. RTF Datawindow et RTF Control Contenu comment trouver le texte par couleur, Nom de la police?
- 8. Comment afficher un fichier .rtf dans un Powershell RichTextBox
- 9. Comment afficher un fichier RTF dans WPF avec Powershell?
- 10. Comment pouvez imprimer le fichier texte dans WPF
- 11. Comment importer un fichier .rtf dans silverlight 4 richtextbox?
- 12. Comment imprimer correctement une copie papier d'un JTextPane avec du contenu "text/rtf"?
- 13. Comment lire un fichier .RTF en utilisant .NET 4.0
- 14. Comment imprimer un fichier pcl dans C#?
- 15. Fusionner des fichiers RTF
- 16. Combiner plusieurs textes RTF dans un fichier RTF en utilisant VBA
- 17. Comment devrais-je imprimer un caractère particulier dans le fichier après avoir lu le fichier?
- 18. Comment lire le contenu de RTF et affecté à Richtextbox?
- 19. Fusionner plusieurs fichiers doc ou rtf en un seul fichier doc ou rtf en utilisant le script php
- 20. Comment extraire une image BLOB de MySQL et l'écrire dans le fichier rtf en utilisant PHP?
- 21. insérer l'image dans un fichier RTF en utilisant PHP
- 22. pour imprimer le fichier XML local via NSData?
- 23. Comment charger un fichier rtf dans un fichier WPT RichTextBox dans Powershell
- 24. Comment obtenir la commande find pour imprimer la taille du fichier avec le nom du fichier?
- 25. imprimer le code php
- 26. Comment puis-je convertir un fichier RTF dans un fichier pdf?
- 27. Comment télécharger un fichier .txt en tant que fichier .rtf en C#?
- 28. Lire le fichier et imprimer dans un format spécifique. C++
- 29. RTF vers TEXT dans le serveur SQL
- 30. Imprimer seulement la dernière ligne d'un fichier?
S'il vous plaît pouvez-vous élaborer? –