66using PuppeteerSharp . BrowserData ;
77using HtmlAgilityPack ;
88using System . Diagnostics ;
9+ using FWO . Report ;
10+ using FWO . Report . Data ;
911
1012namespace FWO . Test
1113{
@@ -14,17 +16,19 @@ namespace FWO.Test
1416 internal class HtmlToPdfTest
1517 {
1618 private const string FilePath = "pdffile.pdf" ;
17- private const string Html = "<html> <body> <h1>test<h1> test mit puppteer </body> </html>" ;
19+ private const string Html = "<html> <body> <h1>test</ h1> <h2> test mit puppteer</h2> </body> </html>" ;
1820 private const string ChromeBinPathLinux = "/usr/local/bin" ;
21+
1922
2023 [ Test ]
2124 public async Task GeneratePdf ( )
2225 {
23- Assert . That ( IsValidHTML ( Html ) ) ;
26+ bool isValidHtml = ReportBase . IsValidHTML ( Html ) ;
27+ ClassicAssert . IsTrue ( isValidHtml ) ;
2428
2529 string ? isGitHubActions = Environment . GetEnvironmentVariable ( "RUNNING_ON_GITHUB" ) ;
2630
27- if ( ! string . IsNullOrEmpty ( isGitHubActions ) )
31+ if ( ! string . IsNullOrEmpty ( isGitHubActions ) )
2832 {
2933 return ;
3034 }
@@ -78,18 +82,18 @@ public async Task GeneratePdf()
7882
7983 try
8084 {
81- await TryCreatePDF ( browser , PaperFormat . A0 ) ;
82- await TryCreatePDF ( browser , PaperFormat . A1 ) ;
83- await TryCreatePDF ( browser , PaperFormat . A2 ) ;
84- await TryCreatePDF ( browser , PaperFormat . A3 ) ;
85- await TryCreatePDF ( browser , PaperFormat . A4 ) ;
86- await TryCreatePDF ( browser , PaperFormat . A5 ) ;
87- await TryCreatePDF ( browser , PaperFormat . A6 ) ;
88-
89- await TryCreatePDF ( browser , PaperFormat . Ledger ) ;
90- await TryCreatePDF ( browser , PaperFormat . Legal ) ;
91- await TryCreatePDF ( browser , PaperFormat . Letter ) ;
92- await TryCreatePDF ( browser , PaperFormat . Tabloid ) ;
85+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . A0 ) ;
86+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . A1 ) ;
87+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . A2 ) ;
88+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . A3 ) ;
89+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . A4 ) ;
90+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . A5 ) ;
91+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . A6 ) ;
92+
93+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . Ledger ) ;
94+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . Legal ) ;
95+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . Letter ) ;
96+ await TryCreatePDF ( browser , PuppeteerSharp . Media . PaperFormat . Tabloid ) ;
9397 }
9498 catch ( Exception )
9599 {
@@ -101,22 +105,20 @@ public async Task GeneratePdf()
101105 }
102106 }
103107
104- private static bool IsValidHTML ( string html )
108+ [ Test ]
109+ public void TryCreateToC ( )
105110 {
106- try
107- {
108- HtmlDocument ? doc = new ( ) ;
109- doc . LoadHtml ( html ) ;
110- return ! doc . ParseErrors . Any ( ) ;
111- }
112- catch ( Exception )
113- {
114- return false ;
115- }
111+ bool isValidHtml = ReportBase . IsValidHTML ( Html ) ;
112+ ClassicAssert . IsTrue ( isValidHtml ) ;
116113
114+ List < ToCHeader > ? tocContent = ReportBase . CreateTOCContent ( Html ) ;
115+
116+ ClassicAssert . AreEqual ( tocContent . Count , 2 ) ;
117+ ClassicAssert . AreEqual ( tocContent [ 0 ] . Title , "test" ) ;
118+ ClassicAssert . AreEqual ( tocContent [ 1 ] . Title , "test mit puppteer" ) ;
117119 }
118120
119- private async Task TryCreatePDF ( IBrowser browser , PaperFormat paperFormat )
121+ private async Task TryCreatePDF ( IBrowser browser , PuppeteerSharp . Media . PaperFormat paperFormat )
120122 {
121123 Log . WriteInfo ( "Test Log" , $ "Test creating PDF { paperFormat } ") ;
122124
@@ -126,13 +128,15 @@ private async Task TryCreatePDF(IBrowser browser, PaperFormat paperFormat)
126128 await page . SetContentAsync ( Html ) ;
127129
128130 PdfOptions pdfOptions = new ( ) { DisplayHeaderFooter = true , Landscape = true , PrintBackground = true , Format = paperFormat , MarginOptions = new MarginOptions { Top = "1cm" , Bottom = "1cm" , Left = "1cm" , Right = "1cm" } } ;
129- byte [ ] pdfData = await page . PdfDataAsync ( pdfOptions ) ;
131+ using Stream ? pdfData = await page . PdfStreamAsync ( pdfOptions ) ;
132+
133+ byte [ ] ? pdfWithToCData = ReportBase . AddToCBookmarksToPDF ( pdfData , Html ) ;
130134
131- await File . WriteAllBytesAsync ( FilePath , pdfData ) ;
135+ await File . WriteAllBytesAsync ( FilePath , pdfWithToCData ) ;
132136
133137 Assert . That ( FilePath , Does . Exist ) ;
134138 FileAssert . Exists ( FilePath ) ;
135- ClassicAssert . AreEqual ( new FileInfo ( FilePath ) . Length , pdfData . Length ) ;
139+ ClassicAssert . AreEqual ( new FileInfo ( FilePath ) . Length , pdfWithToCData . Length ) ;
136140 }
137141 catch ( Exception )
138142 {
0 commit comments