使用C#将Word文件页面转换为jpg图像

 流浪者时空 发布于 2023-02-13 14:19

如何将word文档页面转换为特定图像?

我使用以下代码将其转换为.tiff图像

object varMissing = Type.Missing;

object varFalseValue = false;
object varTrueValue = true;

Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
word.ActivePrinter = "Microsoft XPS Document Writer";
object fileName = startupPath + "\\" + filename1;
object falseValue = false;
object trueValue = true;
object missing = Type.Missing;
word.Visible = true;
word.Activate();
Document doc = word.Documents.Open(ref fileName, ref missing,
                    ref falseValue, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing);
doc.Activate();

object PrintToFile = true;
object OutputFileName = startupPath + "\\" + filename1.Split('.')[0] + ".tif";

doc.PrintOut(ref varMissing, ref varFalseValue, 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);

doc.Close(ref varMissing, ref varMissing, ref varMissing);
word.Quit(ref varMissing, ref varMissing, ref varMissing);

//Multi to Single
MemoryStream ms;
Image myImage;

FileStream fs = new FileStream(startupPath + "\\" + filename1.Split('.')[0] + ".tif", FileMode.Open);
fs.Seek(0, SeekOrigin.Begin);

//Here I am getting error....
myImage = Image.FromStream(fs, true, false);

Guid myGuid = myImage.FrameDimensionsList[0];
FrameDimension myDimension = new FrameDimension(myGuid);
int myPageCount = myImage.GetFrameCount(myDimension);

for (int i = 0; i < myPageCount; i++)
{
      ms = new MemoryStream();
      myImage.SelectActiveFrame(myDimension, i);
      myImage.Save(string.Format(startupPath + "\\" + filename1.Split('.')[0] + ".tif", i), ImageFormat.Tiff);
}

fs.Close();

但是当我试图将文件流转换为Image时,它给出了我的错误

Parameter is not valid.

有没有其他方法将word文件转换为图像文件? 我不能使用市场上出售的dll出售,但我需要使用Microsoft's core interop dll. 所以所以任何人都可以建议我链接或方式将.doc文件转换为.jpg.

1 个回答
  • 您可以使用对我有用的下面的代码将Doc文件转换为图像.

    var docPath = Path.Combine(startupPath, filename1);
    var app = new Microsoft.Office.Interop.Word.Application();
    
    MessageFilter.Register();
    
    app.Visible = true;
    
    var doc = app.Documents.Open(docPath);
    
    doc.ShowGrammaticalErrors = false;
    doc.ShowRevisions = false;
    doc.ShowSpellingErrors = false;
    
    if (!Directory.Exists(startupPath + "\\" + filename1.Split('.')[0]))
    {
         Directory.CreateDirectory(startupPath + "\\" + filename1.Split('.')[0]);
    }
    
    //Opens the word document and fetch each page and converts to image
    foreach (Microsoft.Office.Interop.Word.Window window in doc.Windows)
    {
          foreach (Microsoft.Office.Interop.Word.Pane pane in window.Panes)
          {
                for (var i = 1; i <= pane.Pages.Count; i++)
                {
                     var page = pane.Pages[i];
                     var bits = page.EnhMetaFileBits;
                     var target = Path.Combine(startupPath + "\\" + filename1.Split('.')[0], string.Format("{1}_page_{0}", i, filename1.Split('.')[0]));
    
                     try
                     {
                         using (var ms = new MemoryStream((byte[])(bits)))
                         {
                              var image = System.Drawing.Image.FromStream(ms);
                              var pngTarget = Path.ChangeExtension(target, "png");
                              image.Save(pngTarget, ImageFormat.Png);
                         }
                     }
                     catch (System.Exception ex)
                     { }
             }
        }
    }
    doc.Close(Type.Missing, Type.Missing, Type.Missing);
    app.Quit(Type.Missing, Type.Missing, Type.Missing);
    MessageFilter.Revoke();
    

    2023-02-13 14:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有