Browse Source

Set content title

pull/22430/head
liangshiwei 1 year ago
parent
commit
8b74500723
  1. 1
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs
  2. 0
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/Markdig/AnchorLinkRenderer.cs
  3. 0
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/Markdig/AnchorLinkResolverExtension.cs
  4. 36
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/Markdig/MarkdigPdfDocumentToHtmlConverter.cs
  5. 7
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/PdfDocumentToHtmlConverterContext.cs
  6. 2
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/ProjectPdfGenerator.cs

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

@ -21,7 +21,6 @@ using Volo.Docs.HtmlConverting;
using Volo.Docs.Localization;
using Volo.Docs.Projects;
using Volo.Docs.Projects.Pdf.Markdig;
using Volo.Docs.Projects.Pdf.Markdown;
namespace Volo.Docs
{

0
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/Markdown/AnchorLinkRenderer.cs → modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/Markdig/AnchorLinkRenderer.cs

0
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/Markdown/AnchorLinkResolverExtension.cs → modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/Markdig/AnchorLinkResolverExtension.cs

36
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/Markdown/MarkdigPdfDocumentToHtmlConverter.cs → modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/Markdig/MarkdigPdfDocumentToHtmlConverter.cs

@ -1,14 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using Markdig;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
using Volo.Docs.Documents;
using Volo.Docs.HtmlConverting;
using Volo.Docs.Projects.Pdf.Markdig;
using Volo.Docs.Utils;
namespace Volo.Docs.Projects.Pdf.Markdown;
namespace Volo.Docs.Projects.Pdf.Markdig;
public class MarkdigPdfDocumentToHtmlConverter : IDocumentToHtmlConverter<PdfDocumentToHtmlConverterContext>, ITransientDependency
{
@ -22,7 +24,11 @@ public class MarkdigPdfDocumentToHtmlConverter : IDocumentToHtmlConverter<PdfDoc
public virtual string Convert(PdfDocumentToHtmlConverterContext converterContext)
{
var htmlContent = global::Markdig.Markdown.ToHtml(NormalizeContent(converterContext.Content), GetPipeline(converterContext.PdfDocument));
var htmlContent = Markdown.ToHtml(NormalizeContent(
converterContext.Content,
converterContext.PdfDocument,
converterContext.DocumentParams),
GetPipeline(converterContext.PdfDocument));
return NormalizeHtmlContent(htmlContent, converterContext.PdfDocument);
}
@ -34,9 +40,29 @@ public class MarkdigPdfDocumentToHtmlConverter : IDocumentToHtmlConverter<PdfDoc
.Build();
}
protected virtual string NormalizeContent(string content)
protected virtual string NormalizeContent(string content, PdfDocument pdfDocument, DocumentParams documentParams)
{
return Regex.Replace(content, @"`{3,4}json\s*//\[doc-nav\][\s\S]*?`{3,4}", string.Empty, RegexOptions.IgnoreCase);
content = Regex.Replace(content, @"`{3,4}json\s*//\[doc-nav\][\s\S]*?`{3,4}", string.Empty, RegexOptions.IgnoreCase);
if (pdfDocument.RenderParameters.IsNullOrEmpty())
{
return content;
}
var titleLine = content.Split(Environment.NewLine).FirstOrDefault(x => x.TrimStart().StartsWith("#"));
if (titleLine == null)
{
return content;
}
var paramValues = pdfDocument.RenderParameters.Select(x =>
{
var documentParam = documentParams.Parameters.FirstOrDefault(p => p.Name == x.Key);
return $"{documentParam?.Values[x.Value] ?? x.Value}";
});
var newTitle = $"{titleLine.Trim()} ({string.Join(", ", paramValues)})";
return content.Replace(titleLine, newTitle);
}
protected virtual string NormalizeHtmlContent(string htmlContent, PdfDocument pdfDocument)

7
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/Pdf/PdfDocumentToHtmlConverterContext.cs

@ -1,3 +1,5 @@
using Volo.Docs.Documents;
namespace Volo.Docs.Projects.Pdf;
public class PdfDocumentToHtmlConverterContext
@ -5,9 +7,12 @@ public class PdfDocumentToHtmlConverterContext
public string Content { get; set; }
public PdfDocument PdfDocument { get; set; }
public PdfDocumentToHtmlConverterContext(string content, PdfDocument pdfDocument)
public DocumentParams DocumentParams { get; set; }
public PdfDocumentToHtmlConverterContext(string content, PdfDocument pdfDocument, DocumentParams documentParams)
{
Content = content;
PdfDocument = pdfDocument;
DocumentParams = documentParams;
}
}

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

@ -99,7 +99,7 @@ public class ProjectPdfGenerator : IProjectPdfGenerator, ITransientDependency
{
var renderedDocument = await RenderDocumentAsync(pdfDocument);
var documentToHtmlConverter = GetDocumentToHtmlConverter(Project, pdfDocument);
var htmlContent = documentToHtmlConverter.Convert(new PdfDocumentToHtmlConverterContext(renderedDocument, pdfDocument));
var htmlContent = documentToHtmlConverter.Convert(new PdfDocumentToHtmlConverterContext(renderedDocument, pdfDocument, DocumentParams));
contentBuilder.AppendLine(htmlContent);
}

Loading…
Cancel
Save