将Word文档转换为PDF是许多C#应用程序中的常见需求,但依赖于Microsoft Office Interop可能会显得繁琐且低效。幸运的是,像Spire.Doc for .NET这样的第三方库提供了一种强大且无缝的替代方案,可以高质量地进行转换,而 无需依赖Interop 。无论是需要 保留格式 、 用密码保护PDF ,还是 优化文件大小 ,Spire.Doc都能提供灵活的解决方案,代码量极少。
在本指南中,我们将探讨如何使用Spire.Doc在 C#中将Word转换为PDF ,涵盖基本转换、高级自定义和最佳实践,以获得最佳效果。
用于将Word转换为PDF的C# .NET库
Spire.Doc for .NET是一个功能强大的API,允许开发者以编程方式创建、编辑和转换Word文档。它支持将Word(DOC、DOCX)转换为PDF,同时保留格式、图像、超链接等元素。
使用Spire.Doc,您可以获得以下优势:
- 高保真转换 ,格式损失极小
- 支持生成密码保护的PDF
- 可 自定义PDF设置 (如PDF/A合规性、字体嵌入等)
- 批量转换多个Word文件
开始前,请从官网下载Spire.Doc并将DLL引用到您的项目中。或者,您可以通过以下NuGet命令安装它:
PM> Install-Package Spire.Doc
将DOCX转换为PDF的基本步骤
使用默认设置将Word文档转换为PDF非常简单,以下示例展示了如何加载一个DOCX文件并将其保存为PDF:
using Spire.Doc;
namespace ConvertWordToPdf
{
class Program
{
static void Main(string[] args)
{
// 创建一个Document对象
Document doc = new Document();
// 加载Word文档
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.docx");
// 将文档保存为PDF
doc.SaveToFile("ToPDF.pdf", FileFormat.PDF);
// 释放资源
doc.Dispose();
}
}
}
结果:
转换Word到PDF的高级选项
为了更好地控制转换过程,Spire.Doc提供了ToPdfParameterList类。使用此类,您可以:
- 转换为PDF/A(标准化的档案格式)
- 应用密码保护和权限限制
- 嵌入字体以确保一致的渲染
- 保留书签以便于导航
- 如有必要,禁用超链接
以下是可用选项的总结:
选项 | 实现方式 |
---|---|
转换为PDF/A | PdfConformanceLevel |
用密码保护PDF | PdfSecurity |
限制权限(例如,打印) | PdfSecurity |
嵌入所有字体 | IsEmbeddedAllFonts |
嵌入特定字体 | EmbeddedFontNameList |
保留书签 | CreateWordsBookmarks |
从标题创建书签 | CreateWordBookmarksUsingHeadings |
禁用超链接 | DisableLink |
示例 1:将Word转换为密码保护的PDF
以下代码通过设置打开密码对输出的PDF文件进行加密,确保文档免受未经授权的访问:
using Spire.Doc;
namespace ConvertWordToPasswordProtectedPdf
{
class Program
{
static void Main(string[] args)
{
// 创建一个Document对象
Document doc = new Document();
// 加载Word文档
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.docx");
// 创建一个ToPdfParameterList对象
ToPdfParameterList parameters = new ToPdfParameterList();
// 设置打开密码
parameters.PdfSecurity.Encrypt("openPsd");
// 将Word保存为PDF
doc.SaveToFile("PasswordProtected.pdf", parameters);
// 释放资源
doc.Dispose();
}
}
}
结果:
示例 2:嵌入字体到生成的PDF
以下代码将Word文档中使用的所有字体嵌入生成的PDF中,确保文档在任何查看者的系统字体下都能保持其预期外观:
using Spire.Doc;
namespace EmbedFonts
{
class Program
{
static void Main(string[] args)
{
// 创建一个Document对象
Document doc = new Document();
// 加载Word文档
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.docx");
// 创建一个ToPdfParameterList对象
ToPdfParameterList parameters = new ToPdfParameterList();
// 在生成的PDF中嵌入Word中使用的所有字体
parameters.IsEmbeddedAllFonts = true;
// 将文档保存为PDF
doc.SaveToFile("EmbedFonts.pdf", FileFormat.PDF);
// 释放资源
doc.Dispose();
}
}
}
结果:
调整Word文档以获得最佳转换效果
为了实现最佳的PDF输出,您可能需要在转换之前准备您的Word文档。考虑以下调整:
示例:通过压缩图像减少PDF大小
以下代码将图像质量降低到50%,从而生成更小的PDF:
using Spire.Doc;
namespace SetImageQualityWhenConverting
{
class Program
{
static void Main(string[] args)
{
// 创建一个Document对象
Document doc = new Document();
// 加载Word文档
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.docx");
// 将图像质量降低到50%
doc.JPEGQuality = 50;
// 将文档保存为PDF
doc.SaveToFile("CompressImage.pdf", FileFormat.PDF);
// 释放资源
doc.Dispose();
}
}
}
结论
在C#中将Word文档转换为PDF并不复杂——Spire.Doc for .NET简化了这一过程,并提供了广泛的自定义选项。从基本转换到高级功能,如PDF加密、字体嵌入和图像压缩,全部无需Interop。
通过遵循本指南中概述的技术,您可以高效地将Word到PDF的功能集成到您的应用程序中。如需进一步帮助,请查阅Spire.Doc的在线教程或利用其免费试用版测试其功能。
常见问题
Q1:如何在C#中将多个Word文件批量转换为PDF?
您可以在代码中创建一个循环来一次处理多个文件。例如:
string[] files = Directory.GetFiles("input_folder", "*.docx");
foreach (string file in files)
{
Document document = new Document();
document.LoadFromFile(file);
document.SaveToPDF(Path.ChangeExtension(file, ".pdf"), FileFormat.PDF);
document.Dispose();
}
Q2:如何将多个Word文件合并为一个PDF?
您可以先合并Word文件(使用Spire.Doc),然后将合并后的文档转换为PDF。例如:
Document mergedDoc = new Document();
string[] filesToMerge = Directory.GetFiles("input_folder ", "*.docx");
foreach (string file in filesToMerge)
{
mergedDoc.InsertTextFromFile(file, FileFormat.Docx);
}
mergedDoc.SaveToFile("Merged.pdf", FileFormat.PDF);
mergedDoc.Dispose();
Q3:为什么我转换的PDF缺少文本或格式?
这个问题可能是由于系统缺少自定义字体导致的。为了解决此问题,请在执行转换的机器上安装所需的字体。或者,您可以在使用Spire.Doc进行转换时直接将字体嵌入PDF中。
Q4:如何将PDF转回Word文件?
我司提供另外一个产品Spire.PDF for .NET,支持将PDF转回Word,请参考:如何使用C#将PDF转换为Word
申请临时License
如果您需要去除生成文档中的评估提示或解除功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。