读书人

C#怎么将word文档转为pdf或者图片

发布时间: 2014-01-06 15:53:52 作者: rapoo

C#如何将word文档转为pdf或者图片
请问如果不使用任何第三方dll,有没有办法将word文档(2003版)转为pdf或者图片?
[解决办法]
不用任何第三方库,当然也是可以的啊,而且随便就可以搜到的好么。。。
我姑且简单写一下吧
1、office需要2007或以上
2、微软自己有一个office组件,可以将word(其他excel什么的好像也行,忘了)保存成xps或pdf,名字忘了,不过很容易找到的,总之找来装上
3、如果转pdf,Open以后直接调用_Document的ExportAsFixedFormat,第二个参数用WdExportFormat.wdExportFormatPDF,就行了
4、如果转图片,麻烦一点,先用3的方法转xps,然后


Bitmap image = null;
FixedDocumentSequence docs = xps.GetFixedDocumentSequence();
using (DocumentPage docPage = docs.DocumentPaginator.GetPage(page))
{
float dpi = ConfigManager.DocDpi;
int width = (int)(docPage.Size.Width * dpi / 96 + 0.5);
int height = (int)(docPage.Size.Height * dpi / 96 + 0.5);

RenderTargetBitmap renderTarget = new RenderTargetBitmap(width, height, dpi, dpi, System.Windows.Media.PixelFormats.Default);
renderTarget.Render(docPage.Visual);

// calling GetPage without calling UpdateLayout causes a memory leak
((FixedPage)docPage.Visual).UpdateLayout();

BitmapEncoder encoder = new BmpBitmapEncoder(); // Choose type here ie: JpegBitmapEncoder, etc
encoder.Frames.Add(BitmapFrame.Create(renderTarget));

MemoryStream s = new MemoryStream();
encoder.Save(s);
image = new Bitmap(s);
image.SetResolution(dpi, dpi);
}

大致是这样,dpi根据你实际情况设,默认是96

另外,楼上有人提到的Spire的那个库我用过,简单试个1、2页看起来很不错,速度还快一些,可试个50页的有文字图片表格的word,转成图片跟原始word区别就很大了,会发现分页都不对,导致最后可能只有49页,这个我当时还到他们论坛发帖问,然后官方回复说他们分页算法也是自己摸索的,所以跟原版有差别也没办法,只能慢慢调~~~

读书人网 >C#

热点推荐