You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Aspose.Pdf在C#中无法设置0-1区间的TextFragment行间距

Aspose.Pdf设置小于1倍行间距的解决方案

问题出在你将段落的行间距模式设置为FontSize,该模式下Aspose.Pdf强制使用字体大小的1倍作为行间距,导致你在TextFragment上设置的小于1的倍数被忽略并自动取整为1。

解决步骤:

  • 将段落的行间距模式改为Custom,允许自定义行间距数值
  • 计算行间距的绝对数值(字体大小 × 目标倍数),确保行间距精准匹配需求

修改后的代码示例:

var fontPath = _dataDir + "astmensh.otf";
var document = new Aspose.Pdf.Document();
var page = document.Pages.Add();

TextBuilder builder = new TextBuilder(page);
TextParagraph paragraph = new TextParagraph();

paragraph.Rectangle = new BoundingBox(pageHeight).getBoxPosition(70.136f, 148.652f, 425.665f, 549.093f);
paragraph.VerticalAlignment = VerticalAlignment.Top;
paragraph.HorizontalAlignment = HorizontalAlignment.Left;
paragraph.FormattingOptions.WrapMode = TextFormattingOptions.WordWrapMode.ByWords;
// 关键修改:切换为自定义行间距模式
paragraph.FormattingOptions.LineSpacing = TextFormattingOptions.LineSpacingMode.Custom;

var textFragment = new Aspose.Pdf.Text.TextFragment(@"Greetings Ms. test999,
    I wanted to let you know I am thinking of you.");

textFragment.TextState.Font = FontRepository.OpenFont(fontPath);
textFragment.TextState.ForegroundColor = Color.Parse("#211d70");
textFragment.TextState.FontSize = 28;
// 计算0.82倍字体大小的绝对行间距值:28 * 0.82 = 22.96
textFragment.TextState.LineSpacing = 22.96f;

paragraph.AppendLine(textFragment);
builder.AppendParagraph(paragraph);
document.Save(_dataDir + "manual-output.pdf");

若你的Aspose.Pdf版本支持在Custom模式下直接设置相对倍数(即0.82f),也可以尝试直接赋值,但计算绝对点值的方式兼容性更强,能避免版本差异导致的问题。

内容的提问来源于stack exchange,提问作者Akash Choubey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:30:21