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

标签 c# image ms-word

如何将 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();

但是当我尝试将文件流转换为图像时,它会给我类似

的错误
Parameter is not valid.

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

最佳答案

您可以使用适合我的波纹管代码将 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();

关于c# - 使用C#将Word文件页面转换为jpg图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20326478/

相关文章:

c# - 如果存在特定 URL 参数,则排除缓存

c# - 将包含文件的模型从 MVC 站点发送到 Web Api 站点

java - 无法解密和读取加密的图像文件

c# - 在 ASP.NET 中将 HTML 内容写入 Word 文档时出现问题

vba - 部署 VBA 宏

ms-word - Word Open XML 邮件合并

c# - 将所有 C# 文件编译成一个文件?

c# - Autocad 2015插件自动加载

jquery - 使用 CSS(或 jQuery)放大图像而不移动页面上的其他所有内容

javascript - 在 IE(7 和 8)中移动大尺寸图像非常慢