Skip to content

Commit 2722875

Browse files
authored
Merge 37b6ceb into 746aa43
2 parents 746aa43 + 37b6ceb commit 2722875

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

src/Docfx.App/PdfBuilder.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ static async Task CreatePdf(IBrowser browser, ProgressTask task, Uri outlineUrl,
133133
var pageNumber = 1;
134134
var nextPageNumber = 1;
135135

136+
var page = await browser.NewPageAsync(new() { UserAgent = "docfx/pdf" });
137+
136138
// Make progress at 99% before merge PDF
137139
task.MaxValue = pages.Length + (pages.Length / 99.0);
138140
foreach (var (url, node) in pages)
@@ -158,14 +160,14 @@ static async Task CreatePdf(IBrowser browser, ProgressTask task, Uri outlineUrl,
158160

159161
async Task<byte[]> CapturePdf(Uri url, int startPageNumber)
160162
{
161-
var page = await browser.NewPageAsync();
162163
var response = await page.GotoAsync(url.ToString());
163164
if (response is null || !response.Ok)
164165
throw new InvalidOperationException($"Failed to build PDF page [{response?.Status}]: {url}");
165166

166167
await page.AddScriptTagAsync(new() { Content = EnsureHeadingAnchorScript });
167168
await page.AddScriptTagAsync(new() { Content = InsertHiddenPageScript(startPageNumber - 1) });
168-
await page.WaitForLoadStateAsync(LoadState.NetworkIdle);
169+
await page.WaitForLoadStateAsync(LoadState.DOMContentLoaded);
170+
await page.WaitForFunctionAsync("!window.docfx || window.docfx.ready");
169171
var bytes = await page.PdfAsync(new()
170172
{
171173
HeaderTemplate = "<span></span>",

templates/modern/src/docfx.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,23 @@ declare global {
2525
async function init() {
2626
window.docfx = window.docfx || {}
2727

28-
initTheme()
29-
30-
await Promise.all([
31-
enableSearch(),
32-
renderInThisArticle(),
33-
renderMarkdown(),
34-
renderNav(),
35-
highlight()
36-
])
28+
const pdfmode = navigator.userAgent.indexOf('docfx/pdf') >= 0
29+
if (pdfmode) {
30+
await Promise.all([
31+
renderMarkdown(),
32+
highlight()
33+
])
34+
} else {
35+
await Promise.all([
36+
initTheme(),
37+
renderMarkdown(),
38+
enableSearch(),
39+
renderInThisArticle(),
40+
renderMarkdown(),
41+
renderNav(),
42+
highlight()
43+
])
44+
}
3745

3846
window.docfx.ready = true
3947

0 commit comments

Comments
 (0)