搜索了后发现都是放在richtext里 不过好像都不成功。 也看到了提问者说 如果rtf 高或宽大于控件大小,那就不能保存完全。我现在 rtf长度不定, 可能1页  也可能3,4页。 请问如何把这个rtf 全文都保存为图片。 谢谢回答。

解决方案 »

  1.   

    给你个源代码,能解决你的问题 这个控件是先生成图片,然后打印图片。
    利用微软的RichTextBox控件设计的打印预览源代码,支持所见即所得打印,支持文字图片,支持直接打印输出和预览。
    http://download.csdn.net/source/1693795
      

  2.   

    还一个方法是用FastReport的rtf对象导出图片功能。
    http://download.csdn.net/source/1331287
      

  3.   


    public class PrintDocToTif
    {
        string tifPath = null;
        //设置生成的tif文件路径 
        public PrintDocToTif(string buildTifPath)
        {
            this.tifPath = buildTifPath;
        }    /**/
        /// <summary> 
        /// 生成无后缀名的tif文件 
        /// </summary> 
        /// <param name="sourceFile">源WORD文件</param> 
        /// <param name="destiFile"></param> 
        public void PrintTo(object sourceFile)
        {
            try
            {
                //生成的tif路径 
                object OutputFileName = (object)tifPath;
                object varMissing = Type.Missing;
                //定义Word实例对象 
                Microsoft.Office.Interop.Word.Application varWord = new Microsoft.Office.Interop.Word.Application();
                //设置Word的虚拟打印机 
                varWord.ActivePrinter = "Microsoft Office Document Image Writer";
                //定义Word文档实例对象 
                Microsoft.Office.Interop.Word.Document varDoc = varWord.Documents.Open
                 (ref sourceFile, ref varMissing, ref varMissing, ref varMissing, ref varMissing,
                  ref varMissing, ref varMissing, ref varMissing, ref varMissing,
                  ref varMissing, ref varMissing,
                  ref varMissing, ref varMissing, ref varMissing, ref varMissing, ref varMissing);
                varDoc.Activate();     //激活文档 
                object PrintToFile = true;            //打印成tif文件 
                varDoc.PrintOut(ref varMissing, ref varMissing, ref varMissing, ref OutputFileName, ref varMissing,
                                ref varMissing, ref varMissing, ref varMissing, ref varMissing, ref varMissing, ref PrintToFile,
                                ref varMissing, ref varMissing, ref varMissing, ref varMissing, ref varMissing, ref varMissing, ref varMissing);
                object saveChange = WdSaveOptions.wdSaveChanges;          //关闭word文档时不打开新窗体 
                varDoc.Close(ref saveChange, ref varMissing, ref varMissing);   //关闭word文档 
                varWord.Quit(ref varMissing, ref varMissing, ref varMissing);   //退出Word 
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        /**/
        /// <summary> 
        /// 将无后缀名的生成文件重命名为tif文件 
        /// </summary> 
        /// <param name="filePath">生成的无后缀名的文件路径</param> 
        public void ReNameToTif()
        {
            string newTifPath = "";
            if (File.Exists(tifPath))
            {
                newTifPath = tifPath + ".tif";
                File.Move(tifPath, newTifPath);
            }
        }
    }//测试用代码
    private void button1_Click(object sender, EventArgs e)
    {
        PrintDocToTif rtf = new PrintDocToTif("C:\\temp.tif");   // 生成的图
        rtf.PrintTo("c:\\doc1.rtf");                             // WORD能打开的源文件
    }