安装 Office 2007 和使用 Word 12 对象库绝对是我会选择的选项(并且在我自己的一些项目中已经这样做了)。
如果您不想在生产 Web 服务器上安装 Word,为什么不在辅助服务器上安装它。您可以让第二台服务器与第一台服务器通信(使用 Web 服务或类似的东西)——它可以请求下一个需要导出的 Word 文档,进行转换,然后返回 PDF 数据。
如果您想要一个执行此转换的 Word 自动化的 C# 示例(这非常简单),请告诉我。
阿德里安
这是我为 Jason 发布的代码。这适用于 Word 2007。您需要从 Office 网站下载并安装 PDF 导出器:
using Microsoft.Office.Interop.Word;
...
object _read_only = false;
object _visible = true;
object _false = false;
object _true = true;
object _dynamic = 2;
object _missing = System.Reflection.Missing.Value;
object _htmlFormat = 8;
object _pdfFormat = 17;
object _xpsFormat = 18;
object fileName = "C:\\Test.docx";
ApplicationClass ac = new ApplicationClass();
//ac.Visible = true; // Uncomment to see Word as it opens and converts the document
//ac.Activate();
Document d = ac.Documents.Open(ref fileName, ref _missing, ref _true, ref _read_only, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _visible, ref _missing, ref _missing, ref _missing, ref _missing);
object newFileName = ((string)fileName).Substring(0, ((string)fileName).LastIndexOf(".")) + ".pdf";
d.SaveAs(ref newFileName, ref _pdfFormat, 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, ref _missing);
d.Close(ref _false, ref _missing, ref _missing);
ac.Quit(ref _false, ref _missing, ref _missing);
ac = null;
所以,Soul_Master,你说的是你不想使用互操作(虽然你没有说为什么,我很想知道),你不想为商业出口商付费,并且你想要完美的结果吗?
我不能帮你,我害怕。Interop 每次都会为您提供完美的结果,而且您已经拥有该软件。如果你不使用它,你将不得不做出牺牲——无论是成本还是质量。