public void ManipulatePdf(string htmlSource, string pdfDest, string resourceLoc, PageSize pageSize, float screenWidth) { PdfWriter writer = new PdfWriter(pdfDest); PdfDocument pdfDoc = new PdfDocument(writer); // Set the result to be tagged pdfDoc.SetTagged(); pdfDoc.SetDefaultPageSize(pageSize); ConverterProperties converterProperties = new ConverterProperties(); // Set media device description details MediaDeviceDescription mediaDescription = new MediaDeviceDescription(MediaType.SCREEN); mediaDescription.SetWidth(screenWidth); converterProperties.SetMediaDeviceDescription(mediaDescription); FontProvider fp = new DefaultFontProvider(); // Register external font directory fp.AddDirectory(resourceLoc); converterProperties.SetFontProvider(fp); // Base URI is required to resolve the path to source files converterProperties.SetBaseUri(resourceLoc); // Create acroforms from text and button input fields converterProperties.SetCreateAcroForm(true); HtmlConverter.ConvertToPdf(new FileStream(htmlSource, FileMode.Open, FileAccess.Read, FileShare.Read), pdfDoc, converterProperties); pdfDoc.Close(); }
/// <summary> /// Creates the PDF file. /// </summary> /// <param name="url">the URL object for the web page</param> /// <param name="dest">the path to the resulting PDF</param> public void CreatePdf(Uri url, String dest) { PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); PageSize pageSize = new PageSize(850, 1700); pdf.SetDefaultPageSize(pageSize); ConverterProperties properties = new ConverterProperties(); MediaDeviceDescription mediaDeviceDescription = new MediaDeviceDescription(MediaType.SCREEN); mediaDeviceDescription.SetWidth(pageSize.GetWidth()); properties.SetMediaDeviceDescription(mediaDeviceDescription); ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); HtmlConverter.ConvertToPdf(httpResponse.GetResponseStream(), pdf, properties); }
/// <summary> /// Creates the PDF file. /// </summary> /// <param name="baseUri">the base URI</param> /// <param name="src">the path to the source HTML file</param> /// <param name="dest">the path to the resulting PDF</param> public void CreatePdf(String baseUri, String src, String dest) { PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); pdf.SetTagged(); PageSize pageSize = new PageSize(440, 2000); pdf.SetDefaultPageSize(pageSize); ConverterProperties properties = new ConverterProperties(); properties.SetBaseUri(baseUri); MediaDeviceDescription mediaDeviceDescription = new MediaDeviceDescription(MediaType.SCREEN); mediaDeviceDescription.SetWidth(pageSize.GetWidth()); properties.SetMediaDeviceDescription(mediaDeviceDescription); HtmlConverter.ConvertToPdf(new FileStream(src, FileMode.Open, FileAccess.Read), pdf, properties); }
public virtual void ResponsiveIText() { PageSize[] pageSizes = new PageSize[] { null, new PageSize(PageSize.A3.GetHeight(), PageSize.A4.GetHeight( )), new PageSize(760, PageSize.A4.GetHeight()), new PageSize(PageSize.A5.GetWidth(), PageSize.A4.GetHeight ()) }; String htmlSource = sourceFolder + "responsiveIText.html"; foreach (PageSize pageSize in pageSizes) { float?pxWidth = null; if (pageSize != null) { pxWidth = CssUtils.ParseAbsoluteLength(pageSize.GetWidth().ToString()); } String outName = "responsiveIText" + (pxWidth != null ? "_" + (int)(float)pxWidth : "") + ".pdf"; PdfWriter writer = new PdfWriter(destinationFolder + outName); PdfDocument pdfDoc = new PdfDocument(writer); ConverterProperties converterProperties = new ConverterProperties(); if (pageSize != null) { pdfDoc.SetDefaultPageSize(pageSize); MediaDeviceDescription mediaDescription = new MediaDeviceDescription(MediaType.SCREEN); mediaDescription.SetWidth((float)pxWidth); converterProperties.SetMediaDeviceDescription(mediaDescription); } using (FileStream fileInputStream = new FileStream(htmlSource, FileMode.Open, FileAccess.Read)) { HtmlConverter.ConvertToPdf(fileInputStream, pdfDoc, converterProperties); } pdfDoc.Close(); } foreach (PageSize pageSize in pageSizes) { float?pxWidth = null; if (pageSize != null) { pxWidth = CssUtils.ParseAbsoluteLength(pageSize.GetWidth().ToString()); } String outName = "responsiveIText" + (pxWidth != null ? "_" + (int)(float)pxWidth : "") + ".pdf"; String cmpName = "cmp_" + outName; NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(destinationFolder + outName, sourceFolder + cmpName, destinationFolder, "diffResponsive_")); } }
public virtual void Test02() { String htmlFileName = sourceFolder + "html02.html"; String cssFileName = sourceFolder + "css02.css"; IXmlParser htmlParser = new JsoupHtmlParser(); IDocumentNode document = htmlParser.Parse(new FileStream(htmlFileName, FileMode.Open, FileAccess.Read), "UTF-8" ); CssStyleSheet css = CssStyleSheetParser.Parse(new FileStream(cssFileName, FileMode.Open, FileAccess.Read)); IElementNode element = new JsoupElementNode(((JsoupDocumentNode)document).GetDocument().GetElementsByTag("p" ).First()); MediaDeviceDescription deviceDescription1 = new MediaDeviceDescription(MediaType.PRINT); deviceDescription1.SetWidth(525); MediaDeviceDescription deviceDescription2 = new MediaDeviceDescription(MediaType.HANDHELD); deviceDescription2.SetOrientation("landscape"); IList <CssDeclaration> declarations1 = css.GetCssDeclarations(element, deviceDescription1); IList <CssDeclaration> declarations2 = css.GetCssDeclarations(element, deviceDescription2); NUnit.Framework.Assert.IsTrue(Enumerable.SequenceEqual(declarations1, declarations2)); NUnit.Framework.Assert.AreEqual(1, declarations1.Count); NUnit.Framework.Assert.AreEqual("font-weight: bold", declarations1[0].ToString()); }