Articles in this section
Category / Section

How to create a PDF file in Xamarin.Android?

3 mins read

PDF (Portable Document Format) is a file format used to display the document with same formatting, independent of application software, hardware, and operating system. Syncfusion Essential PDF is a .NET PDF library used to create, read, and edit PDF documents. Using this library, you can create a PDF document in Xamarin.Android.

Steps to create PDF programmatically:

  1. Create a new C# Xamarin Android application project. Create new Xamarin Android application in visual studio
  2. Select a project template and minimum Android version for the application. Select Xamarin.Android project template and android version
  3. Install the Syncfusion.Xamarin.Pdf NuGet package as a reference to your  .NET Framework applications from NuGet.org. Install nuget packages
  4. In Main.axml, add the new button and define the click event to generate a PDF file.
  1. In Main.axml page, add the following code to add the button.
    <Button
       android:id="@+id/MyButton"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
    />
    

 

  1. In MainActivity.cs file, add the following code to define the click event to generate PDF document.
    protected override void OnCreate(Bundle savedInstanceState)
    {
      base.OnCreate(savedInstanceState);
     
      // Set view from the "main" layout resource
      SetContentView(Resource.Layout.activity_main);
     
      Button button = FindViewById<Button>(Resource.Id.MyButton);
      button.Text = "Create PDF";
      button.Click += OnButtonClicked;
    }
    

 

  1. Include the following namespace in the MainActivity.cs file.
    using Syncfusion.Pdf;
    using Syncfusion.Pdf.Graphics;
    using Syncfusion.Drawing;
    

 

  1. In the click event method (OnButtonClicked), add the following code to create a PDF file and save it in a stream.
    async void OnButtonClicked(object sender, EventArgs e)
    {
      // Create a new PDF document
      PdfDocument document = new PdfDocument();
     
      //Add a page to the document
      PdfPage page = document.Pages.Add();
     
      //Create PDF graphics for a page
      PdfGraphics graphics = page.Graphics;
     
      //Set the standard font
      PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
     
      //Draw the text
      graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));
     
      //Save the document to the stream
      MemoryStream stream = new MemoryStream();
      document.Save(stream);
     
      //Close the document
      document.Close(true);
     
      //Save the stream as a file in the device and invoke it for viewing
      SaveAndroid androidSave = new SaveAndroid();
      await androidSave.SaveAndView("Output.pdf", "application/pdf", stream, this);
    }
    

 

  1. Add the SaveAndroid class to the project, where the stream will be saved to a physical file, and the file can be opened for viewing.

The code for SaveAndroid class is given as follows.

class SaveAndroid
{
  //Method to save document as a file in Android and view the saved document
  public async Task SaveAndView(string fileName, String contentType, MemoryStream stream, AppCompatActivity activity)
  {
    string root = null;
    //Get the root path in android device
    if (Android.OS.Environment.IsExternalStorageEmulated)
    {
      root = Android.OS.Environment.ExternalStorageDirectory.ToString();
    }
    else
        root = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
 
    //Create directory and file 
    Java.IO.File myDir = new Java.IO.File(root + "/Syncfusion");
    myDir.Mkdir();
 
    Java.IO.File file = new Java.IO.File(myDir, fileName);
 
    //Remove if the file exists
    if (file.Exists()) file.Delete();
 
    //Write the stream into the file
    FileOutputStream outs = new FileOutputStream(file);
    outs.Write(stream.ToArray());
 
    outs.Flush();
    outs.Close();
 
    //Invoke the created file for viewing
    if (file.Exists())
    {
      Android.Net.Uri path = Android.Net.Uri.FromFile(file);
      string extension = Android.Webkit.MimeTypeMap.GetFileExtensionFromUrl(Android.Net.Uri.FromFile(file).ToString());
      string mimeType = Android.Webkit.MimeTypeMap.Singleton.GetMimeTypeFromExtension(extension);
      Intent intent = new Intent(Intent.ActionView);
      intent.AddFlags(ActivityFlags.NewTask);
      intent.SetDataAndType(path, mimeType);
      activity.StartActivity(Intent.CreateChooser(intent, "Choose App"));
    }
  }
}

 

  1. Compile and execute the application. This creates a simple PDF document.
    Note:

    To read and write a PDF document in the Android device, the storage permission must be given to the deployed application. To read/write with the external storage location, enable the required permissions in Android Manifest.

 

Give permissions

Download the complete working sample from Create-PDF-file.zip.

Take a moment to peruse the documentation, where you can find other options like drawing right-to-left text and multi-column text,  consuming TrueType fonts, Standard fonts, and CJK fonts. Also, the features like PDF form filling, extract text or images from PDF, and protect PDF documents with code examples.

Refer here to explore the rich set of Syncfusion Essential PDF features.

Note:

Starting with v16.2.0.x, if you reference Syncfusion assemblies from trial setup or from the NuGet feed, include a license key in your projects. Refer to link to learn about generating and registering Syncfusion license key in your application to use the components without trail message.

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied