使用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
相关产品推荐
相关产品推荐

