private static byte[] ToPdf(string xml) { // create global configuration object GlobalConfig gc = new GlobalConfig(); // set it up using fluent notation gc.SetDocumentTitle("DeadFolder certificate").SetPaperSize(PaperKind.A4Rotated); // create converter IPechkin pechkin = new SynchronizedPechkin(gc); // create document configuration object ObjectConfig oc = new ObjectConfig(); // and set it up using fluent notation too oc.SetCreateExternalLinks(false) .SetPrintBackground(true) .SetFallbackEncoding(Encoding.ASCII) .SetLoadImages(true) .SetIntelligentShrinking(true); //... etc // convert document return pechkin.Convert(oc, xml); }
public ActionResult Index() { var view = ViewEngines.Engines.FindView(ControllerContext, "index", null); FileContentResult actionResult; using (var writer = new StringWriter()) { var context = new ViewContext(ControllerContext, view.View, ViewData, TempData, writer); view.View.Render(context, writer); writer.Flush(); var content = writer.ToString(); var gc = new GlobalConfig(); var converter = new SynchronizedPechkin(gc); var pdfbuf = converter.Convert(content); actionResult = File(pdfbuf, "application/pdf"); } return actionResult; }
private void OnConvertButtonClick(object sender, EventArgs e) { PerformanceCollector pc = new PerformanceCollector("PDF creation"); //PechkinStatic.InitLib(false); pc.FinishAction("Library initialized"); SynchronizedPechkin sc = new SynchronizedPechkin(new GlobalConfig().SetMargins(new Margins(300, 100, 150, 100)) .SetDocumentTitle("Ololo").SetCopyCount(1).SetImageQuality(50) .SetLosslessCompression(true).SetMaxImageDpi(20).SetOutlineGeneration(true).SetOutputDpi(1200).SetPaperOrientation(true) .SetPaperSize(PaperKind.Letter)); pc.FinishAction("Converter created"); sc.Begin += OnScBegin; sc.Error += OnScError; sc.Warning += OnScWarning; sc.PhaseChanged += OnScPhase; sc.ProgressChanged += OnScProgress; sc.Finished += OnScFinished; pc.FinishAction("Event handlers installed"); byte[] buf = sc.Convert(new ObjectConfig(), htmlText.Text); /*sc.Convert(new ObjectConfig().SetPrintBackground(true).SetProxyString("http://localhost:8888") .SetAllowLocalContent(true).SetCreateExternalLinks(false).SetCreateForms(false).SetCreateInternalLinks(false) .SetErrorHandlingType(ObjectConfig.ContentErrorHandlingType.Ignore).SetFallbackEncoding(Encoding.ASCII) .SetIntelligentShrinking(false).SetJavascriptDebugMode(true).SetLoadImages(true).SetMinFontSize(16) .SetRenderDelay(2000).SetRunJavascript(true).SetIncludeInOutline(true).SetZoomFactor(2.2), htmlText.Text);*/ pc.FinishAction("conversion finished"); if (buf == null) { MessageBox.Show("Error converting!"); return; } //for (int i = 0; i < 1000; i++) { buf = sc.Convert(new ObjectConfig(), htmlText.Text); if (buf == null) { MessageBox.Show("Error converting!"); return; } } pc.FinishAction("1 more conversions finished"); try { string fn = Path.GetTempFileName() + ".pdf"; FileStream fs = new FileStream(fn, FileMode.Create); fs.Write(buf, 0, buf.Length); fs.Close(); pc.FinishAction("dumped file to disk"); Process myProcess = new Process(); myProcess.StartInfo.FileName = fn; myProcess.Start(); pc.FinishAction("opened it"); } catch { } pc.ShowInMessageBox(null); }
public static void CreatePdfFromHtml(string htmlFilePath) { var htmlFileInfo = new FileInfo(htmlFilePath); if (!htmlFileInfo.Exists) { throw new FileNotFoundException(htmlFileInfo.FullName); } Debug.Assert(htmlFileInfo.DirectoryName != null, "htmlFileInfo.DirectoryName != null"); var tmpPdfFileInfo = new FileInfo(Path.Combine(htmlFileInfo.DirectoryName, "tmp.pdf")); var pdfOutFileInfo = new FileInfo(GetPdfEquivalentPath(htmlFileInfo.FullName)); var gc = new GlobalConfig(); gc.SetImageQuality(100); gc.SetOutputDpi(96); gc.SetPaperSize(1024, 1123); var oc = new ObjectConfig(); oc.SetLoadImages(true); oc.SetAllowLocalContent(true); oc.SetPrintBackground(true); oc.SetZoomFactor(1.093); oc.SetPageUri(htmlFileInfo.FullName); if (tmpPdfFileInfo.Exists) { tmpPdfFileInfo.Delete(); } IPechkin pechkin = new SynchronizedPechkin(gc); pechkin.Error += (converter, text) => { Console.Out.WriteLine("error " + text); }; pechkin.Warning += (converter, text) => { Console.Out.WriteLine("warning " + text); }; using (var file = File.OpenWrite(tmpPdfFileInfo.FullName)) { var bytes = pechkin.Convert(oc); file.Write(bytes, 0, bytes.Length); } if (pdfOutFileInfo.Exists) { pdfOutFileInfo.Delete(); } CreateDirectories(pdfOutFileInfo.DirectoryName); tmpPdfFileInfo.MoveTo(pdfOutFileInfo.FullName); }