如果文档采用A3格式和横向,如何使用C#将Word文件页面转换为png图像?

如果文档采用A3格式和横向,如何使用C#将Word文件页面转换为png图像?,c,image,ms-word,C,Image,Ms Word,我用了这个密码。它工作得很好,但只有在word文档采用A4格式时才起作用。当使用A3格式和横向方向时,图像将被向右剪切约15% var docPath = Path.Combine(startupPath, filename1); var app = new Microsoft.Office.Interop.Word.Application(); MessageFilter.Register(); app.Visible = true; var doc = app.Documents.Op

我用了这个密码。它工作得很好,但只有在word文档采用A4格式时才起作用。当使用A3格式和横向方向时,图像将被向右剪切约15%

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();
另外,如果是A3格式和纵向,则图像会向下裁剪约15%

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();
var docPath=Path.Combine(启动路径,文件名1);
var app=new Microsoft.Office.Interop.Word.Application();
MessageFilter.Register();
app.Visible=true;
var doc=app.Documents.Open(docPath);
doc.show语法错误=false;
doc.ShowRevisions=false;
doc.ShowSpellingErrors=false;
如果(!Directory.Exists(startupPath+“\\”+filename1.Split('.')[0]))
{
Directory.CreateDirectory(startupPath+“\\”+filename1.Split('.')[0]);
}
//打开word文档,获取每页并转换为图像
foreach(doc.Windows中的Microsoft.Office.Interop.Word.Window窗口)
{
foreach(window.Panes中的Microsoft.Office.Interop.Word.Pane窗格)
{

对于(var i=1;i我理解Word 2007中的问题。重新安装到office 2010