From f93c193dcdf94a234f14d58cc2950c571cc09397 Mon Sep 17 00:00:00 2001 From: Lixfeld Date: Mon, 5 Dec 2022 18:37:12 +0100 Subject: [PATCH 1/3] Remove duplicate disableTelemetry option --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index e09ecf3..7cc4e4d 100644 --- a/README.md +++ b/README.md @@ -84,8 +84,6 @@ By default only pages listed in `.order` files are considered. Setting this opti ### --no-frontmatter If you want to remove the [frontmatter / YAML tags](https://docs.microsoft.com/en-us/azure/devops/project/wiki/wiki-markdown-guidance?view=azure-devops#yaml-tags) from the PDF. -### --disableTelemetry -Disables the telemetry tracking, see [Telemetry](#telemetry) ### --chrome-timeout Timeout for Chrome operations in seconds (default 30 seconds). From ece91937e2c153834ec4281ef964e490866411af Mon Sep 17 00:00:00 2001 From: Lixfeld Date: Mon, 5 Dec 2022 18:40:43 +0100 Subject: [PATCH 2/3] Fix relative links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7cc4e4d..92b1d59 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Highlight code blocks using highligh.js ### -d / --debug Debug mode. Logs tons of stuff and even exports the intermediate html file ### --disableTelemetry -Disables the telemetry tracking, see [Telemetry](#telemetry) +Disables the telemetry tracking, see [Telemetry](#-telemetry) ### --exclude-paths Skip pages whose path matches the [regular expression](https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference) patterns. ### --filter @@ -135,7 +135,7 @@ So far the following limitations are known: * Tags in Azure DevOps must be closed properly - if you leave a strikethrough (`~~`) open, then all the following ~~content will be striked through~~. ## ⚖ License -See [license](/AzureDevOps.WikiPDFExport/License.md) +See [license](/License.md) ## 🎯 Telemetry The tool uses Application Insights for basic telemetry: From f1901b775b0a78060e90a251726620358c496490 Mon Sep 17 00:00:00 2001 From: Matteo Trapani Date: Tue, 21 Feb 2023 10:28:03 +0100 Subject: [PATCH 3/3] #119 Fix SVG export Added specific handling of SVG extension --- .../WikiPDFExporterTests.cs | 2 ++ .../PngSvgExport.pdf.html | 9 +++++ .../OrderListedPages/PngSvgExport.pdf.html | 9 +++++ .../Inputs/PngSvgExport/.attachments/test.png | Bin 0 -> 10420 bytes .../Inputs/PngSvgExport/.attachments/test.svg | 31 ++++++++++++++++++ .../Inputs/PngSvgExport/Page-With-Svg.md | 12 +++++++ .../MarkdownConverter.cs | 5 ++- 7 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 AzureDevOps.WikiPDFExport.Test/test-data/Expected/IncludeUnlistedPages/PngSvgExport.pdf.html create mode 100644 AzureDevOps.WikiPDFExport.Test/test-data/Expected/OrderListedPages/PngSvgExport.pdf.html create mode 100644 AzureDevOps.WikiPDFExport.Test/test-data/Inputs/PngSvgExport/.attachments/test.png create mode 100644 AzureDevOps.WikiPDFExport.Test/test-data/Inputs/PngSvgExport/.attachments/test.svg create mode 100644 AzureDevOps.WikiPDFExport.Test/test-data/Inputs/PngSvgExport/Page-With-Svg.md diff --git a/AzureDevOps.WikiPDFExport.Test/WikiPDFExporterTests.cs b/AzureDevOps.WikiPDFExport.Test/WikiPDFExporterTests.cs index 1cc7bd8..0dce6be 100644 --- a/AzureDevOps.WikiPDFExport.Test/WikiPDFExporterTests.cs +++ b/AzureDevOps.WikiPDFExport.Test/WikiPDFExporterTests.cs @@ -20,6 +20,7 @@ public class WikiPDFExporterTests [InlineData("EmptyOrderFile")] [InlineData("Flat")] [InlineData("WellFormed")] + [InlineData("PngSvgExport")] public async void ExportWiki_IncludeUnlistedPages_Succeeds(string wikiToExport) { var options = new Options @@ -53,6 +54,7 @@ public async void ExportWiki_IncludeUnlistedPages_Succeeds(string wikiToExport) [InlineData("Flat")] [InlineData("WellFormed")] [InlineData("SingleFileNoOrder")] + [InlineData("PngSvgExport")] public async void ExportWiki_OnlyOrderListedPages_Succeeds(string wikiToExport) { var options = new Options diff --git a/AzureDevOps.WikiPDFExport.Test/test-data/Expected/IncludeUnlistedPages/PngSvgExport.pdf.html b/AzureDevOps.WikiPDFExport.Test/test-data/Expected/IncludeUnlistedPages/PngSvgExport.pdf.html new file mode 100644 index 0000000..4346474 --- /dev/null +++ b/AzureDevOps.WikiPDFExport.Test/test-data/Expected/IncludeUnlistedPages/PngSvgExport.pdf.html @@ -0,0 +1,9 @@ +  

Premise

+

This is a wiki page to test export PNG and SVG

+
+

PNG

+

test.png

+
+

SVG

+

test.svg

+
\ No newline at end of file diff --git a/AzureDevOps.WikiPDFExport.Test/test-data/Expected/OrderListedPages/PngSvgExport.pdf.html b/AzureDevOps.WikiPDFExport.Test/test-data/Expected/OrderListedPages/PngSvgExport.pdf.html new file mode 100644 index 0000000..4346474 --- /dev/null +++ b/AzureDevOps.WikiPDFExport.Test/test-data/Expected/OrderListedPages/PngSvgExport.pdf.html @@ -0,0 +1,9 @@ +  

Premise

+

This is a wiki page to test export PNG and SVG

+
+

PNG

+

test.png

+
+

SVG

+

test.svg

+
\ No newline at end of file diff --git a/AzureDevOps.WikiPDFExport.Test/test-data/Inputs/PngSvgExport/.attachments/test.png b/AzureDevOps.WikiPDFExport.Test/test-data/Inputs/PngSvgExport/.attachments/test.png new file mode 100644 index 0000000000000000000000000000000000000000..5dee7b3b6e89a5833d8cae9fa81d388d68180e27 GIT binary patch literal 10420 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 Yq_N-NNWvlTH6og@CL*r%`m4P+|i8vp + + + + + + + + + + + + + + + + + + + + SVG Test + + + + + + + Wiki Exporter + + + diff --git a/AzureDevOps.WikiPDFExport.Test/test-data/Inputs/PngSvgExport/Page-With-Svg.md b/AzureDevOps.WikiPDFExport.Test/test-data/Inputs/PngSvgExport/Page-With-Svg.md new file mode 100644 index 0000000..45c224e --- /dev/null +++ b/AzureDevOps.WikiPDFExport.Test/test-data/Inputs/PngSvgExport/Page-With-Svg.md @@ -0,0 +1,12 @@ +# Premise +This is a wiki page to test export PNG and SVG + +--- + +# PNG +![test.png](./.attachments/test.png) + +--- + +# SVG +![test.svg](./.attachments/test.svg) diff --git a/AzureDevOps.WikiPDFExport/MarkdownConverter.cs b/AzureDevOps.WikiPDFExport/MarkdownConverter.cs index ef1297e..0c8533f 100644 --- a/AzureDevOps.WikiPDFExport/MarkdownConverter.cs +++ b/AzureDevOps.WikiPDFExport/MarkdownConverter.cs @@ -416,9 +416,8 @@ public void CorrectLinksAndImages(MarkdownObject document, MarkdownFile mf) { //convert images to base64 and embed them in the html. Chrome/Puppeter does not show local files because of security reasons. Byte[] bytes = File.ReadAllBytes(fileInfo.FullName); - String base64 = Convert.ToBase64String(bytes); - - link.Url = $"data:image/{fileInfo.Extension};base64,{base64}"; + var base64 = Convert.ToBase64String(bytes); + link.Url = $"data:image/{(fileInfo.Extension == ".svg" ? "svg+xml" : fileInfo.Extension)};base64,{base64}"; } fileInfo = new FileInfo($"{absPath}.md");