Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

**Cross framework** (WinForms/WPF/PDF/Metro/Mono/etc.), **Multipurpose** (UI Controls / Image generation / PDF generation / etc.), **100% managed** (C#), High performance HTML Rendering library.

The library is 100% managed **C#** code without any external dependencies (no WebBrowser control, ActiveX / COM or MSHTML dll), the only requirement is **.NET Framework 4.6.2 or higher**.
The library is 100% managed **C#** code without any external dependencies (no WebBrowser control, ActiveX / COM or MSHTML dll), the only requirement is **.NET Standard 2.0 / .NET 8.0 or higher**.

![Renderer.png](https://raw.githubusercontent.com/ArthurHub/HTML-Renderer/master/Art/demo_winforms.png)

Expand All @@ -22,7 +22,6 @@ The latest NuGet packages can be found on NuGet.org:

* [HtmlRenderer.WinForms](https://www.nuget.org/packages/HtmlRenderer.WinForms)
* [HtmlRenderer.WPF](https://www.nuget.org/packages/HtmlRenderer.WPF)
* [HtmlRenderer.Mono](https://www.nuget.org/packages/HtmlRenderer.Mono)
* [HtmlRenderer.PdfSharp](https://www.nuget.org/packages/HtmlRenderer.PdfSharp)
* [HtmlRenderer.Core](https://www.nuget.org/packages/HtmlRenderer.Core)

Expand Down
9 changes: 6 additions & 3 deletions Source/Demo/Common/HtmlRenderer.Demo.Common.csproj
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
<TargetFrameworks>netstandard2.0;net8.0</TargetFrameworks>
<OutputType>Library</OutputType>
<RootNamespace>TheArtOfDev.HtmlRenderer.Demo.Common</RootNamespace>
<AssemblyName>HtmlRendererDemoCommon</AssemblyName>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateResourceUsePreserializedResources>true</GenerateResourceUsePreserializedResources>
<GenerateResourceUsePreserializedResources>true</GenerateResourceUsePreserializedResources>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
Expand Down Expand Up @@ -91,6 +91,9 @@
<EmbeddedResource Include="PerfSamples\1.Big table.htm" />
<EmbeddedResource Include="PerfSamples\2.Lots blocks in inline.htm" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="System.Drawing.Common" Version="10.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\HtmlRenderer\HtmlRenderer.csproj" />
</ItemGroup>
Expand Down
39 changes: 0 additions & 39 deletions Source/Demo/Common/Properties/AssemblyInfo.cs

This file was deleted.

2 changes: 1 addition & 1 deletion Source/Demo/WPF/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ private static Assembly OnResolveAssembly(object sender, ResolveEventArgs args)
if (stream != null)
{
byte[] assemblyRawBytes = new byte[stream.Length];
stream.Read(assemblyRawBytes, 0, assemblyRawBytes.Length);
stream.ReadExactly(assemblyRawBytes);
return Assembly.Load(assemblyRawBytes);
}
return null;
Expand Down
13 changes: 3 additions & 10 deletions Source/Demo/WPF/HtmlRenderer.Demo.WPF.csproj
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
<TargetFramework>net8.0-windows</TargetFramework>
<OutputType>WinExe</OutputType>
<RootNamespace>TheArtOfDev.HtmlRenderer.Demo.WPF</RootNamespace>
<AssemblyName>HtmlRendererWpfDemo</AssemblyName>
<UseWPF>true</UseWPF>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateResourceUsePreserializedResources>true</GenerateResourceUsePreserializedResources>
<GenerateResourceUsePreserializedResources>true</GenerateResourceUsePreserializedResources>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>html.ico</ApplicationIcon>
Expand All @@ -28,11 +28,4 @@
<ItemGroup>
<PackageReference Include="Extended.Wpf.Toolkit" Version="5.0.0" />
</ItemGroup>
<Target Name="AfterResolveReferences">
<ItemGroup>
<EmbeddedResource Include="@(ReferenceCopyLocalPaths)" Condition="'%(ReferenceCopyLocalPaths.Extension)' == '.dll'">
<LogicalName>%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)</LogicalName>
</EmbeddedResource>
</ItemGroup>
</Target>
</Project>
56 changes: 0 additions & 56 deletions Source/Demo/WPF/Properties/AssemblyInfo.cs

This file was deleted.

14 changes: 8 additions & 6 deletions Source/Demo/WinForms/DemoForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public partial class DemoForm : Form
/// </summary>
public DemoForm()
{
SamplesLoader.Init(HtmlRenderingHelper.IsRunningOnMono() ? "Mono" : "WinForms", typeof(HtmlRender).Assembly.GetName().Version.ToString());
SamplesLoader.Init("WinForms", typeof(HtmlRender).Assembly.GetName().Version.ToString());

InitializeComponent();

Expand All @@ -59,8 +59,8 @@ public DemoForm()

LoadCustomFonts();

_showIEViewTSSB.Enabled = !HtmlRenderingHelper.IsRunningOnMono();
_generatePdfTSB.Enabled = !HtmlRenderingHelper.IsRunningOnMono();
_showIEViewTSSB.Enabled = true;
_generatePdfTSB.Enabled = true;
}

/// <summary>
Expand Down Expand Up @@ -145,10 +145,12 @@ private void OnGeneratePdf_Click(object sender, EventArgs e)
config.SetMargins(20);

var doc = PdfGenerator.GeneratePdf(_mainControl.GetHtml(), config, null, DemoUtils.OnStylesheetLoad, HtmlRenderingHelper.OnImageLoadPdfSharp);

var tmpFile = Path.GetTempFileName();
tmpFile = Path.GetFileNameWithoutExtension(tmpFile) + ".pdf";
doc.Save(tmpFile);
Process.Start(tmpFile);
var pdfFile = Path.ChangeExtension(tmpFile, ".pdf"); // Preserves the full path
doc.Save(pdfFile);

Process.Start(new ProcessStartInfo(pdfFile) { UseShellExecute = true });
}

/// <summary>
Expand Down
6 changes: 3 additions & 3 deletions Source/Demo/WinForms/GenerateImageForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ public GenerateImageForm(string html)
}
_textRenderingHintTSCB.SelectedItem = TextRenderingHint.AntiAlias.ToString();

_useGdiPlusTSB.Enabled = !HtmlRenderingHelper.IsRunningOnMono();
_backgroundColorTSB.Enabled = !HtmlRenderingHelper.IsRunningOnMono();
_useGdiPlusTSB.Enabled = true;
_backgroundColorTSB.Enabled = true;
}

private void OnSaveToFile_Click(object sender, EventArgs e)
Expand Down Expand Up @@ -103,7 +103,7 @@ private void GenerateImage()
TextRenderingHint textRenderingHint = (TextRenderingHint)Enum.Parse(typeof(TextRenderingHint), _textRenderingHintTSCB.SelectedItem.ToString());

Image img;
if (_useGdiPlusTSB.Checked || HtmlRenderingHelper.IsRunningOnMono())
if (_useGdiPlusTSB.Checked)
{
img = HtmlRender.RenderToImageGdiPlus(_html, _pictureBox.ClientSize, textRenderingHint, null, DemoUtils.OnStylesheetLoad, HtmlRenderingHelper.OnImageLoad);
}
Expand Down
8 changes: 3 additions & 5 deletions Source/Demo/WinForms/HtmlRenderer.Demo.WinForms.csproj
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
<TargetFramework>net8.0-windows</TargetFramework>
<OutputType>WinExe</OutputType>
<RootNamespace>TheArtOfDev.HtmlRenderer.Demo.WinForms</RootNamespace>
<AssemblyName>HtmlRendererWinFormsDemo</AssemblyName>
<PublishUrl>publish\</PublishUrl>
<UseWindowsForms>true</UseWindowsForms>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateResourceUsePreserializedResources>true</GenerateResourceUsePreserializedResources>
<GenerateResourceUsePreserializedResources>true</GenerateResourceUsePreserializedResources>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>html.ico</ApplicationIcon>
Expand Down
9 changes: 0 additions & 9 deletions Source/Demo/WinForms/HtmlRenderingHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,6 @@ internal static class HtmlRenderingHelper

#endregion


/// <summary>
/// Check if currently running in mono.
/// </summary>
public static bool IsRunningOnMono()
{
return Type.GetType("Mono.Runtime") != null;
}

/// <summary>
/// Create image to be used to fill background so it will be clear that what's on top is transparent.
/// </summary>
Expand Down
7 changes: 6 additions & 1 deletion Source/Demo/WinForms/MainControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
// "The Art of War"

using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
Expand Down Expand Up @@ -72,6 +73,8 @@ public MainControl()
/// <summary>
/// used ignore html editor updates when updating separately
/// </summary>
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool UpdateLock
{
get { return _updateLock; }
Expand All @@ -81,6 +84,8 @@ public bool UpdateLock
/// <summary>
/// In IE view if to show original html or the html generated from the html control
/// </summary>
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool UseGeneratedHtml
{
get { return _useGeneratedHtml; }
Expand Down Expand Up @@ -186,7 +191,7 @@ private void OnSamplesTreeViewAfterSelect(object sender, TreeViewEventArgs e)
{
_updateLock = true;

if (!HtmlRenderingHelper.IsRunningOnMono() && e.Node.Parent.Text != PerformanceSamplesTreeNodeName)
if (e.Node.Parent.Text != PerformanceSamplesTreeNodeName)
SetColoredText(sample.Html);
else
_htmlEditor.Text = sample.Html;
Expand Down
5 changes: 4 additions & 1 deletion Source/Demo/WinForms/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
using System.Globalization;
using System.IO;
using System.Reflection;
using System.Text;
using System.Windows.Forms;

namespace TheArtOfDev.HtmlRenderer.Demo.WinForms
Expand All @@ -28,6 +29,8 @@ private static void Main()
{
AppDomain.CurrentDomain.AssemblyResolve += OnResolveAssembly;

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new DemoForm());
Expand All @@ -52,7 +55,7 @@ private static Assembly OnResolveAssembly(object sender, ResolveEventArgs args)
if (stream != null)
{
byte[] assemblyRawBytes = new byte[stream.Length];
stream.Read(assemblyRawBytes, 0, assemblyRawBytes.Length);
stream.ReadExactly(assemblyRawBytes);
return Assembly.Load(assemblyRawBytes);
}
return null;
Expand Down
36 changes: 0 additions & 36 deletions Source/Demo/WinForms/Properties/AssemblyInfo.cs

This file was deleted.

8 changes: 6 additions & 2 deletions Source/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
<Project>
<PropertyGroup>
<!-- Common NuGet package properties -->
<Product>HTML Renderer</Product>
<Authors>Arthur Teplitzki</Authors>
<Owners>Arthur Teplitzki</Owners>
<Company>Open source hosted on GitHub</Company>
<Copyright>Copyright © 2008-2025</Copyright>
<Version>1.6.0-dev</Version>
<AssemblyVersion>1.6.0.0</AssemblyVersion>
<FileVersion>1.6.0.0</FileVersion>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageLicenseExpression>BSD-3-Clause</PackageLicenseExpression>
<PackageProjectUrl>https://codeplexarchive.org/project/HtmlRenderer</PackageProjectUrl>
<PackageIcon>html.png</PackageIcon>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<PackageReleaseNotes>See https://github.com/ArthurHub/HTML-Renderer/releases.</PackageReleaseNotes>
<Version>1.6.0-dev</Version>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
</PropertyGroup>
<ItemGroup>
Expand Down
Loading
Loading