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:
<document>
<section>
<paragraph type="textparagraph">
<fragment>Hello world</fragment>
</paragraph>
<paragraph type="TallComponents.ResourceImage" path="foopdf.jpg"/>
</section>
</document>
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();
document.Read(xmlPath);
// convert to PDF and save
string pdfPath = Path.Combine(bundlePath, "out.pdf");
using (FileStream fs = new FileStream(pdfPath, FileMode.Create))
{
document.Write(fs);
}
The full code sample displays the generated PDF using UIWebView. It is available on github.