Form1.cs
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