From e9fec71723cb0fce4de3782f57cf9999993151e1 Mon Sep 17 00:00:00 2001 From: Tomas Rutkauskas Date: Wed, 11 Nov 2026 11:18:03 +0200 Subject: [PATCH] Examples: projects for the README's C# tasks and for OCR Adds ConvertDocxToPdf, ConvertHtmlToPdf (an HTML file and an HTML string), ConvertExcelToPdf, ExtractTextFromPdf, CompressPdf (prints the size before and after) and ConvertHtmlToDocx, the "... in C#" tasks of the README that had no example of their own, and OcrPdf with a made-up scanned letter in Examples/TestFiles/scanned.pdf. Each is in ConvertApi.sln, so CI builds and runs it, and is linked from the Tasks table, its README section and the More examples list. Co-Authored-By: Claude Opus 5.5 --- ConvertApi.sln | 49 ++++++++++++++++++ Examples/CompressPdf/CompressPdf.csproj | 18 +++++++ Examples/CompressPdf/Program.cs | 32 ++++++++++++ .../ConvertDocxToPdf/ConvertDocxToPdf.csproj | 18 +++++++ Examples/ConvertDocxToPdf/Program.cs | 27 ++++++++++ .../ConvertExcelToPdf.csproj | 18 +++++++ Examples/ConvertExcelToPdf/Program.cs | 27 ++++++++++ .../ConvertHtmlToDocx.csproj | 18 +++++++ Examples/ConvertHtmlToDocx/Program.cs | 27 ++++++++++ .../ConvertHtmlToPdf/ConvertHtmlToPdf.csproj | 18 +++++++ Examples/ConvertHtmlToPdf/Program.cs | 41 +++++++++++++++ .../ExtractTextFromPdf.csproj | 18 +++++++ Examples/ExtractTextFromPdf/Program.cs | 31 +++++++++++ Examples/OcrPdf/OcrPdf.csproj | 18 +++++++ Examples/OcrPdf/Program.cs | 31 +++++++++++ Examples/TestFiles/scanned.pdf | Bin 0 -> 113069 bytes README.md | 35 ++++++++++--- 17 files changed, 419 insertions(+), 7 deletions(-) create mode 100644 Examples/CompressPdf/CompressPdf.csproj create mode 100644 Examples/CompressPdf/Program.cs create mode 100644 Examples/ConvertDocxToPdf/ConvertDocxToPdf.csproj create mode 100644 Examples/ConvertDocxToPdf/Program.cs create mode 100644 Examples/ConvertExcelToPdf/ConvertExcelToPdf.csproj create mode 100644 Examples/ConvertExcelToPdf/Program.cs create mode 100644 Examples/ConvertHtmlToDocx/ConvertHtmlToDocx.csproj create mode 100644 Examples/ConvertHtmlToDocx/Program.cs create mode 100644 Examples/ConvertHtmlToPdf/ConvertHtmlToPdf.csproj create mode 100644 Examples/ConvertHtmlToPdf/Program.cs create mode 100644 Examples/ExtractTextFromPdf/ExtractTextFromPdf.csproj create mode 100644 Examples/ExtractTextFromPdf/Program.cs create mode 100644 Examples/OcrPdf/OcrPdf.csproj create mode 100644 Examples/OcrPdf/Program.cs create mode 100644 Examples/TestFiles/scanned.pdf diff --git a/ConvertApi.sln b/ConvertApi.sln index 7f8a346..6211cbc 100644 --- a/ConvertApi.sln +++ b/ConvertApi.sln @@ -61,6 +61,20 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConverterCatalogDemo", "Exa EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertApi.Tests", "ConvertApi.Tests\ConvertApi.Tests.csproj", "{2DBDE523-FC5A-4662-A99D-94835F760E20}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CompressPdf", "Examples\CompressPdf\CompressPdf.csproj", "{5D3809FE-B06D-4F83-A027-1BB7EEE3C134}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertDocxToPdf", "Examples\ConvertDocxToPdf\ConvertDocxToPdf.csproj", "{DEC825E7-A38D-4E75-88AF-D7AD4FBD36FF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertExcelToPdf", "Examples\ConvertExcelToPdf\ConvertExcelToPdf.csproj", "{DBA758EF-81D9-40ED-97BF-869EC4476277}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertHtmlToDocx", "Examples\ConvertHtmlToDocx\ConvertHtmlToDocx.csproj", "{645B98F5-DEAB-4FB5-AC9F-711BBA1FF415}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConvertHtmlToPdf", "Examples\ConvertHtmlToPdf\ConvertHtmlToPdf.csproj", "{4744CF43-7156-4D71-A892-2D5262AB4256}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExtractTextFromPdf", "Examples\ExtractTextFromPdf\ExtractTextFromPdf.csproj", "{479DC2EA-FA42-46C7-8D05-9FB41A97C175}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OcrPdf", "Examples\OcrPdf\OcrPdf.csproj", "{535367D2-8EFE-45F3-AB8E-703147F9406B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -159,6 +173,34 @@ Global {2DBDE523-FC5A-4662-A99D-94835F760E20}.Debug|Any CPU.Build.0 = Debug|Any CPU {2DBDE523-FC5A-4662-A99D-94835F760E20}.Release|Any CPU.ActiveCfg = Release|Any CPU {2DBDE523-FC5A-4662-A99D-94835F760E20}.Release|Any CPU.Build.0 = Release|Any CPU + {5D3809FE-B06D-4F83-A027-1BB7EEE3C134}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5D3809FE-B06D-4F83-A027-1BB7EEE3C134}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5D3809FE-B06D-4F83-A027-1BB7EEE3C134}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5D3809FE-B06D-4F83-A027-1BB7EEE3C134}.Release|Any CPU.Build.0 = Release|Any CPU + {DEC825E7-A38D-4E75-88AF-D7AD4FBD36FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DEC825E7-A38D-4E75-88AF-D7AD4FBD36FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DEC825E7-A38D-4E75-88AF-D7AD4FBD36FF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DEC825E7-A38D-4E75-88AF-D7AD4FBD36FF}.Release|Any CPU.Build.0 = Release|Any CPU + {DBA758EF-81D9-40ED-97BF-869EC4476277}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DBA758EF-81D9-40ED-97BF-869EC4476277}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DBA758EF-81D9-40ED-97BF-869EC4476277}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DBA758EF-81D9-40ED-97BF-869EC4476277}.Release|Any CPU.Build.0 = Release|Any CPU + {645B98F5-DEAB-4FB5-AC9F-711BBA1FF415}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {645B98F5-DEAB-4FB5-AC9F-711BBA1FF415}.Debug|Any CPU.Build.0 = Debug|Any CPU + {645B98F5-DEAB-4FB5-AC9F-711BBA1FF415}.Release|Any CPU.ActiveCfg = Release|Any CPU + {645B98F5-DEAB-4FB5-AC9F-711BBA1FF415}.Release|Any CPU.Build.0 = Release|Any CPU + {4744CF43-7156-4D71-A892-2D5262AB4256}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4744CF43-7156-4D71-A892-2D5262AB4256}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4744CF43-7156-4D71-A892-2D5262AB4256}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4744CF43-7156-4D71-A892-2D5262AB4256}.Release|Any CPU.Build.0 = Release|Any CPU + {479DC2EA-FA42-46C7-8D05-9FB41A97C175}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {479DC2EA-FA42-46C7-8D05-9FB41A97C175}.Debug|Any CPU.Build.0 = Debug|Any CPU + {479DC2EA-FA42-46C7-8D05-9FB41A97C175}.Release|Any CPU.ActiveCfg = Release|Any CPU + {479DC2EA-FA42-46C7-8D05-9FB41A97C175}.Release|Any CPU.Build.0 = Release|Any CPU + {535367D2-8EFE-45F3-AB8E-703147F9406B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {535367D2-8EFE-45F3-AB8E-703147F9406B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {535367D2-8EFE-45F3-AB8E-703147F9406B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {535367D2-8EFE-45F3-AB8E-703147F9406B}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -186,6 +228,13 @@ Global {C3C2C6C0-9F6E-4B9F-A6A9-1C0D7E4CB8B1} = {139F9822-4A90-475F-BAA5-F0471A85461B} {5C7E3B2A-0D7B-4D3F-9C64-2EA2F2E0E5C1} = {139F9822-4A90-475F-BAA5-F0471A85461B} {DFEC8F03-E140-488A-B457-59715605F5CA} = {139F9822-4A90-475F-BAA5-F0471A85461B} + {5D3809FE-B06D-4F83-A027-1BB7EEE3C134} = {139F9822-4A90-475F-BAA5-F0471A85461B} + {DEC825E7-A38D-4E75-88AF-D7AD4FBD36FF} = {139F9822-4A90-475F-BAA5-F0471A85461B} + {DBA758EF-81D9-40ED-97BF-869EC4476277} = {139F9822-4A90-475F-BAA5-F0471A85461B} + {645B98F5-DEAB-4FB5-AC9F-711BBA1FF415} = {139F9822-4A90-475F-BAA5-F0471A85461B} + {4744CF43-7156-4D71-A892-2D5262AB4256} = {139F9822-4A90-475F-BAA5-F0471A85461B} + {479DC2EA-FA42-46C7-8D05-9FB41A97C175} = {139F9822-4A90-475F-BAA5-F0471A85461B} + {535367D2-8EFE-45F3-AB8E-703147F9406B} = {139F9822-4A90-475F-BAA5-F0471A85461B} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {337A0F6F-40A9-4993-BF66-05E4E374871F} diff --git a/Examples/CompressPdf/CompressPdf.csproj b/Examples/CompressPdf/CompressPdf.csproj new file mode 100644 index 0000000..5365d39 --- /dev/null +++ b/Examples/CompressPdf/CompressPdf.csproj @@ -0,0 +1,18 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + + + + diff --git a/Examples/CompressPdf/Program.cs b/Examples/CompressPdf/Program.cs new file mode 100644 index 0000000..5d44222 --- /dev/null +++ b/Examples/CompressPdf/Program.cs @@ -0,0 +1,32 @@ +// Compresses a PDF and prints its size before and after. +// The Preset parameter accepts lossless, text, archive, web, ebook and printer. +// https://www.convertapi.com/pdf-to-compress +using ConvertApiDotNet; +using ConvertApiDotNet.Exceptions; + +try +{ + // Get your API token at https://www.convertapi.com/a/authentication + var convertApi = new ConvertApi(Environment.GetEnvironmentVariable("CONVERTAPI_TOKEN")); + + // Sample file from Examples/TestFiles, copied next to the program when it builds + var pdfFile = new FileInfo(Path.Combine(AppContext.BaseDirectory, "TestFiles", "test.pdf")); + + Console.WriteLine("Compressing the PDF..."); + var result = await convertApi.ConvertAsync("pdf", "compress", + new ConvertApiFileParam(pdfFile), + new ConvertApiParam("Preset", "web")); + + var compressed = await result.Files[0].SaveFileAsync(Path.Combine(Path.GetTempPath(), "compressed.pdf")); + + Console.WriteLine($"Before: {pdfFile.Length:N0} bytes"); + Console.WriteLine($"After: {compressed.Length:N0} bytes, {100.0 * compressed.Length / pdfFile.Length:F0}% of the original"); + Console.WriteLine("The compressed PDF saved to " + compressed.FullName); +} +catch (ConvertApiException e) +{ + Console.WriteLine("Status Code: " + e.StatusCode); + Console.WriteLine("Response: " + e.Response); +} + +Console.ReadLine(); diff --git a/Examples/ConvertDocxToPdf/ConvertDocxToPdf.csproj b/Examples/ConvertDocxToPdf/ConvertDocxToPdf.csproj new file mode 100644 index 0000000..eeec83d --- /dev/null +++ b/Examples/ConvertDocxToPdf/ConvertDocxToPdf.csproj @@ -0,0 +1,18 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + + + + diff --git a/Examples/ConvertDocxToPdf/Program.cs b/Examples/ConvertDocxToPdf/Program.cs new file mode 100644 index 0000000..402514b --- /dev/null +++ b/Examples/ConvertDocxToPdf/Program.cs @@ -0,0 +1,27 @@ +// Converts a Word document (DOCX) to PDF. For a DOC file, keep "docx" and pass the DOC file. +// https://www.convertapi.com/docx-to-pdf +using ConvertApiDotNet; +using ConvertApiDotNet.Exceptions; + +try +{ + // Get your API token at https://www.convertapi.com/a/authentication + var convertApi = new ConvertApi(Environment.GetEnvironmentVariable("CONVERTAPI_TOKEN")); + + // Sample file from Examples/TestFiles, copied next to the program when it builds + var wordFile = Path.Combine(AppContext.BaseDirectory, "TestFiles", "test.docx"); + + Console.WriteLine("Converting the Word document to PDF..."); + var result = await convertApi.ConvertAsync("docx", "pdf", + new ConvertApiFileParam(wordFile)); + + var pdf = await result.Files[0].SaveFileAsync(Path.Combine(Path.GetTempPath(), "word-to-pdf.pdf")); + Console.WriteLine("The PDF saved to " + pdf.FullName); +} +catch (ConvertApiException e) +{ + Console.WriteLine("Status Code: " + e.StatusCode); + Console.WriteLine("Response: " + e.Response); +} + +Console.ReadLine(); diff --git a/Examples/ConvertExcelToPdf/ConvertExcelToPdf.csproj b/Examples/ConvertExcelToPdf/ConvertExcelToPdf.csproj new file mode 100644 index 0000000..24b9944 --- /dev/null +++ b/Examples/ConvertExcelToPdf/ConvertExcelToPdf.csproj @@ -0,0 +1,18 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + + + + diff --git a/Examples/ConvertExcelToPdf/Program.cs b/Examples/ConvertExcelToPdf/Program.cs new file mode 100644 index 0000000..c9ab81d --- /dev/null +++ b/Examples/ConvertExcelToPdf/Program.cs @@ -0,0 +1,27 @@ +// Converts an Excel workbook (XLSX or XLS) to PDF. +// https://www.convertapi.com/xlsx-to-pdf +using ConvertApiDotNet; +using ConvertApiDotNet.Exceptions; + +try +{ + // Get your API token at https://www.convertapi.com/a/authentication + var convertApi = new ConvertApi(Environment.GetEnvironmentVariable("CONVERTAPI_TOKEN")); + + // Sample file from Examples/TestFiles, copied next to the program when it builds + var workbook = Path.Combine(AppContext.BaseDirectory, "TestFiles", "test.xlsx"); + + Console.WriteLine("Converting the Excel workbook to PDF..."); + var result = await convertApi.ConvertAsync("xlsx", "pdf", + new ConvertApiFileParam(workbook)); + + var pdf = await result.Files[0].SaveFileAsync(Path.Combine(Path.GetTempPath(), "excel-to-pdf.pdf")); + Console.WriteLine("The PDF saved to " + pdf.FullName); +} +catch (ConvertApiException e) +{ + Console.WriteLine("Status Code: " + e.StatusCode); + Console.WriteLine("Response: " + e.Response); +} + +Console.ReadLine(); diff --git a/Examples/ConvertHtmlToDocx/ConvertHtmlToDocx.csproj b/Examples/ConvertHtmlToDocx/ConvertHtmlToDocx.csproj new file mode 100644 index 0000000..6feb1ad --- /dev/null +++ b/Examples/ConvertHtmlToDocx/ConvertHtmlToDocx.csproj @@ -0,0 +1,18 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + + + + diff --git a/Examples/ConvertHtmlToDocx/Program.cs b/Examples/ConvertHtmlToDocx/Program.cs new file mode 100644 index 0000000..f9793c1 --- /dev/null +++ b/Examples/ConvertHtmlToDocx/Program.cs @@ -0,0 +1,27 @@ +// Converts an HTML file to an editable Word document (DOCX). +// https://www.convertapi.com/html-to-docx +using ConvertApiDotNet; +using ConvertApiDotNet.Exceptions; + +try +{ + // Get your API token at https://www.convertapi.com/a/authentication + var convertApi = new ConvertApi(Environment.GetEnvironmentVariable("CONVERTAPI_TOKEN")); + + // Sample file from Examples/TestFiles, copied next to the program when it builds + var htmlFile = Path.Combine(AppContext.BaseDirectory, "TestFiles", "test.html"); + + Console.WriteLine("Converting the HTML file to a Word document..."); + var result = await convertApi.ConvertAsync("html", "docx", + new ConvertApiFileParam(htmlFile)); + + var docx = await result.Files[0].SaveFileAsync(Path.Combine(Path.GetTempPath(), "html-to-word.docx")); + Console.WriteLine("The Word document saved to " + docx.FullName); +} +catch (ConvertApiException e) +{ + Console.WriteLine("Status Code: " + e.StatusCode); + Console.WriteLine("Response: " + e.Response); +} + +Console.ReadLine(); diff --git a/Examples/ConvertHtmlToPdf/ConvertHtmlToPdf.csproj b/Examples/ConvertHtmlToPdf/ConvertHtmlToPdf.csproj new file mode 100644 index 0000000..6feb1ad --- /dev/null +++ b/Examples/ConvertHtmlToPdf/ConvertHtmlToPdf.csproj @@ -0,0 +1,18 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + + + + diff --git a/Examples/ConvertHtmlToPdf/Program.cs b/Examples/ConvertHtmlToPdf/Program.cs new file mode 100644 index 0000000..0014ef0 --- /dev/null +++ b/Examples/ConvertHtmlToPdf/Program.cs @@ -0,0 +1,41 @@ +// Converts an HTML file, and an HTML string such as an invoice your app builds, to PDF files. +// To convert a web page by its URL, see the ConvertUrlToPdf example. +// https://www.convertapi.com/html-to-pdf +using System.Text; +using ConvertApiDotNet; +using ConvertApiDotNet.Exceptions; + +try +{ + // Get your API token at https://www.convertapi.com/a/authentication + var convertApi = new ConvertApi(Environment.GetEnvironmentVariable("CONVERTAPI_TOKEN")); + + // Sample file from Examples/TestFiles, copied next to the program when it builds. Only the HTML file + // is uploaded, so link images and stylesheets by absolute URL or put them inline. + var htmlFile = Path.Combine(AppContext.BaseDirectory, "TestFiles", "test.html"); + + Console.WriteLine("Converting the HTML file to PDF..."); + var fromFile = await convertApi.ConvertAsync("html", "pdf", + new ConvertApiFileParam(htmlFile), + new ConvertApiParam("PageSize", "a4")); + + var filePdf = await fromFile.Files[0].SaveFileAsync(Path.Combine(Path.GetTempPath(), "html-file.pdf")); + Console.WriteLine("The PDF of the HTML file saved to " + filePdf.FullName); + + // An HTML string is uploaded from memory, under a file name that ends in .html + var html = "

Invoice 1001

Total: 99.00 USD

"; + + Console.WriteLine("Converting the HTML string to PDF..."); + var fromString = await convertApi.ConvertAsync("html", "pdf", + new ConvertApiFileParam(new MemoryStream(Encoding.UTF8.GetBytes(html)), "invoice.html")); + + var stringPdf = await fromString.Files[0].SaveFileAsync(Path.Combine(Path.GetTempPath(), "html-string.pdf")); + Console.WriteLine("The PDF of the HTML string saved to " + stringPdf.FullName); +} +catch (ConvertApiException e) +{ + Console.WriteLine("Status Code: " + e.StatusCode); + Console.WriteLine("Response: " + e.Response); +} + +Console.ReadLine(); diff --git a/Examples/ExtractTextFromPdf/ExtractTextFromPdf.csproj b/Examples/ExtractTextFromPdf/ExtractTextFromPdf.csproj new file mode 100644 index 0000000..5365d39 --- /dev/null +++ b/Examples/ExtractTextFromPdf/ExtractTextFromPdf.csproj @@ -0,0 +1,18 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + + + + diff --git a/Examples/ExtractTextFromPdf/Program.cs b/Examples/ExtractTextFromPdf/Program.cs new file mode 100644 index 0000000..430cde3 --- /dev/null +++ b/Examples/ExtractTextFromPdf/Program.cs @@ -0,0 +1,31 @@ +// Extracts the text of a PDF into a string. Scanned pages are read with OCR when needed. +// https://www.convertapi.com/pdf-to-txt +using ConvertApiDotNet; +using ConvertApiDotNet.Exceptions; + +try +{ + // Get your API token at https://www.convertapi.com/a/authentication + var convertApi = new ConvertApi(Environment.GetEnvironmentVariable("CONVERTAPI_TOKEN")); + + // Sample file from Examples/TestFiles, copied next to the program when it builds + var pdfFile = Path.Combine(AppContext.BaseDirectory, "TestFiles", "test.pdf"); + + Console.WriteLine("Extracting the text of the PDF..."); + var result = await convertApi.ConvertAsync("pdf", "txt", + new ConvertApiFileParam(pdfFile)); + + // Read the text file from the server as a stream, without saving it to disk + using var reader = new StreamReader(await result.Files[0].FileStreamAsync()); + var text = await reader.ReadToEndAsync(); + + Console.WriteLine($"The PDF holds {text.Length} characters of text:"); + Console.WriteLine(text); +} +catch (ConvertApiException e) +{ + Console.WriteLine("Status Code: " + e.StatusCode); + Console.WriteLine("Response: " + e.Response); +} + +Console.ReadLine(); diff --git a/Examples/OcrPdf/OcrPdf.csproj b/Examples/OcrPdf/OcrPdf.csproj new file mode 100644 index 0000000..e24fd58 --- /dev/null +++ b/Examples/OcrPdf/OcrPdf.csproj @@ -0,0 +1,18 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + + + + diff --git a/Examples/OcrPdf/Program.cs b/Examples/OcrPdf/Program.cs new file mode 100644 index 0000000..be37ca5 --- /dev/null +++ b/Examples/OcrPdf/Program.cs @@ -0,0 +1,31 @@ +// Makes a scanned PDF searchable: OCR adds an invisible text layer, so the text can be found, +// selected and copied. Pages that already have text are skipped. +// https://www.convertapi.com/pdf-to-ocr +using ConvertApiDotNet; +using ConvertApiDotNet.Exceptions; + +try +{ + // Get your API token at https://www.convertapi.com/a/authentication + var convertApi = new ConvertApi(Environment.GetEnvironmentVariable("CONVERTAPI_TOKEN")); + + // Sample scan from Examples/TestFiles, copied next to the program when it builds + var scannedPdf = Path.Combine(AppContext.BaseDirectory, "TestFiles", "scanned.pdf"); + + Console.WriteLine("Running OCR on the scanned PDF..."); + var result = await convertApi.ConvertAsync("pdf", "ocr", + new ConvertApiFileParam(scannedPdf), + // The language of the text, such as "de" or "es". If text is missed, for example in tables or + // low-quality scans, also pass new ConvertApiParam("OcrQuality", "enhanced"): slower, but it reads more. + new ConvertApiParam("OcrLanguage", "en")); + + var searchable = await result.Files[0].SaveFileAsync(Path.Combine(Path.GetTempPath(), "searchable.pdf")); + Console.WriteLine("The searchable PDF saved to " + searchable.FullName); +} +catch (ConvertApiException e) +{ + Console.WriteLine("Status Code: " + e.StatusCode); + Console.WriteLine("Response: " + e.Response); +} + +Console.ReadLine(); diff --git a/Examples/TestFiles/scanned.pdf b/Examples/TestFiles/scanned.pdf new file mode 100644 index 0000000000000000000000000000000000000000..62f4736cb115f91603e48dbf76d096173141c088 GIT binary patch literal 113069 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 F{1-9i8W literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 82a89c4..a171716 100644 --- a/README.md +++ b/README.md @@ -69,15 +69,15 @@ Each task links to its C# code in this README and, where there is one, to a comp | Task | Example project | |---|---| -| [Convert Word (DOCX) to PDF](#convert-word-docx-to-pdf-in-c) | [ConvertWordToPdfAndPng](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertWordToPdfAndPng/Program.cs) | -| [Convert HTML to PDF: a file, a string or a web page](#convert-html-to-pdf-in-c) | [FromStreamToStream](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/FromStreamToStream/Program.cs), [ConvertUrlToPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertUrlToPdf/Program.cs) | -| [Convert Excel (XLSX) to PDF](#convert-excel-to-pdf-in-c) | | +| [Convert Word (DOCX) to PDF](#convert-word-docx-to-pdf-in-c) | [ConvertDocxToPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertDocxToPdf/Program.cs), [ConvertWordToPdfAndPng](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertWordToPdfAndPng/Program.cs) | +| [Convert HTML to PDF: a file, a string or a web page](#convert-html-to-pdf-in-c) | [ConvertHtmlToPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertHtmlToPdf/Program.cs), [FromStreamToStream](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/FromStreamToStream/Program.cs), [ConvertUrlToPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertUrlToPdf/Program.cs) | +| [Convert Excel (XLSX) to PDF](#convert-excel-to-pdf-in-c) | [ConvertExcelToPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertExcelToPdf/Program.cs) | | [Convert PDF to Word (DOCX)](#convert-pdf-to-word-in-c) | [ConvertPdfToDocx](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertPdfToDocx/Program.cs) | | [Convert PDF to JPG or PNG](#convert-pdf-to-jpg-or-png-in-c) | [CreatePdfThumbnail](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/CreatePdfThumbnail/Program.cs) | -| [Extract text from PDF](#extract-text-from-pdf-in-c) | | -| [OCR a scanned PDF to make it searchable](#ocr-a-scanned-pdf-in-c) | | -| [Compress PDF](#compress-pdf-in-c) | | -| [Convert HTML to Word (DOCX)](#convert-html-to-docx-in-c) | | +| [Extract text from PDF](#extract-text-from-pdf-in-c) | [ExtractTextFromPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ExtractTextFromPdf/Program.cs) | +| [OCR a scanned PDF to make it searchable](#ocr-a-scanned-pdf-in-c) | [OcrPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/OcrPdf/Program.cs) | +| [Compress PDF](#compress-pdf-in-c) | [CompressPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/CompressPdf/Program.cs) | +| [Convert HTML to Word (DOCX)](#convert-html-to-docx-in-c) | [ConvertHtmlToDocx](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertHtmlToDocx/Program.cs) | | [Convert PowerPoint (PPTX) to PDF](#powerpoint-to-pdf) | [ConvertRemoteFile](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertRemoteFile/Program.cs) | | [Convert an image to PDF](#image-to-pdf) | | | [Combine images into one PDF](#combine-images-into-one-pdf) | | @@ -157,6 +157,8 @@ await result.SaveFilesAsync("output"); The PDF is saved as `output/document.pdf`. For plain text or HTML, use `"txt"` or `"html"` in place of `"pdf"`. +Example project: [ConvertDocxToPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertDocxToPdf/Program.cs) + ### Convert HTML to PDF in C# Convert an HTML file to PDF. Only the HTML file is uploaded, so link images and stylesheets by absolute URL or put them inline. @@ -198,6 +200,8 @@ Directory.CreateDirectory("output"); await result.SaveFilesAsync("output"); ``` +Example projects: [ConvertHtmlToPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertHtmlToPdf/Program.cs) for an HTML file and an HTML string, [ConvertUrlToPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertUrlToPdf/Program.cs) for a web page + ### Convert Excel to PDF in C# Convert an Excel workbook (XLSX or XLS) to PDF: @@ -214,6 +218,8 @@ await result.SaveFilesAsync("output"); To save each worksheet as a CSV file, use `"csv"` in place of `"pdf"`. +Example project: [ConvertExcelToPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertExcelToPdf/Program.cs) + ### Convert PDF to Word in C# Convert a PDF to an editable Word document (DOCX): @@ -260,6 +266,8 @@ var text = await reader.ReadToEndAsync(); Console.WriteLine(text); ``` +Example project: [ExtractTextFromPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ExtractTextFromPdf/Program.cs) + ### OCR a scanned PDF in C# Make a scanned PDF searchable. OCR adds an invisible text layer, so the text can be found, selected and copied; pages that already have text are skipped. `OcrLanguage` is the language of the text, such as `de` or `es`. The [PDF OCR page](https://www.convertapi.com/pdf-to-ocr) lists all languages. @@ -277,6 +285,8 @@ await result.SaveFilesAsync("output"); The searchable PDF is saved as `output/scanned.pdf`. If text is missed, for example in tables, low-quality scans, photos or small print, add `new ConvertApiParam("OcrQuality", "enhanced")`: it is slower but reads more. +Example project: [OcrPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/OcrPdf/Program.cs) + ### Compress PDF in C# Make a PDF smaller. The `Preset` parameter accepts `lossless`, `text`, `archive`, `web`, `ebook` and `printer`. @@ -292,6 +302,8 @@ Directory.CreateDirectory("output"); await result.SaveFilesAsync("output"); ``` +Example project: [CompressPdf](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/CompressPdf/Program.cs) + ### Convert HTML to DOCX in C# Convert an HTML file to an editable Word document: @@ -306,6 +318,8 @@ Directory.CreateDirectory("output"); await result.SaveFilesAsync("output"); ``` +Example project: [ConvertHtmlToDocx](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertHtmlToDocx/Program.cs) + ### More conversions and PDF tools Every other format pair works the same way: pass its source and target format to `ConvertAsync`. All formats and conversions are listed in the [API reference](https://www.convertapi.com/api). @@ -964,6 +978,11 @@ Console.WriteLine($"Conversions used: {user.ConversionsConsumed} of {user.Conver Each example is a complete console project in the `Examples` folder of this repository. To run one, set the `CONVERTAPI_TOKEN` environment variable and follow the steps in [Examples/README.md](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/README.md). +- [CompressPdf/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/CompressPdf/Program.cs) - Compress a PDF and print its size before and after +- [ConvertDocxToPdf/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertDocxToPdf/Program.cs) - Convert a Word DOCX document to PDF +- [ConvertExcelToPdf/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertExcelToPdf/Program.cs) - Convert an Excel XLSX workbook to PDF +- [ConvertHtmlToDocx/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertHtmlToDocx/Program.cs) - Convert an HTML file to an editable Word DOCX document +- [ConvertHtmlToPdf/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertHtmlToPdf/Program.cs) - Convert an HTML file and an HTML string to PDF - [ConvertPdfToDocx/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertPdfToDocx/Program.cs) - Convert a PDF to an editable Word DOCX document - [ConvertPdfToPdfA/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertPdfToPdfA/Program.cs) - Convert a PDF to PDF/A with an embedded invoice XML - [ConvertPdfToPptx/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ConvertPdfToPptx/Program.cs) - Convert a PDF to a PowerPoint PPTX presentation @@ -975,10 +994,12 @@ Each example is a complete console project in the `Examples` folder of this repo - [CreatePdfThumbnail/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/CreatePdfThumbnail/Program.cs) - Turn the first page of a PDF into a JPG thumbnail - [DeleteFiles/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/DeleteFiles/Program.cs) - Delete the uploaded and result files from the server after a conversion - [ExceptionHandling/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ExceptionHandling/Program.cs) - Catch a ConvertAPI exception and print its status code and response +- [ExtractTextFromPdf/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/ExtractTextFromPdf/Program.cs) - Extract the text of a PDF into a string - [FromStreamToStream/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/FromStreamToStream/Program.cs) - Convert HTML from a string stream and get the PDF back as a stream - [GetConverterInfoDemo/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/GetConverterInfoDemo/Program.cs) - Read a converter's accepted formats and parameters, for example to build a dynamic UI - [HandleRetry/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/HandleRetry/Program.cs) - Retry a conversion when the service returns 503 (service unavailable) - [MergeWordDocsToPdf/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/MergeWordDocsToPdf/Program.cs) - Convert Word and PowerPoint files to PDF and merge them into one PDF +- [OcrPdf/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/OcrPdf/Program.cs) - Make a scanned PDF searchable with OCR - [RetrieveUserInformation/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/RetrieveUserInformation/Program.cs) - Retrieve your ConvertAPI account information - [SplitAndMergePdf/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/SplitAndMergePdf/Program.cs) - Split a PDF and merge its first and last pages into a new PDF - [SplitPDF/Program.cs](https://github.com/ConvertAPI/convertapi-library-dotnet/blob/main/Examples/SplitPDF/Program.cs) - Split a PDF by bookmarks, page patterns, text and page ranges