最佳实践
资源管理
csharp
// 正确: 使用 using 语句确保资源释放
using (CDocument document = new CDocument())
using (CBorder border = new CBorder(1f))
using (CBorderRadius radius = new CBorderRadius(5f))
{
// 使用这些资源
document.SaveToFile("output.pdf");
}
// 不推荐: 手动调用 Dispose
CDocument document = new CDocument();
try
{
document.SaveToFile("output.pdf");
}
finally
{
document.Dispose();
}样式复用
csharp
// 创建可重用的样式
CStyle bodyTextStyle = document.CreateStyle();
bodyTextStyle.SetFontSize(12);
bodyTextStyle.SetFontFamily("Arial");
bodyTextStyle.SetMarginBottom(10);
CStyle headingStyle = document.CreateStyle();
headingStyle.SetFontSize(18);
headingStyle.SetFontWeight(CFontWeight.Bold);
headingStyle.SetMarginTop(15);
headingStyle.SetMarginBottom(10);
// 应用到多个元素
paragraph1.AddStyle(bodyTextStyle);
paragraph2.AddStyle(bodyTextStyle);
heading1.AddStyle(headingStyle);
heading2.AddStyle(headingStyle);性能优化
csharp
// 1. 批量创建元素时,考虑预先创建样式
CStyle itemStyle = document.CreateStyle();
itemStyle.SetFontSize(12);
itemStyle.SetMarginBottom(5);
for (int i = 0; i < 1000; i++)
{
CText text = div.CreateText($"Item {i}");
text.AddStyle(itemStyle); // 复用样式而不是每次设置
}
// 2. 使用流输出而不是先写入内存
using (FileStream fs = File.Create("large.pdf"))
{
document.SaveToStream(fs);
}错误处理
csharp
try
{
using (CDocument document = new CDocument())
{
CPage page = document.CreatePage(595, 842);
// 验证图片路径
string imagePath = "path/to/image.png";
if (File.Exists(imagePath))
{
CImage image = page.CreateDiv().CreateImage(imagePath);
}
else
{
Console.WriteLine($"图片文件不存在: {imagePath}");
}
document.SaveToFile("output.pdf");
}
}
catch (Exception ex)
{
Console.WriteLine($"生成 PDF 时出错: {ex.Message}");
}