Generate PDF with local images from XML with Xamarin.iOS

Generate PDF with local images from XML with Xamarin.iOS

This code sample generates a PDF from XML with an image that is included as resource. Here is the XML:

        <paragraph type="textparagraph">
            <fragment>Hello world</fragment>
        <paragraph type="TallComponents.ResourceImage" path="foopdf.jpg"/>

Note that the type of the image paragraph is <var>TallComponents.ResourceImage</var>. This is a specialization of <samp>TallComponents.PDF.Layout.Paragraphs.Image.</samp> This derived class overrides Compose to change the Image.Path property so that it points to the embedded resource image:

using System;
using System.IO;
using Foundation;
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Paragraphs;

namespace TallComponents
    public class ResourceImage : Image
        protected override void Compose(Document doc)
            base.Path = System.IO.Path.Combine(NSBundle.MainBundle.BundlePath, base.Path);

The following code reads the XML and generates the PDF document:

string bundlePath = NSBundle.MainBundle.BundlePath;
string xmlPath = Path.Combine(bundlePath, WebUtility.UrlEncode(customWebView.Uri));

Document document = new Document();

// convert to PDF and save
string pdfPath = Path.Combine(bundlePath, "out.pdf");
using (FileStream fs = new FileStream(pdfPath, FileMode.Create))

The full code sample displays the generated PDF using UIWebView. It is available on github.