/// <summary> /// Singleton converter, for multi-threaded application /// </summary> /// <returns>Pdf converter</returns> public static IConverter GetConverter() { lock (locker) { if (converter != null) { return(converter); } } var tempFolderDeployment = new TempFolderDeployment(); var winAnyCpuEmbeddedDeployment = new WinAnyCPUEmbeddedDeployment(tempFolderDeployment); IToolset toolSet; if (HostingEnvironment.IsHosted) { toolSet = new RemotingToolset <PdfToolset>(winAnyCpuEmbeddedDeployment); } else { toolSet = new PdfToolset(winAnyCpuEmbeddedDeployment); } return(new ThreadSafeConverter(toolSet)); }
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")); }