private static void GeneratePdf() { IConverter converter = new ThreadSafeConverter( new PdfToolset( new Win32EmbeddedDeployment( new TempFolderDeployment()))); HtmlToPdfDocument doc = new HtmlToPdfDocument() { GlobalSettings = { ProduceOutline = true, DocumentTitle = "Pretty stuff", PaperSize = PaperKind.A4, // Implicit conversion to PechkinPaperSize Margins = { All = 1.375, Unit = Unit.Centimeters } }, Objects = { new ObjectSettings { HtmlText = @"<html style='background-color:gray;'><dir style='color:orange;'>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In consectetur mauris eget ultrices iaculis. Ut odio viverra, molestie lectus nec, venenatis turpis.</div></html>" } } }; byte[] pdf = converter.Convert(doc); ByteArrayToFile("dupa.pdf", pdf); }
public void UnloadsWkhtmltoxWhenAppDomainUnloads() { // arrange var domain = GetAppDomain("testing_unload"); // act domain.DoCallBack(() => { var converter = new ThreadSafeConverter( new RemotingToolset <PdfToolset>( new Win32EmbeddedDeployment( new StaticDeployment(Path.GetTempPath())))); var document = new HtmlToPdfDocument("<p>some html</p>"); converter.Convert(document); }); AppDomain.Unload(domain); // assert Assert.IsFalse(Process .GetCurrentProcess() .Modules .Cast <ProcessModule>() .Any(m => m.ModuleName == "wkhtmltox.dll")); }
static TuesPechkinTests() { Debug.Listeners.Add(new DefaultTraceListener()); toolset = new RemotingToolset<PdfToolset>( new StaticDeployment( Path.Combine( AppDomain.CurrentDomain.BaseDirectory, "wk-ver", TEST_WK_VER))); converter = new ThreadSafeConverter(toolset); }
public void BubblesExceptionsFromSyncedThread() { var toolset = new BogusToolset(); var converter = new ThreadSafeConverter(toolset); try { converter.Convert(Document(StringObject())); Assert.Fail(); } catch (NotImplementedException) { } toolset.Unload(); // Needed for testing framework to succeed }
static TuesPechkinTests() { Debug.Listeners.Add(new DefaultTraceListener()); toolset = new RemotingToolset <PdfToolset>( new StaticDeployment( Path.Combine( AppDomain.CurrentDomain.BaseDirectory, "wk-ver", TEST_WK_VER))); converter = new ThreadSafeConverter(toolset); }
private static void GeneratePdf() { string name = "Przemyslaw Bak"; string company = "Google Inc."; string position = "Senior .Net developer"; List <Project> projects = PopulateProjects(); List <Technology> technologies = PopulateTechs(); IConverter converter = new ThreadSafeConverter( new PdfToolset( new Win32EmbeddedDeployment( new TempFolderDeployment()))); HtmlToPdfDocument doc = new HtmlToPdfDocument() { GlobalSettings = { ProduceOutline = true, DocumentTitle = "Pretty stuff", PaperSize = PaperKind.A4, // Implicit conversion to PechkinPaperSize ImageQuality = 100, UseCompression = true, ColorMode = GlobalSettings.DocumentColorMode.Color, Margins = { Right = 1, Left = 1, Top = 5 } }, Objects = { new ObjectSettings { HtmlText = GetHtml(name, company, position, projects, technologies), WebSettings = { UserStyleSheet = @"file:///C:\Users\asus\Desktop\IT\!!Trials!!\02_APIs\HtmlToPdf_08_TuesPechkin_CV_Spike\HtmlToPdf\bin\Debug\styles.css" }, CountPages = true, FooterSettings ={ FontSize =9, LeftText = "Genereted by: github.com/przemyslawbak/CV_Creator", RightText = "Przemyslaw Bak - Page [page] of [toPage]", UseLineSeparator = true } } } }; byte[] pdf = converter.Convert(doc); ByteArrayToFile("dupa.pdf", pdf); }
public void ConvertsAfterAppDomainRecycles() { // arrange var domain1 = this.GetAppDomain("testing_unload_1"); byte[] result1 = null; var domain2 = this.GetAppDomain("testing_unload_2"); byte[] result2 = null; CrossAppDomainDelegate callback = () => { var dllPath = AppDomain.CurrentDomain.GetData("dllpath") as string; var converter = new ThreadSafeConverter( new RemotingToolset <PdfToolset>( new StaticDeployment(dllPath))); var document = new HtmlToPdfDocument { Objects = { new ObjectSettings { PageUrl = "www.google.com" } } }; AppDomain.CurrentDomain.SetData("result", converter.Convert(document)); }; // act domain1.SetData("dllpath", GetDeploymentPath()); domain1.DoCallBack(callback); result1 = domain1.GetData("result") as byte[]; AppDomain.Unload(domain1); domain2.SetData("dllpath", GetDeploymentPath()); domain2.DoCallBack(callback); result2 = domain2.GetData("result") as byte[]; AppDomain.Unload(domain2); // assert Assert.IsNotNull(result1); Assert.IsNotNull(result2); }
//private volatile static Lazy<IConverter> s_imageConverter; public WkHtmlToPdfBundle(string binDirectory) { m_binDirectory = binDirectory; if (s_pdfConverter == null) { lock (ConverterLock) { if (s_pdfConverter == null) { s_pdfConverter = new Lazy <IConverter>(() => { IConverter converter = new ThreadSafeConverter( new PdfToolset(new BaristaDeployment(m_binDirectory))); return(converter); }); } } } //Toolset locks if multiple instances are created. /*if (s_imageConverter == null) * { * lock (ConverterLock) * { * if (s_imageConverter == null) * { * s_imageConverter = new Lazy<IConverter>(() => * { * IConverter converter = * new ThreadSafeConverter( * new ImageToolset(new BaristaDeployment(m_binDirectory))); * * return converter; * }); * } * } * }*/ }
public void ConvertsAfterAppDomainRecycles() { // arrange var domain1 = this.GetAppDomain("testing_unload_1"); byte[] result1 = null; var domain2 = this.GetAppDomain("testing_unload_2"); byte[] result2 = null; CrossAppDomainDelegate callback = () => { var dllPath = AppDomain.CurrentDomain.GetData("dllpath") as string; var converter = new ThreadSafeConverter( new RemotingToolset<PdfToolset>( new StaticDeployment(dllPath))); var document = new HtmlToPdfDocument { Objects = { new ObjectSettings { PageUrl = "www.google.com" } } }; AppDomain.CurrentDomain.SetData("result", converter.Convert(document)); }; // act domain1.SetData("dllpath", GetDeploymentPath()); domain1.DoCallBack(callback); result1 = domain1.GetData("result") as byte[]; AppDomain.Unload(domain1); domain2.SetData("dllpath", GetDeploymentPath()); domain2.DoCallBack(callback); result2 = domain2.GetData("result") as byte[]; AppDomain.Unload(domain2); // assert Assert.IsNotNull(result1); Assert.IsNotNull(result2); }
public ActionResult HtmlToPdf(Guid uid) { Resume resume = NullUserDataSvc.GetByID(uid).Resumes.FirstOrDefault(); if (string.IsNullOrEmpty(resume.Html)) { return(Content("简历为空")); } var document = new HtmlToPdfDocument { GlobalSettings = { ProduceOutline = true, DocumentTitle = "简历", PaperSize = PaperKind.A4, Margins = { All = 1.375, Unit = Unit.Centimeters } }, Objects = { new ObjectSettings { HtmlText = resume.Html, WebSettings = new WebSettings{ DefaultEncoding = "utf-8" } } } }; var tempFolderDeployment = new TempFolderDeployment(); var win32EmbeddedDeployment = new Win32EmbeddedDeployment(tempFolderDeployment); var remotingToolset = new RemotingToolset <PdfToolset>(win32EmbeddedDeployment); var converter = new ThreadSafeConverter(remotingToolset); byte[] pdfBuf = converter.Convert(document); remotingToolset.Unload(); return(File(pdfBuf, "application/pdf", "简历.pdf")); }
public void UnloadsWkhtmltoxWhenAppDomainUnloads() { // arrange var domain = GetAppDomain("testing_unload"); // act domain.DoCallBack(() => { var converter = new ThreadSafeConverter( new RemotingToolset<PdfToolset>( new Win32EmbeddedDeployment( new StaticDeployment(Path.GetTempPath())))); var document = new HtmlToPdfDocument("<p>some html</p>"); converter.Convert(document); }); AppDomain.Unload(domain); // assert Assert.IsFalse(Process .GetCurrentProcess() .Modules .Cast<ProcessModule>() .Any(m => m.ModuleName == "wkhtmltox.dll")); }