【问题标题】:Saving a word document as an image将word文档另存为图片
【发布时间】:2014-08-18 22:57:11
【问题描述】:

我正在使用以下代码将 Word Doc 转换为图像文件。但是图片显得太大了,内容放不下——有没有办法渲染图片或者保存图片大小?

    private void btnConvert_Click(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(txtFileName.Text))
        {
            MessageBox.Show("Choose a document to convert", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            txtFileName.Focus();
            return;
        }

        ApplicationClass wordApp = new ApplicationClass();
        object objectMissing = Missing.Value;

        try
        {
            object fileName = txtFileName.Text;
            FileStream fs = new FileStream(fileName.ToString(), FileMode.Open, FileAccess.Read);
            Byte[] data = new Byte[fs.Length];
            fs.Read(data, 0, data.Length);

            Document doc = wordApp.Documents.Open(ref fileName, ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing,
                                   ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing, ref objectMissing,
                                   ref objectMissing, ref objectMissing, ref objectMissing);


            byte[] range = (byte[]) wordApp.ActiveDocument.Content.EnhMetaFileBits;
            if (range != null)
            {
                MemoryStream ms = new MemoryStream(range);
                Metafile mf = new Metafile(ms);
                picImage.Height = mf.Height;
                picImage.Width = mf.Width;
                mf.Save("c:\\test.png", ImageFormat.Png);
                picImage.Image = Image.FromFile("c:\\test.png");
            }
        }
        finally
        {
            wordApp.Quit(ref objectMissing, ref objectMissing, ref objectMissing);
        }
    }

【问题讨论】:

    标签: c# image ms-word


    【解决方案1】:

    原来真的很简单:

        private void renderImage(byte[] imageData)
        {
            using (MemoryStream ms = new MemoryStream(imageData))
            {
                Image image = Image.FromStream(ms);
                picImage.Image = image;
            }
        }
    

    这会将第一页显示为图像,但也应该很容易呈现其他页面。

    感谢所有回答的人

    【讨论】:

      【解决方案2】:

      将其转换为任意大小,然后使用 imagemagick:http://www.imagemagick.org/script/index.php 调整大小或执行您需要的任何其他后期处理(它可以做很多事情)

      【讨论】:

        【解决方案3】:

        如何使用 Microsoft Document Image Writer 将文档打印为 TIFF?

        【讨论】:

          【解决方案4】:

          您还可以在保存后以编程方式调整图像大小。

          【讨论】:

            【解决方案5】:

            将内容复制到 Powerpoint(如果可以复制),然后您可以将幻灯片保存为所需格式的图像

            【讨论】:

            • 这没有回答实际问题,OP 显然是在要求程序化解决方案。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-12
            • 1970-01-01
            • 1970-01-01
            • 2016-03-07
            • 1970-01-01
            相关资源
            最近更新 更多