ASP.NET 网站,将word文档转换成PDF格式,然后上传的系统所在的文件夹。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET 网站,将word文档转换成PDF格式,然后上传的系统所在的文件夹。相关的知识,希望对你有一定的参考价值。
高手们,我想做一个方法:上传word文档,一是可以把文档上传到系统,与此同时还可以把这文档转换成PDF格式,将这个pdf文档也存到系统的另一个文件夹里,并得到这个pdf文档的名字。不知道怎么做希望高手能多多帮忙哈。
我看到网上很多人都在问这个问题,貌似,都是那个Form程序的,我想要网页的。最好有个实例了。
在此谢过了~
using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
...
// Create a new Microsoft Word application object
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
// C# doesn't have optional arguments so we'll need a dummy value
object oMissing = System.Reflection.Missing.Value;
// Get list of Word files in specified directory
DirectoryInfo dirInfo = new DirectoryInfo(@"\\server\folder");
FileInfo[] wordFiles = dirInfo.GetFiles("*.doc");
word.Visible = false;
word.ScreenUpdating = false;
foreach (FileInfo wordFile in wordFiles)
// Cast as Object for word Open method
Object filename = (Object)wordFile.FullName;
// Use the dummy value as a placeholder for optional arguments
Document doc = word.Documents.Open(ref filename, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing);
doc.Activate();
object outputFileName = wordFile.FullName.Replace(".doc", ".pdf");
object fileFormat = WdSaveFormat.wdFormatPDF;
// Save document into PDF Format
doc.SaveAs(ref outputFileName,
ref fileFormat, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing);
// Close the Word document, but leave the Word application open.
// doc has to be cast to type _Document so that it will find the
// correct Close method.
object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
doc = null;
// word has to be cast to type _Application so that it will find
// the correct Quit method.
((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
word = null;追问
不好意思,看不太懂~还有就是,这是唯一的方式吗?
追答上面的比较简单方便,当然你可以是要收费的组件或者itextsharp之类的开源组件(这个只能生成pdf,好像不能将word转换)
参考技术A 用到组件Aspose.Words.dll代码:Aspose.Words.Document doc = new Document("XXXX.doc");
doc.SaveToPdf("XXXXX.doc.pdf");本回答被提问者采纳 参考技术B 同意楼上..
在 ASP.NET 中将 MS Word 文档转换为 PDF [关闭]
【中文标题】在 ASP.NET 中将 MS Word 文档转换为 PDF [关闭]【英文标题】:Converting MS Word Documents to PDF in ASP.NET [closed] 【发布时间】:2010-09-14 15:45:02 【问题描述】:有人问了类似的问题,但没有什么和我的完全一样,所以就这样吧。
我们在 ASP.NET Web 服务器上有一组 Microsoft Word 文档,其中包含合并字段,其值是作为用户表单提交的结果而填写的。字段合并后,服务器必须将文档转换为 PDF 并将其流式传输到浏览器。我们的第一个想法是使用 Visual Studio Tools for Office API;但是,我们遇到了this warning from Microsoft:
Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定Office 在此环境中运行时的行为和/或死锁。
看起来可以使用Open XML SDK 完成字段操作,但是在不打开 Word 的情况下将 Word 2007 文档转换为 PDF 的最佳方法是什么?最佳解决方案应该是低成本、可扩展、内存占用少、易于部署并具有 .NET API。
【问题讨论】:
对于任何正在寻找简单解决方案的人,我建议看看GemBox.Document 库,它可以在 ASP.NET 中轻松地将 DOCX 转换为 PDF(您只需要加载和保存方法调用),但它也有一个用于mail merging 的简单 API,因此您不必为此使用 OOXML SDK。 【参考方案1】:问题是“ASP.NET 中的 MS Word 文档到 PDF”,所以我很困惑为什么上面推荐 Aspose.Pdf 和 Aspose.Pdf.Kit。您需要使用Aspose.Words,因为这是支持Microsoft Word 文档到PDF 转换的组件。
【讨论】:
【参考方案2】:它并不完全是开源的,但 Aspose 有几个产品可以做到这一点,
Aspose.Pdf.Kit
Aspose.Pdf.Kit 是一个非图形 PDF® 文档操作组件,它使 .NET 和 Java 开发人员能够管理现有的 PDF 文件以及管理嵌入在 PDF 文件中的表单域。 Aspose.Pdf 非常适合创建新的 PDF 文件;但是,开发人员通常需要编辑已经存在的 PDF 文档。 Aspose.Pdf.Kit 允许他们这样做。 Aspose.Pdf.Kit 允许开发人员创建功能强大的应用程序,用于将数据直接合并到 PDF 文档以及更新和管理 PDF 文档。 Aspose.Pdf.Kit 是一款出色的产品,可以与我们的其他 PDF 产品完美搭配。
和Aspose.pdf
Aspose.Pdf 是一个非图形 PDF® 文档报告组件,它使 .NET 或 Java 应用程序无需使用 Adobe Acrobat® 从头开始创建 PDF 文档。 Aspose.Pdf 价格非常实惠,并提供了丰富的强大功能,包括:压缩、表格、图形、图像、超链接、安全性和自定义字体。 Aspose.Pdf 支持通过 API、XML 模板和 XSL-FO 文件创建 PDF 文件。 Aspose.Pdf 非常易于使用,并提供了 14 个用 C# 和 Visual Basic 编写的全功能演示。
查看API 和demos。您可以免费下载 DLL 进行试用。我以前都用过,效果很好。
还有iTextSharp,它是 iText 的 C# 端口,一个 Java PDF 转换器。我听说有些人尝试它的结果好坏参半。
【讨论】:
在尝试了许多不同的产品之后,Aspose 绝对是领先于其他产品。它的主要缺点是成本 - 它并不便宜,但你得到你所支付的。 我会第二个@glaxaco,Aspose 产品很棒,支持也很好,物有所值。顺便说一句,Aspose Words 现在支持更轻松的 doc 到 PDF 的转换。 @John 是正确的 - 您不再需要单独的 Aspose.Pdf 产品来从 Word 文档创建 PDF。【参考方案3】:使用 C# 或 VB 查看 Microsoft 在 Saving Word 2007 Documents to PDF and XPS Formats 上的资源。
【讨论】:
【参考方案4】:ActivePdf DocConverter - http://www.activepdf.com/
但它需要在服务器上安装 Office 才能获得高质量的转换。
【讨论】:
【参考方案5】:Aspose.Words 可能是您的最佳选择,但它并不能完美地转换所有视觉元素。
看看Muhimbi PDF Converter Web Services。它作为服务在 Windows 上运行,但可以从任何不支持 Windows 网络服务的环境(包括 Java 和 .NET)访问。
虽然此解决方案需要将 MS-Office 安装在服务器上(不一定与您的应用程序在同一台服务器上),但它非常健壮并提供完美的转换保真度。它竭尽全力解决微软在其知识库文章中提到的死锁问题。
要生成或修改 MS-Word 文件,我建议使用免费的Open XML SDK for Microsoft Office。 Eric White 维护了一个关于它的really good Blog。
免责声明,我曾在此产品上工作。话虽如此,效果很好。
【讨论】:
【参考方案6】:您应该为此尝试使用 OpenOffice。它是免费的,支持各种文件转换。我用它来将 DOC 和 DOCX 文件转换为 HTML 格式,效果非常好。
【讨论】:
您能为此分享您的示例存储库吗?我也在尝试在 OpenOffice 上这样做【参考方案7】:ABCpdf 是另一个流行的组件,它可以让您在 ASP.NET 下将 Word 文档转换为 PDF,但我相信它也可以使用 Microsoft Office 或 OpenOffice。
http://www.websupergoo.com/abcpdf-office-docs.htm
【讨论】:
【参考方案8】:Microsoft PDF add-in for word 似乎是目前最好的解决方案,但您应该考虑到它不会将所有 word 文档正确转换为 pdf,在某些情况下您会看到 word 和输出之间存在巨大差异.pdf不幸的是,我找不到任何可以正确转换所有 word 文档的 api。我发现确保转换 100% 正确的唯一解决方案是通过打印机驱动程序转换文档。缺点是文档会被排队并一一转换,但您可以确定生成的 pdf 与单词 docuemtn 完全一样。我个人更喜欢使用UDC(通用文档转换器)并在服务器上安装了Foxit Reader(免费版),然后通过启动“进程”并将其动词属性设置为“打印”来打印文档。您还可以使用 FileSystemWatcher 在转换完成时设置信号。
【讨论】:
以上是关于ASP.NET 网站,将word文档转换成PDF格式,然后上传的系统所在的文件夹。的主要内容,如果未能解决你的问题,请参考以下文章