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);
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
        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
        }
Beispiel #5
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        //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;
             *          });
             *      }
             *  }
             * }*/
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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"));
        }
Beispiel #12
0
        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"));
        }