diff --git a/OpenHtmlToPdf.Tests/HtmlToPdfConversion.cs b/OpenHtmlToPdf.Tests/HtmlToPdfConversion.cs index 811dd59b..dccdeb50 100644 --- a/OpenHtmlToPdf.Tests/HtmlToPdfConversion.cs +++ b/OpenHtmlToPdf.Tests/HtmlToPdfConversion.cs @@ -159,7 +159,7 @@ public void Convert_multiple_documents_concurrently() var tasks = new List>(); for (var i = 0; i < documentCount; i++) - tasks.Add(Task.Run(() => Pdf.From(html).Content())); + tasks.Add(Task.Factory.StartNew(() => Pdf.From(html).Content())); Task.WaitAll(tasks.OfType().ToArray()); @@ -202,7 +202,7 @@ public void Convert_massive_number_of_documents() var tasks = new List>(); for (var i = 0; i < documentCount; i++) - tasks.Add(Task.Run(() => Pdf.From(html).Content())); + tasks.Add(Task.Factory.StartNew(() => Pdf.From(html).Content())); Task.WaitAll(tasks.OfType().ToArray()); diff --git a/OpenHtmlToPdf.Tests/OpenHtmlToPdf.Tests.csproj b/OpenHtmlToPdf.Tests/OpenHtmlToPdf.Tests.csproj index fe005779..72a2dd13 100644 --- a/OpenHtmlToPdf.Tests/OpenHtmlToPdf.Tests.csproj +++ b/OpenHtmlToPdf.Tests/OpenHtmlToPdf.Tests.csproj @@ -8,7 +8,7 @@ Properties OpenHtmlToPdf.Tests OpenHtmlToPdf.Tests - v4.5 + v4.0 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 10.0 @@ -18,6 +18,7 @@ UnitTest ..\ true + true diff --git a/OpenHtmlToPdf.WkHtmlToPdf/App.config b/OpenHtmlToPdf.WkHtmlToPdf/App.config index 8e156463..74ade9db 100644 --- a/OpenHtmlToPdf.WkHtmlToPdf/App.config +++ b/OpenHtmlToPdf.WkHtmlToPdf/App.config @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + diff --git a/OpenHtmlToPdf.WkHtmlToPdf/Assets/ZipArchiveHelper.cs b/OpenHtmlToPdf.WkHtmlToPdf/Assets/ZipArchiveHelper.cs index 86abc08d..ffb55381 100644 --- a/OpenHtmlToPdf.WkHtmlToPdf/Assets/ZipArchiveHelper.cs +++ b/OpenHtmlToPdf.WkHtmlToPdf/Assets/ZipArchiveHelper.cs @@ -1,4 +1,5 @@ -using System.IO; +using Ionic.Zip; +using System.IO; using System.IO.Compression; using System.Linq; @@ -6,18 +7,18 @@ namespace OpenHtmlToPdf.WkHtmlToPdf.Assets { static class ZipArchiveHelper { - public static byte[] ReadFile(this ZipArchive zipArchive, string filename) + public static byte[] ReadFile(this ZipFile zipFile, string filename) { - return zipArchive.Entries - .Where(e => e.FullName == filename) + return zipFile.Entries + .Where(e => e.FileName == filename) .Select(Read).Single(); } - private static byte[] Read(this ZipArchiveEntry zipArchiveEntry) + private static byte[] Read(this ZipEntry zipEntry) { - using (var stream = zipArchiveEntry.Open()) + using (var stream = zipEntry.OpenReader()) { - return stream.Read(zipArchiveEntry.Length); + return stream.Read(zipEntry.UncompressedSize); } } diff --git a/OpenHtmlToPdf.WkHtmlToPdf/OpenHtmlToPdf.WkHtmlToPdf.csproj b/OpenHtmlToPdf.WkHtmlToPdf/OpenHtmlToPdf.WkHtmlToPdf.csproj index fe3c6bed..ee4738b8 100644 --- a/OpenHtmlToPdf.WkHtmlToPdf/OpenHtmlToPdf.WkHtmlToPdf.csproj +++ b/OpenHtmlToPdf.WkHtmlToPdf/OpenHtmlToPdf.WkHtmlToPdf.csproj @@ -9,10 +9,13 @@ Properties OpenHtmlToPdf.WkHtmlToPdf OpenHtmlToPdf.WkHtmlToPdf - v4.5 + v4.0 512 ..\ true + + + AnyCPU @@ -40,9 +43,11 @@ + + ..\packages\DotNetZip.1.13.8\lib\net40\DotNetZip.dll + - @@ -73,6 +78,7 @@ + diff --git a/OpenHtmlToPdf.WkHtmlToPdf/WkHtmlToX/WkHtmlToPdfLibrary.cs b/OpenHtmlToPdf.WkHtmlToPdf/WkHtmlToX/WkHtmlToPdfLibrary.cs index e705caa5..3b39fe80 100644 --- a/OpenHtmlToPdf.WkHtmlToPdf/WkHtmlToX/WkHtmlToPdfLibrary.cs +++ b/OpenHtmlToPdf.WkHtmlToPdf/WkHtmlToX/WkHtmlToPdfLibrary.cs @@ -2,6 +2,7 @@ using System.IO; using System.IO.Compression; using System.Reflection; +using Ionic.Zip; using OpenHtmlToPdf.WkHtmlToPdf.Assets; using OpenHtmlToPdf.WkHtmlToPdf.Interop; @@ -23,15 +24,15 @@ private static byte[] LoadLibraryContent() if (Environment.OSVersion.Platform != PlatformID.Win32NT) throw new PlatformNotSupportedException(String.Format("Platform {0} is not supported", Platform())); - using (var wkhtmltoxZipArchive = WkHtmlToXZipArchive()) + using (var wkhtmltoxZipArchive = WkHtmlToXZipFile()) { return wkhtmltoxZipArchive.ReadFile(CompressedLibraryFilename()); } } - private static ZipArchive WkHtmlToXZipArchive() + private static ZipFile WkHtmlToXZipFile() { - return new ZipArchive(GetManifestResourceStream()); + return ZipFile.Read(GetManifestResourceStream()); } private static Stream GetManifestResourceStream() diff --git a/OpenHtmlToPdf.WkHtmlToPdf/packages.config b/OpenHtmlToPdf.WkHtmlToPdf/packages.config new file mode 100644 index 00000000..ceee4656 --- /dev/null +++ b/OpenHtmlToPdf.WkHtmlToPdf/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/OpenHtmlToPdf/Assets/ConverterExecutable.cs b/OpenHtmlToPdf/Assets/ConverterExecutable.cs index 17a30e9d..f440ef9f 100644 --- a/OpenHtmlToPdf/Assets/ConverterExecutable.cs +++ b/OpenHtmlToPdf/Assets/ConverterExecutable.cs @@ -7,6 +7,7 @@ namespace OpenHtmlToPdf.Assets sealed class ConverterExecutable { private const string ConverterExecutableFilename = "OpenHtmlToPdf.WkHtmlToPdf.exe"; + private const string ConverterExecutableReferenceFilename = "DotNetZip.dll"; private ConverterExecutable() { @@ -21,6 +22,13 @@ public static ConverterExecutable Get() return bundledFile; } + + public string FullConverterExecutableReferenceFilename + { + get { return ResolveFullPathToConverterExecutableReferenceFile(); } + } + + public string FullConverterExecutableFilename { get { return ResolveFullPathToConverterExecutableFile(); } @@ -28,13 +36,17 @@ public string FullConverterExecutableFilename private void CreateIfConverterExecutableDoesNotExist() { + if (!File.Exists(FullConverterExecutableReferenceFilename)) + Create(GetConverterExecutableContent(GetConverterReferenceExecutable()), FullConverterExecutableReferenceFilename); + if (!File.Exists(FullConverterExecutableFilename)) - Create(GetConverterExecutableContent()); + Create(GetConverterExecutableContent(GetConverterExecutable()), FullConverterExecutableFilename); + } - private static byte[] GetConverterExecutableContent() + private static byte[] GetConverterExecutableContent(Stream stream) { - using (var resourceStream = GetConverterExecutable()) + using (var resourceStream = stream) { var resource = new byte[resourceStream.Length]; @@ -44,12 +56,21 @@ private static byte[] GetConverterExecutableContent() } } + + private static Stream GetConverterExecutable() { return Assembly.GetExecutingAssembly().GetManifestResourceStream("OpenHtmlToPdf.Assets.OpenHtmlToPdf.WkHtmlToPdf.exe"); } - private void Create(byte[] fileContent) + private static Stream GetConverterReferenceExecutable() + { + return Assembly.GetExecutingAssembly().GetManifestResourceStream("OpenHtmlToPdf.Assets.DotNetZip.dll"); + } + + + + private void Create(byte[] fileContent, string Name) { try { @@ -57,7 +78,7 @@ private void Create(byte[] fileContent) Directory.CreateDirectory(BundledFilesDirectory()); - using (var file = File.Open(FullConverterExecutableFilename, FileMode.Create)) + using (var file = File.Open(Name, FileMode.Create)) { file.Write(fileContent, 0, fileContent.Length); @@ -73,6 +94,11 @@ private static string ResolveFullPathToConverterExecutableFile() return Path.Combine(BundledFilesDirectory(), ConverterExecutableFilename); } + private static string ResolveFullPathToConverterExecutableReferenceFile() + { + return Path.Combine(BundledFilesDirectory(), ConverterExecutableReferenceFilename); + } + private static string BundledFilesDirectory() { return Path.Combine(Path.GetTempPath(), "OpenHtmlToPdf", Version()); diff --git a/OpenHtmlToPdf/Assets/DotNetZip.dll b/OpenHtmlToPdf/Assets/DotNetZip.dll new file mode 100644 index 00000000..9d1e57ec Binary files /dev/null and b/OpenHtmlToPdf/Assets/DotNetZip.dll differ diff --git a/OpenHtmlToPdf/Assets/OpenHtmlToPdf.WkHtmlToPdf.exe b/OpenHtmlToPdf/Assets/OpenHtmlToPdf.WkHtmlToPdf.exe index f8421b37..c414a010 100644 Binary files a/OpenHtmlToPdf/Assets/OpenHtmlToPdf.WkHtmlToPdf.exe and b/OpenHtmlToPdf/Assets/OpenHtmlToPdf.WkHtmlToPdf.exe differ diff --git a/OpenHtmlToPdf/Key.snk b/OpenHtmlToPdf/Key.snk new file mode 100644 index 00000000..770071cb Binary files /dev/null and b/OpenHtmlToPdf/Key.snk differ diff --git a/OpenHtmlToPdf/OpenHtmlToPdf.csproj b/OpenHtmlToPdf/OpenHtmlToPdf.csproj index 35b4232e..e32040e0 100644 --- a/OpenHtmlToPdf/OpenHtmlToPdf.csproj +++ b/OpenHtmlToPdf/OpenHtmlToPdf.csproj @@ -10,7 +10,7 @@ Properties OpenHtmlToPdf OpenHtmlToPdf - v4.5 + v4.0 512 ..\ true @@ -95,10 +95,15 @@ + + true + + + Key.snk + - @@ -119,9 +124,12 @@ + - + + + diff --git a/OpenHtmlToPdf/Properties/AssemblyInfo.cs b/OpenHtmlToPdf/Properties/AssemblyInfo.cs index 7f45ceb2..8f1565a7 100644 --- a/OpenHtmlToPdf/Properties/AssemblyInfo.cs +++ b/OpenHtmlToPdf/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.12.0")] -[assembly: AssemblyFileVersion("1.12.0")] +[assembly: AssemblyVersion("1.12.1")] +[assembly: AssemblyFileVersion("1.12.1")]