Regardless of whether you are an expert or entry-level developer, you will find PDF.co Web API as a helpful tool in simplifying various programming tasks you have in C# such as converting PDF to Excel format. And since PDF.co Web API is a RESTful API, it is highly adaptive to other programming languages as well.
PDF.co Web API is also designed to assist coders in streamlining the process of various tasks such as merging or splitting PDFs, editing and reformatting documents, and extracting data from PDF. It can also be utilized in barcode generation and in reading barcodes from scanned documents, images, and PDF documents. It also has an OCR built into it and the required facility for acute image recognition.
In the interest of allowing you to test PDF.co Web API capability, we prepared a sample code that you can merely copy and paste to your C# application. It will help you save a lot of time and energy from writing and testing code, and you will be delighted to see how you can convert PDF to Excel easier and faster.
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Net;
using System.Text;
using System.Windows.Forms;
namespace PdfToExcelFrom
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
#region File Selection
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
txtInputPDFFileName.Text = openFileDialog1.FileName;
}
private void btnSelectInputFile_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
#endregion
#region Convert PDF to Excel
/// <summary>
/// Perform convert PDF to Excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnConvert_Click(object sender, EventArgs e)
{
try
{
if (ValidateInputs())
{
// Comma-separated list of page indices (or ranges) to process. Leave empty for all pages. Example: '0,2-5,7-'.
const string Pages = "";
// PDF document password. Leave empty for unprotected documents.
const string Password = "";
// Checks whether convert to as inline content.
bool isInline = Convert.ToString(cmbOutputAs.SelectedItem).ToLower() == "inline content";
// Destination file name
string DestinationFile = string.Format(@".\{0}.{1}",
Path.GetFileNameWithoutExtension(txtInputPDFFileName.Text),
Convert.ToString(cmbConvertTo.SelectedItem).ToLower());
// Create standard .NET web client instance
WebClient webClient = new WebClient();
// Set API Key
webClient.Headers.Add("x-api-key", txtCloudAPIKey.Text.Trim());
// 1. RETRIEVE THE PRESIGNED URL TO UPLOAD THE FILE.
// * If you already have a direct file URL, skip to the step 3.
// Prepare URL for `Get Presigned URL` API call
string query = Uri.EscapeUriString(string.Format(
"https://api.pdf.co/v1/file/upload/get-presigned-url?contenttype=application/octet-stream&name={0}",
Path.GetFileName(txtInputPDFFileName.Text)));
// Execute request
string response = webClient.DownloadString(query);
// Parse JSON response
JObject json = JObject.Parse(response);
if (json["error"].ToObject<bool>() == false)
{
// Get URL to use for the file upload
string uploadUrl = json["presignedUrl"].ToString();
string uploadedFileUrl = json["url"].ToString();
// 2. UPLOAD THE FILE TO CLOUD.
webClient.Headers.Add("content-type", "application/octet-stream");
webClient.UploadFile(uploadUrl, "PUT", txtInputPDFFileName.Text); // You can use UploadData() instead if your file is byte[] or Stream
webClient.Headers.Remove("content-type");
// 3. CONVERT UPLOADED PDF FILE TO Excel
// Prepare URL for `PDF To Excel` API call
query = Uri.EscapeUriString(string.Format(
"https://api.pdf.co/v1/pdf/convert/to/{4}?name={0}&password={1}&pages={2}&url={3}&encrypt=true&inline={5}",
Path.GetFileName(DestinationFile),
Password,
Pages,
uploadedFileUrl,
Convert.ToString(cmbConvertTo.SelectedItem).ToLower(),
isInline));
// Execute request
response = webClient.DownloadString(query);
// Parse JSON response
json = JObject.Parse(response);
if (json["error"].ToObject<bool>() == false)
{
// Get URL of generated Excel file
string resultFileUrl = json["url"].ToString();
// Download Excel output file
webClient.DownloadFile(resultFileUrl, DestinationFile);
MessageBox.Show($"Generated XLS file saved as {DestinationFile} file.", "Success!");
// Open Downloaded output file
Process.Start(DestinationFile);
}
else
{
MessageBox.Show(json["message"].ToString());
}
}
else
{
MessageBox.Show(json["message"].ToString());
}
webClient.Dispose();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
}
/// <summary>
/// Validates form inputs
/// </summary>
/// <returns></returns>
private bool ValidateInputs()
{
if (string.IsNullOrEmpty(txtCloudAPIKey.Text))
{
throw new Exception("Cloud API key cannot be empty");
}
if (string.IsNullOrEmpty(txtInputPDFFileName.Text))
{
throw new Exception("Input PDf file must be selected/entered.");
}
if (!System.IO.File.Exists(txtInputPDFFileName.Text))
{
throw new Exception("Input file does not exits.");
}
if (System.IO.Path.GetExtension(txtInputPDFFileName.Text).ToLower() != ".pdf")
{
throw new Exception("Input file must be PDF");
}
if (string.IsNullOrEmpty(Convert.ToString(cmbConvertTo.SelectedItem)))
{
throw new Exception("Please select convert to option.");
}
if (string.IsNullOrEmpty(Convert.ToString(cmbOutputAs.SelectedItem)))
{
throw new Exception("Please select output-as option");
}
return true;
}
#endregion
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace PdfToExcelFrom
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Click here to get your Free Trial version of the SDK
IMPORTANT:
Cloud API is deprecated and was replaced with more powerful and secure www.PDF.co Web API
CLICK HERE
TO LEARN MORE
ABOUT NEW
www.PDF.co
w/ Web API
On-Premise API Server
Cloud API Server