Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
EmbeddedPdfDocument.cs
1using System.Text;
2using System.Threading.Tasks;
3using Waher.Content;
10
12{
18 {
19 private MarkdownDocument document;
20
25 {
26 }
27
33 public Grade Supports(string Language)
34 {
35 int i = Language.IndexOf(':');
36 if (i > 0)
37 Language = Language[..i].TrimEnd();
38
39 if (string.Compare(Language, "application/pdf", true) == 0)
40 return Grade.Ok;
41 else
42 return Grade.NotAtAll;
43 }
44
50 public override Grade Supports(MultimediaItem Item)
51 {
52 if (Item.ContentType.StartsWith("application/pdf") || Item.Url.EndsWith(".pdf"))
53 return Grade.Ok;
54 else
55 return Grade.NotAtAll;
56 }
57
62 public override bool EmbedInlineLink(string Url)
63 {
64 return true;
65 }
66
70 public bool EvaluatesScript => false;
71
76 public void Register(MarkdownDocument Document)
77 {
78 this.document = Document;
79 }
80
90 public Task<bool> RenderHtml(HtmlRenderer Renderer, string[] Rows, string Language, int Indent, MarkdownDocument Document)
91 {
92 int i = Language.IndexOf(':');
93
94 StringBuilder Output = Renderer.Output;
95
96 Output.Append("<embed type=\"application/pdf\"");
97 Output.Append(" style=\"margin-bottom:1em;width:100%;height:75vh;\"");
98
99 if (i > 0)
100 {
101 Output.Append(" title=\"");
102 Output.Append(XML.HtmlValueEncode(Language[(i + 1)..].Trim()));
103 Output.Append('"');
104 }
105
106 Output.Append(" src=\"data:application/pdf;base64,");
107
108 foreach (string Row in Rows)
109 Output.Append(Row.Trim());
110
111 Output.AppendLine("\"/>");
112
113 return Task.FromResult(true);
114 }
123 public Task RenderHtml(HtmlRenderer Renderer, MultimediaItem[] Items, ChunkedList<MarkdownElement> ChildNodes, bool AloneInParagraph,
124 MarkdownDocument Document)
125 {
126 StringBuilder Output = Renderer.Output;
127
128 Output.Append("<embed type=\"application/pdf\"");
129 Output.Append(" style=\"margin-bottom:1em;width:100%;height:75vh;\"");
130 Output.Append(" src=\"");
131
132 foreach (MultimediaItem Item in Items)
133 {
134 Output.Append(XML.HtmlAttributeEncode(Document.CheckURL(Item.Url, null)));
135 break;
136 }
137
138 Output.AppendLine("\">");
139
140 if (AloneInParagraph)
141 Output.AppendLine();
142
143 return Task.CompletedTask;
144 }
145
151 public Task Preload(ICodecProgress Progress, MultimediaItem[] Items)
152 {
153 return Task.CompletedTask;
154 }
155
156 }
157}
Contains a markdown document. This markdown document class supports original markdown,...
Abstract base class for multimedia content.
Renders HTML from a Markdown document.
Definition: HtmlRenderer.cs:25
Abstract base class for Markdown renderers.
Definition: Renderer.cs:15
readonly StringBuilder Output
Renderer output.
Definition: Renderer.cs:19
Helps with common XML-related tasks.
Definition: XML.cs:21
static string HtmlValueEncode(string s)
Differs from Encode(String), in that it does not encode the aposotrophe or the quote.
Definition: XML.cs:211
static string HtmlAttributeEncode(string s)
Differs from Encode(String), in that it does not encode the aposotrophe.
Definition: XML.cs:121
Handles an embedded PDF document on a Markdown page.
Grade Supports(string Language)
Checks how well the handler supports multimedia content of a given type.
void Register(MarkdownDocument Document)
Is called on the object when an instance of the element has been created in a document.
Task RenderHtml(HtmlRenderer Renderer, MultimediaItem[] Items, ChunkedList< MarkdownElement > ChildNodes, bool AloneInParagraph, MarkdownDocument Document)
Generates HTML for the multimedia content.
EmbeddedPdfDocument()
Handles an embedded PDF document on a Markdown page.
Task< bool > RenderHtml(HtmlRenderer Renderer, string[] Rows, string Language, int Indent, MarkdownDocument Document)
Generates HTML for the code content.
override bool EmbedInlineLink(string Url)
If the link provided should be embedded in a multi-media construct automatically.
Task Preload(ICodecProgress Progress, MultimediaItem[] Items)
Reports a resource for preloading.
override Grade Supports(MultimediaItem Item)
Checks how well the handler supports multimedia content of a given type.
bool EvaluatesScript
If script is evaluated for this type of code block.
A chunked list is a linked list of chunks of objects of type T .
Definition: ChunkedList.cs:54
Interface for reporting progress about an encoding or decoding.
Interface for all markdown handlers of code content.
Definition: ICodeContent.cs:9
Interface for multimedia content HTML renderers.
Grade
Grade enumeration
Definition: Grade.cs:7