예제 #1
0
        /// <summary>
        /// Attaches the HTML content stored in a document node to
        /// an existing PDF document, using specific converter properties,
        /// and returning an iText
        /// <see cref="iText.Layout.Document"/>
        /// object.
        /// </summary>
        /// <param name="documentNode">the document node with the HTML</param>
        /// <param name="pdfDocument">
        /// the
        /// <see cref="iText.Kernel.Pdf.PdfDocument"/>
        /// instance
        /// </param>
        /// <param name="converterProperties">
        /// the
        /// <see cref="iText.Html2pdf.ConverterProperties"/>
        /// instance
        /// </param>
        /// <returns>
        /// an iText
        /// <see cref="iText.Layout.Document"/>
        /// object
        /// </returns>
        public static Document Attach(IDocumentNode documentNode, PdfDocument pdfDocument, ConverterProperties converterProperties
                                      )
        {
            IHtmlProcessor processor = new DefaultHtmlProcessor(converterProperties);

            return(processor.ProcessDocument(documentNode, pdfDocument));
        }
        private void ConvertToPdfWithCustomRendererAndCompare(String name)
        {
            ConverterProperties properties = new ConverterProperties().SetTagWorkerFactory(new _DefaultTagWorkerFactory_166
                                                                                               ());
            DefaultHtmlProcessor processor = new DefaultHtmlProcessor(properties);
            IXmlParser           parser    = new JsoupHtmlParser();
            String        outPdfPath       = destinationFolder + name + ".pdf";
            PdfDocument   pdfDocument      = new PdfDocument(new PdfWriter(outPdfPath));
            IDocumentNode doc = parser.Parse(new FileStream(sourceFolder + name + ".html", FileMode.Open, FileAccess.Read
                                                            ), properties.GetCharset());
            Document document = processor.ProcessDocument(doc, pdfDocument);

            document.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outPdfPath, sourceFolder + "cmp_" + name
                                                                             + ".pdf", destinationFolder));
        }
예제 #3
0
        /// <summary>
        /// Creates a new
        /// <see cref="HtmlTagWorker"/>
        /// instance.
        /// </summary>
        /// <param name="element">the element</param>
        /// <param name="context">the context</param>
        public HtmlTagWorker(IElementNode element, ProcessorContext context)
        {
            bool        immediateFlush = context.IsImmediateFlush() && !context.GetCssContext().IsPagesCounterPresent();
            PdfDocument pdfDocument    = context.GetPdfDocument();

            document = new Document(pdfDocument, pdfDocument.GetDefaultPageSize(), immediateFlush);
            document.SetRenderer(new HtmlDocumentRenderer(document, immediateFlush));
            DefaultHtmlProcessor.SetConvertedRootElementProperties(element.GetStyles(), context, document);
            inlineHelper = new WaitingInlineElementsHelper(element.GetStyles().Get(CssConstants.WHITE_SPACE), element.
                                                           GetStyles().Get(CssConstants.TEXT_TRANSFORM));
            String lang = element.GetAttribute(AttributeConstants.LANG);

            if (lang != null)
            {
                pdfDocument.GetCatalog().SetLang(new PdfString(lang, PdfEncodings.UNICODE_BIG));
            }
        }
예제 #4
0
        public virtual void BatchConversionTest()
        {
            ConverterProperties properties = new ConverterProperties().SetBaseUri(sourceFolder).SetMediaDeviceDescription
                                                 (new MediaDeviceDescription(MediaType.PRINT));
            FontProvider fontProvider = new DefaultFontProvider(true, false, false);

            fontProvider.AddDirectory(sourceFolder + "fonts/");
            properties.SetFontProvider(fontProvider);
            IHtmlProcessor processor   = new DefaultHtmlProcessor(properties);
            IXmlParser     parser      = new JsoupHtmlParser();
            String         outPdfPath  = destinationFolder + "smashing1.pdf";
            PdfDocument    pdfDocument = new PdfDocument(new PdfWriter(outPdfPath));
            IDocumentNode  doc         = parser.Parse(new FileStream(sourceFolder + "smashing01.html", FileMode.Open, FileAccess.Read
                                                                     ), properties.GetCharset());
            Document document = processor.ProcessDocument(doc, pdfDocument);

            document.Close();
            NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outPdfPath, sourceFolder + "cmp_smashing1.pdf"
                                                                             , destinationFolder, "diff01_"));
        }
 public virtual void DoNotResetFontProviderTest()
 {
     NUnit.Framework.Assert.That(() => {
         FileStream fileInputStream = new FileStream(sourceFolder + "justHelloWorld.html", FileMode.Open, FileAccess.Read
                                                     );
         IXmlParser parser          = new JsoupHtmlParser();
         IDocumentNode documentNode = parser.Parse(fileInputStream, null);
         ConverterProperties converterProperties = new ConverterProperties();
         converterProperties.SetFontProvider(new _DefaultFontProvider_91(false, true, false));
         // Do nothing here. That should result in an exception.
         IHtmlProcessor processor = new DefaultHtmlProcessor(converterProperties);
         Document doc1            = processor.ProcessDocument(documentNode, new PdfDocument(new PdfWriter(new MemoryStream()))
                                                              );
         doc1.Close();
         Document doc2 = processor.ProcessDocument(documentNode, new PdfDocument(new PdfWriter(new MemoryStream()))
                                                   );
         doc2.Close();
         NUnit.Framework.Assert.IsTrue(false, "The test should have failed before that assert, since it's strictly forbidden not to reset the FontProvider instance after each html to pdf conversion."
                                       );
     }
                                 , NUnit.Framework.Throws.InstanceOf <PdfException>())
     ;
 }
예제 #6
0
        /// <summary>
        /// Attaches the HTML content stored in a document node to
        /// a list of
        /// <see cref="iText.Layout.Element.IElement"/>
        /// objects.
        /// </summary>
        /// <param name="documentNode">the document node with the HTML</param>
        /// <param name="converterProperties">
        /// the
        /// <see cref="iText.Html2pdf.ConverterProperties"/>
        /// instance
        /// </param>
        /// <returns>
        /// the list of
        /// <see cref="iText.Layout.Element.IElement"/>
        /// objects
        /// </returns>
        public static IList <IElement> Attach(IDocumentNode documentNode, ConverterProperties converterProperties)
        {
            IHtmlProcessor processor = new DefaultHtmlProcessor(converterProperties);

            return(processor.ProcessElements(documentNode));
        }