Skip to content

Commit 8b74500

Browse files
Set content title
1 parent 58dcd34 commit 8b74500

File tree

6 files changed

+38
-8
lines changed

6 files changed

+38
-8
lines changed

modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
using Volo.Docs.Localization;
2222
using Volo.Docs.Projects;
2323
using Volo.Docs.Projects.Pdf.Markdig;
24-
using Volo.Docs.Projects.Pdf.Markdown;
2524

2625
namespace Volo.Docs
2726
{
Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
24
using System.Text.RegularExpressions;
35
using System.Web;
46
using Markdig;
57
using Microsoft.Extensions.Options;
68
using Volo.Abp.DependencyInjection;
9+
using Volo.Docs.Documents;
710
using Volo.Docs.HtmlConverting;
8-
using Volo.Docs.Projects.Pdf.Markdig;
911
using Volo.Docs.Utils;
1012

11-
namespace Volo.Docs.Projects.Pdf.Markdown;
13+
namespace Volo.Docs.Projects.Pdf.Markdig;
1214

1315
public class MarkdigPdfDocumentToHtmlConverter : IDocumentToHtmlConverter<PdfDocumentToHtmlConverterContext>, ITransientDependency
1416
{
@@ -22,7 +24,11 @@ public MarkdigPdfDocumentToHtmlConverter(IOptions<DocsProjectPdfGeneratorOptions
2224

2325
public virtual string Convert(PdfDocumentToHtmlConverterContext converterContext)
2426
{
25-
var htmlContent = global::Markdig.Markdown.ToHtml(NormalizeContent(converterContext.Content), GetPipeline(converterContext.PdfDocument));
27+
var htmlContent = Markdown.ToHtml(NormalizeContent(
28+
converterContext.Content,
29+
converterContext.PdfDocument,
30+
converterContext.DocumentParams),
31+
GetPipeline(converterContext.PdfDocument));
2632
return NormalizeHtmlContent(htmlContent, converterContext.PdfDocument);
2733
}
2834

@@ -34,9 +40,29 @@ protected virtual MarkdownPipeline GetPipeline(PdfDocument pdfDocument)
3440
.Build();
3541
}
3642

37-
protected virtual string NormalizeContent(string content)
43+
protected virtual string NormalizeContent(string content, PdfDocument pdfDocument, DocumentParams documentParams)
3844
{
39-
return Regex.Replace(content, @"`{3,4}json\s*//\[doc-nav\][\s\S]*?`{3,4}", string.Empty, RegexOptions.IgnoreCase);
45+
content = Regex.Replace(content, @"`{3,4}json\s*//\[doc-nav\][\s\S]*?`{3,4}", string.Empty, RegexOptions.IgnoreCase);
46+
47+
if (pdfDocument.RenderParameters.IsNullOrEmpty())
48+
{
49+
return content;
50+
}
51+
52+
var titleLine = content.Split(Environment.NewLine).FirstOrDefault(x => x.TrimStart().StartsWith("#"));
53+
if (titleLine == null)
54+
{
55+
return content;
56+
}
57+
58+
var paramValues = pdfDocument.RenderParameters.Select(x =>
59+
{
60+
var documentParam = documentParams.Parameters.FirstOrDefault(p => p.Name == x.Key);
61+
return $"{documentParam?.Values[x.Value] ?? x.Value}";
62+
});
63+
64+
var newTitle = $"{titleLine.Trim()} ({string.Join(", ", paramValues)})";
65+
return content.Replace(titleLine, newTitle);
4066
}
4167

4268
protected virtual string NormalizeHtmlContent(string htmlContent, PdfDocument pdfDocument)
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1+
using Volo.Docs.Documents;
2+
13
namespace Volo.Docs.Projects.Pdf;
24

35
public class PdfDocumentToHtmlConverterContext
46
{
57
public string Content { get; set; }
68
public PdfDocument PdfDocument { get; set; }
79

8-
public PdfDocumentToHtmlConverterContext(string content, PdfDocument pdfDocument)
10+
public DocumentParams DocumentParams { get; set; }
11+
12+
public PdfDocumentToHtmlConverterContext(string content, PdfDocument pdfDocument, DocumentParams documentParams)
913
{
1014
Content = content;
1115
PdfDocument = pdfDocument;
16+
DocumentParams = documentParams;
1217
}
1318
}

modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/ProjectPdfGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ protected virtual async Task<string> ConvertDocumentsToHtmlAsync(List<PdfDocumen
9999
{
100100
var renderedDocument = await RenderDocumentAsync(pdfDocument);
101101
var documentToHtmlConverter = GetDocumentToHtmlConverter(Project, pdfDocument);
102-
var htmlContent = documentToHtmlConverter.Convert(new PdfDocumentToHtmlConverterContext(renderedDocument, pdfDocument));
102+
var htmlContent = documentToHtmlConverter.Convert(new PdfDocumentToHtmlConverterContext(renderedDocument, pdfDocument, DocumentParams));
103103
contentBuilder.AppendLine(htmlContent);
104104
}
105105

0 commit comments

Comments
 (0)