COMPARAISON AVEC D'AUTRES COMPOSANTS

Comparaison entre IronOCR et PDFTRON OCR

Publié septembre 5, 2022
Partager:

OCR signifie "Optical Character Recognition" (reconnaissance optique de caractères). Il s'agit du processus de conversion de documents papier ou d'images en texte lisible. Il existe plusieurs méthodes pour y parvenir, comme le balayage ou la saisie manuelle à l'aide d'un clavier. Cette opération permet de convertir les fichiers numérisés, les PDF ou les documents manuscrits dans leur format texte d'origine. Ce processus s'est avéré inestimable dans les affaires pénales où les documents sont trop endommagés pour une transcription manuelle, mais peuvent être scannés et interprétés par un logiciel OCR.

Avec les progrès de la technologie et l'adoption omniprésente des outils numériques, l'OCR a également été mise en œuvre dans d'autres domaines tels que la conversion de documents sur des applications comme Google Docs, ainsi que dans les universités et le monde de l'entreprise. Il existe deux principaux types d'OCR : "statique" et "dynamique". Le type le plus courant est l'OCR statique, dans lequel le document entier est scanné en une seule fois. L'OCR dynamique, quant à lui, scanne une ligne à la fois et peut traiter des mises en page plus sophistiquées telles que des données tabulaires.

Cet article présente une comparaison entre deux des applications et bibliothèques de documents les plus répandues pour l'OCR et le PDF. Il s'agit de

  • PDFTron OCR
  • IronOCR

1.0 Introduction

1.1 Introduction et caractéristiques de PDFTron OCR

Pour utiliser l'OCR avec PDFTron SDK, nous devons installer un utilitaire complémentaire séparé pour le module OCR. Cela permet au SDK de détecter du texte dans les documents. Il peut rendre le texte sélectionnable et consultable. Le SDK PDFTron prend en charge jusqu'à 100 langues. Le moteur d'OCR de PDFTron s'appuie sur un réseau neuronal LSTM open-source de Tesseract. PDFTron OCR prend en charge plusieurs types d'images et de formats pour la détection de texte. Les fichiers PDF contenant uniquement des images matricielles sont également acceptés pour l'OCR, la qualité de sortie dépendant de l'image d'entrée. Les meilleures images pour l'OCR sont les images en niveaux de gris avec une résolution de 300 DPI.

Les caractéristiques de PDFTron OCR

  • Rendre les images consultables dans les documents imprimés.
  • Conversion d'un simple PDF en un PDF interrogeable.
  • Détection des informations importantes dans les documents commerciaux.
  • Faciliter la numérisation des livres.
  • Détection de numéros de véhicules à partir d'images de véhicules.
  • Aider les utilisateurs malvoyants.
  • Il devient facile de saisir des données dans plusieurs documents à partir de fichiers grâce à l'OCR.
  • Transférez facilement les informations des cartes de visite vers les listes de contacts.

1.2 IronOCR &#8212 ; Introduction et caractéristiques

Iron Software propose aux ingénieurs logiciels IronOCR for .NET pour lire le contenu textuel des photos et des PDF dans les applications et les sites Web .NET. Le logiciel permet de numériser des photos pour en extraire du texte et des codes-barres, prend en charge de nombreuses langues internationales et produit des sorties sous forme de texte brut ou de données structurées. La bibliothèque OCR d'Iron Software peut être utilisée dans les applications Web, console, MVC et de nombreuses applications de bureau .NET. Dans le cas d'un déploiement commercial, l'assistance directe de l'équipe de développement est fournie en même temps que les licences achetées.

  • IronOCR utilise le dernier moteur Tesseract 5 qui lit le texte, les codes QR et les codes-barres, à partir de n'importe quel format PDF ou. Cette bibliothèque permet d'ajouter l'OCR au bureau, aux applications web et à la console, ce qui garantit une intégration rapide.
  • IronOCR prend en charge 127 langues internationales. Il prend également en charge les langues et les listes de mots personnalisées.
  • IronOCR peut lire plus de 20 formats de codes-barres et de codes QR.
  • Prend en charge les formats d'image GIF et TIFF multipages.
  • Corrige les numérisations et les images de mauvaise qualité.
  • Supporte le multithreading. Il peut exécuter un ou plusieurs processus à la fois.
  • IronOCR peut fournir une sortie de données structurées en pages, paragraphes, lignes, mots, caractères, etc.
  • IronOCR prend en charge les systèmes d'exploitation tels que Windows, Linux, macOS, etc.

2. Création d'un nouveau projet dans Visual Studio

Ouvrez Visual Studio et accédez au menu Fichier. Sélectionnez un nouveau projet, puis une application console. Pour générer des documents PDF, nous utiliserons dans cet article l'application console.

Pdftron Ocr Alternatives 1 related to 2. Création d'un nouveau projet dans Visual Studio

Saisissez le nom du projet et sélectionnez le chemin d'accès au fichier dans la zone de texte appropriée. Cliquez ensuite sur le bouton Créer. Sélectionnez également le Framework .NET requis.

Le projet Visual Studio va maintenant générer la structure de l'application sélectionnée.

La structure du projet est maintenant générée par Visual Studio. Le fichier program.cs s'ouvrira si vous avez sélectionné l'application Windows, console ou web, afin que vous puissiez saisir le code et construire/exécuter votre application.

Pdftron Ocr Alternatives 2 related to 2. Création d'un nouveau projet dans Visual Studio

Pour l'étape suivante, nous devons ajouter la bibliothèque pour tester le code.

3.0 Installer

3.1 Installer PDFtron OCR

L'installation de PDFTron OCR se fait manuellement et peut être téléchargée sous forme de fichier zip à partir du lien suivant lien. Décompressez-le et configurez-le avec le projet. Ce guide vous aidera à exécuter des échantillons PDFTron à l'aide de la version d'essai intégrée gratuite du SDK PDFTron dans une application .NET Framework sous Windows. L'assistance des ingénieurs de la solution et l'utilisation illimitée de la version d'essai sont incluses dans la version d'essai gratuite.

Conditions préalables

Visual Studio: Assurez-vous que la charge de travail .NET Desktop Development et .NET Framework 4.5.1+ development tools fait partie de votre installation. Ce guide utilisera Visual Studio 2017 et la bibliothèque PDF C# .NET de PDFTron pour Windows. Téléchargez la bibliothèque en utilisant ce lien, .NET PDF SDK Télécharger.

Configuration initiale

Extrayez le dossier du fichier .zip. PDFNET_BASE est utilisé dans ce guide pour sélectionner le chemin d'accès au dossier que vous avez extrait.

PDFNET_BASE = path/to/extraction/folder/PDFNetDotNet4/
PDFNET_BASE = path/to/extraction/folder/PDFNetDotNet4/
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PDFNET_BASE = path/@to/extraction/folder/PDFNetDotNet4/
VB   C#

Exécuter les échantillons

Naviguez jusqu'à l'emplacement du contenu extrait. Recherchez et entrez dans le dossier Samples(PDFNET_BASE/Echantillons). Ce dossier contient de nombreux exemples de codes pour les fonctionnalités prises en charge par le SDK PDFTron.

  1. Ouvrez Samples_20XX.sln dans Visual Studio. Choisissez une version appropriée pour votre installation de Visual Studio.

  2. Sélectionnez l'exemple de code et le définir comme projet de démarrage pour la solution.

  3. Exécuter le projet.

Intégrer dans votre application

Il s'agit de l'application "PDFTron Hello World". Il est facile d'intégrer le reste du SDK PDFTron si vous pouvez ouvrir, enregistrer et fermer un document PDF.

  1. Dans Visual Studio, créez un projet d'application console Framework .NET dans la langue de votre choix. Vous les trouverez dans la catégorie Visual C# ou Visual Basic.

  2. Naviguez dans le dossier de votre projet. Par défaut, le chemin d'accès doit être similaire à : C:/Users/User_Name/source/repos/myApp

  3. De PDFNET_BASE au dossier de votre projet(ce dossier contiendra votre fichier .csproj ou .vbproj)copier le dossier Lib.

  4. Recherchez l'explorateur de solutions sur le côté droit. Sélectionnez l'option Ajouter une référence en cliquant avec le bouton droit de la souris sur Références. La boîte de dialogue du gestionnaire de référence s'ouvre.

  5. En bas de la boîte de dialogue, sélectionnez Parcourir. Localisez le dossier Lib copié pour ajouter PDFNetLoader.dll aux références

  6. En outre, dans le dossier x86, ajoutez la version appropriée de PDFNet.dll comme autre référence(path/to/your/project/folder/Lib/PDFNet/x86/PDFNet.dll). Cela permettra à l'application de fonctionner sur les systèmes d'exploitation 32 bits et 64 bits.

  7. Cliquez sur PDFNet.dll. Veillez à ce que la propriété Copy Local soit définie sur False.
    Pdftron Ocr Alternatives 3 related to Intégrer dans votre application

3.2 Installer IronOCR

La bibliothèque IronOCR peut être installée de quatre façons.

Il s'agit de

  • Utilisation de Visual Studio.
  • Utilisation de la ligne de commande de Visual Studio.
  • Téléchargement direct depuis le site NuGet.
  • Téléchargement direct depuis le site web d'IronPDF.

3.2.1 Utilisation de Visual Studio

Le logiciel Visual Studio propose l'option NuGet Package Manager pour installer le paquet directement dans la solution. La capture d'écran montre comment ouvrir le gestionnaire de paquets NuGet.

Pdftron Ocr Alternatives 4 related to 3.2.1 Utilisation de Visual Studio

Ceci fournira une boîte de recherche pour afficher la liste des paquets du site web de NuGet. Dans le gestionnaire de paquets, nous devons rechercher le mot-clé "IronOCR", comme dans la capture d'écran ci-dessous :

Pdftron Ocr Alternatives 5 related to 3.2.1 Utilisation de Visual Studio

Dans l'image ci-dessus, nous pouvons voir la liste des résultats de recherche connexes. Pour installer le paquet dans la solution, nous devons sélectionner l'option requise.

3.2.2 Utilisation de la ligne de commande de Visual Studio

  • Dans Visual Studio : Allez dans Outils-> Gestionnaire de paquets NuGet -> Console du gestionnaire de paquets
  • Saisissez l'extrait de code suivant dans l'onglet de la console du gestionnaire de paquets.

Installer le paquet IronOCR


Le paquet s'installera alors directement dans le projet en cours, qui sera alors prêt à être utilisé.

### 3.2.3 Téléchargement direct depuis le site NuGet

Pour la troisième méthode, nous pouvons télécharger le paquet NuGet directement depuis le site web
* Naviguez jusqu'à cette page[Lien](https://www.nuget.org/packages/Ironocr).
* Dans le menu de droite, assurez-vous de sélectionner l'option de téléchargement.
* Double-cliquez sur le paquet téléchargé. Il sera installé automatiquement.
* Ensuite, rechargez la solution et commencez à l'utiliser dans le projet.

### 3.2.4 Téléchargement direct à partir du site web de l'IronOCR

Vous pouvez télécharger directement le dernier paquet depuis le site web en cliquant sur le lien suivant[lien](https://ironsoftware.com/csharp/ocr/packages/IronOcr.zip). Suivez les instructions fournies pour ajouter le paquet au projet une fois que le dernier paquet a été téléchargé.
* Cliquez avec le bouton droit de la souris sur le projet dans la fenêtre de la solution.
* Sélectionnez Option Reference pour rechercher l'emplacement de la référence téléchargée.
* Cliquez ensuite sur OK pour ajouter la référence.

### 4.0 Image OCR

IronOCR et **PDFtron OCR** disposent tous deux d'une technologie OCR qui convertit les images en texte de recherche.

### 4.1 Utilisation de **PDFTron**

Convertissez les PDF en DOCX, DOC, HTML, SVG, TIFF, PNG, JPEG, XPS, EPUB, TXT et bien d'autres formats.

``` cs

PDFDoc doc = nouveau PDFDoc(nom de fichier);

// Convertir un document PDF en SVG

Convert.ToSvg(doc, nom_du_film_de_sortie + ".svg");

// Convertir un document PDF en XPS

Convert.ToXps(nom_de_fichier, nom_de_sortie + ".xps");

// Convertir un document PDF en un document TIFF multipage

Convert.TiffOutputOptions tiff_options = new Convert.TiffOutputOptions();

tiff_options.SetDPI(200);

tiff_options.SetDither(vrai);

tiff_options.SetMono(vrai);

Convert.ToTiff(nom_de_fichier, nom_de_sortie + ".tiff", options_de_tiff);

// Convertir un PDF en XOD

Convert.ToXod(nom_de_fichier, nom_de_sortie + ".xod");

// Convertir le PDF en HTML

Convert.ToHtml(nom_de_fichier, nom_de_sortie + ".html");

4.2 Utilisation de l'IronOCR

var Ocr = new IronTesseract(); // nothing to configure
Ocr.Language = OcrLanguage.EnglishBest;
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var Input = new OcrInput())
{
    Input.AddImage(@"3.png");
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
    Console.ReadKey();
}
var Ocr = new IronTesseract(); // nothing to configure
Ocr.Language = OcrLanguage.EnglishBest;
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var Input = new OcrInput())
{
    Input.AddImage(@"3.png");
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
    Console.ReadKey();
}
Dim Ocr = New IronTesseract() ' nothing to configure
Ocr.Language = OcrLanguage.EnglishBest
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5
Using Input = New OcrInput()
	Input.AddImage("3.png")
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
	Console.ReadKey()
End Using
VB   C#

La démonstration ci-dessus montre le processus de conversion de fichiers images en texte à l'aide de l'API Tesseract 5. La ligne de code ci-dessus a été utilisée pour créer un objet pour le Tesseract d'Iron. De plus, pour s'assurer que nous pouvons ajouter un ou plusieurs fichiers images, nous avons produit un objet OcrInput qui demandera le chemin d'accès à l'image disponible. Dans l'objet Iron Tesseract, la fonction "Read" peut être utilisée pour obtenir les images en analysant le fichier image et en extrayant le résultat produit dans le résultat de l'OCR. Il est capable d'extraire du texte des photos et de le convertir en une chaîne de caractères.

Tesseract peut être utilisé pour ajouter des images multi-trames en utilisant la méthode "AddMultiFrameTiff" pour ce processus. Chaque image est lue et traitée comme une page distincte par la bibliothèque Tesseract. Chaque trame de l'image est lue avant de passer à la trame suivante, jusqu'à ce que chaque trame ait été scannée avec succès. Le format d'image TIFF est le seul format pris en charge par cette méthode.

Pdftron Ocr Alternatives 6 related to 4.2 Utilisation de l'IronOCR

La conversion réussie des données en texte éditable est affichée dans l'image ci-dessus, résultat de la précision de l'IronOCR.

5.0 Fichier PDF OCR

IronOCR et PDFTron OCR convertissent les fichiers PDF en texte éditable. L'OCR de PDFTron offre à l'utilisateur une liste d'options telles que l'enregistrement de la page, l'édition de l'image, la reconnaissance de la page, etc. En outre, il peut fournir des options d'enregistrement telles que le document, le texte, le format HTML, etc. IronOCR nous permet également de sauvegarder un fichier OCR converti en HTML, texte, PDF, etc.

5.1 Utilisation de PDFTron OCR

L'exemple de code complet montre comment utiliser PDFTron OCR pour une conversion directe et de haute qualité entre PDF, XPS, EMF, SVG, TIFF, PNG, JPEG et d'autres formats d'image.

// Copyright (c) 2001-2021 by PDFTron Systems Inc. All Rights Reserved.

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using pdftron;
using pdftron.Common;
using pdftron.Filters;
using pdftron.SDF;
using pdftron.PDF;

// The following code showcases the conversion of documents to formats // such as SVG, PDF, EMF, or XPS.

namespace ConvertTestCS
{
    class Testfile
    {
        public string inputFile, outputFile;
        public bool requiresWindowsPlatform;
        public Testfile(string inFile, string outFile, bool requiresWindowsPlatform_)
        {
            inputFile = inFile;
            outputFile = outFile;
            requiresWindowsPlatform = requiresWindowsPlatform_;
        }
    };

    class Class1
    {
        private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
        static Class1() {}

        // Relative path to the folder containing test files.
        const string inputPath = "../../../../TestFiles/";
        const string outputPath = "../../../../TestFiles/Output/";

        static bool ConvertSpecificFormats()
        {
            bool err = false;
            try
            {
                using (PDFDoc pdfdoc = new PDFDoc())
                {
                    Console.WriteLine("Converting from XPS");
                    pdftron.PDF.Convert.FromXps(pdfdoc, inputPath + "simple-xps.xps");
                    pdfdoc.Save(outputPath + "xps2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused);
                    Console.WriteLine("Saved xps2pdf v2.pdf");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

    /////////////////////////////////////////////
    if (Environment.OSVersion.Platform == PlatformID.Win32NT) {
                try
                {
                    using (PDFDoc pdfdoc = new PDFDoc())
                    {
                        Console.WriteLine("Converting from EMF");
                        pdftron.PDF.Convert.FromEmf(pdfdoc, inputPath + "simple-emf.emf");
                        pdfdoc.Save(outputPath + "emf2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused);
                        Console.WriteLine("Saved emf2pdf v2.pdf");
                    }
                }
                catch (PDFNetException e)
                {
                    Console.WriteLine(e.Message);
                    err = true;
                }
            }

        ///////////////////////////////////////////
            try
            {
                using (PDFDoc pdfdoc = new PDFDoc())
                {
                    // Add a dictionary
                    ObjSet set = new ObjSet();
                    Obj options = set.CreateDict();

                    // Put options
                    options.PutNumber("FontSize", 15);
                    options.PutBool("UseSourceCodeFormatting", true);
                    options.PutNumber("PageWidth", 12);
                    options.PutNumber("PageHeight", 6);

                    // Convert from .txt file
                    Console.WriteLine("Converting from txt");
                    pdftron.PDF.Convert.FromText(pdfdoc, inputPath + "simple-text.txt", options);
                    pdfdoc.Save(outputPath + "simple-text.pdf", SDFDoc.SaveOptions.e_remove_unused);
                    Console.WriteLine("Saved simple-text.pdf");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

    ///////////////////////////////////////////
            try
            {
                using (PDFDoc pdfdoc = new PDFDoc(inputPath + "newsletter.pdf"))
                {
                    // Convert PDF document to SVG
                    Console.WriteLine("Converting pdfdoc to SVG");
                    pdftron.PDF.Convert.ToSvg(pdfdoc, outputPath + "pdf2svg v2.svg");
                    Console.WriteLine("Saved pdf2svg v2.svg");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

    /////////////////////////////////////////////////
            try
            {
                // Convert PNG image to XPS
                Console.WriteLine("Converting PNG to XPS");
                pdftron.PDF.Convert.ToXps(inputPath + "butterfly.png", outputPath + "butterfly.xps");
                Console.WriteLine("Saved butterfly.xps");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }
    ///////////////////////////////////////////
            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                try
                {
                    // Convert MSWord document to XPS
                    Console.WriteLine("Converting DOCX to XPS");
                    pdftron.PDF.Convert.ToXps(inputPath + "simple-word_2007.docx", outputPath + "simple-word_2007.xps");
                    Console.WriteLine("Saved simple-word_2007.xps");
                }
                catch (PDFNetException e)
                {
                    Console.WriteLine(e.Message);
                    err = true;
                }
            }
            ////////////////////////////////////////////////////////////////////
            try
            {
                // Convert PDF document to XPS
                Console.WriteLine("Converting PDF to XPS");
                pdftron.PDF.Convert.ToXps(inputPath + "newsletter.pdf", outputPath + "newsletter.xps");
                Console.WriteLine("Saved newsletter.xps");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

            //////////////////////////////////////////////////////////////////////
            try
            {
                // Convert PDF document to HTML
                Console.WriteLine("Converting PDF to HTML");
                pdftron.PDF.Convert.ToHtml(inputPath + "newsletter.pdf", outputPath + "newsletter");
                Console.WriteLine("Saved newsletter as HTML");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

            //////////////////////////////////////////////////////////////////////
            try
            {
                // Convert PDF document to EPUB
                Console.WriteLine("Converting PDF to EPUB");
                pdftron.PDF.Convert.ToEpub(inputPath + "newsletter.pdf", outputPath + "newsletter.epub");
                Console.WriteLine("Saved newsletter.epub");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

            /////////////////////////////////////////////////////////////////////
            try
            {
                // Convert PDF document to multipage TIFF
                Console.WriteLine("Converting PDF to multipage TIFF");
                pdftron.PDF.Convert.TiffOutputOptions tiff_options = new pdftron.PDF.Convert.TiffOutputOptions();
                tiff_options.SetDPI(200);
                tiff_options.SetDither(true);
                tiff_options.SetMono(true);
                pdftron.PDF.Convert.ToTiff(inputPath + "newsletter.pdf", outputPath + "newsletter.tiff", tiff_options);
                Console.WriteLine("Saved newsletter.tiff");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

            return err;
        }

        static Boolean ConvertToPdfFromFile()
        {
            System.Collections.ArrayList testfiles = new System.Collections.ArrayList();
            testfiles.Add(new ConvertTestCS.Testfile("simple-word_2007.docx", "docx2pdf.pdf", false));
            testfiles.Add(new ConvertTestCS.Testfile("simple-powerpoint_2007.pptx", "pptx2pdf.pdf", false));
            testfiles.Add(new ConvertTestCS.Testfile("simple-excel_2007.xlsx", "xlsx2pdf.pdf", false));
            testfiles.Add(new ConvertTestCS.Testfile("simple-publisher.pub", "pub2pdf.pdf", true));
            testfiles.Add(new ConvertTestCS.Testfile("simple-text.txt", "txt2pdf.pdf", false));
            testfiles.Add(new ConvertTestCS.Testfile("simple-rtf.rtf", "rtf2pdf.pdf", true));
            testfiles.Add(new ConvertTestCS.Testfile("butterfly.png", "png2pdf.pdf", false));
            testfiles.Add(new ConvertTestCS.Testfile("simple-emf.emf", "emf2pdf.pdf", true));
            testfiles.Add(new ConvertTestCS.Testfile("simple-xps.xps", "xps2pdf.pdf", false));
            // testfiles.Add(new ConvertTestCS.Testfile("simple-webpage.mht", "mht2pdf.pdf", true));
            testfiles.Add(new ConvertTestCS.Testfile("simple-webpage.html", "html2pdf.pdf", true));

            bool err = false;
            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                try
                {
                    if (pdftron.PDF.Convert.Printer.IsInstalled("PDFTron PDFNet"))
                    {
                        pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet");
                    }
                    else if (!pdftron.PDF.Convert.Printer.IsInstalled())
                    {
                        try
                        {
                            Console.WriteLine("Installing printer (requires Windows platform and administrator)");
                            pdftron.PDF.Convert.Printer.Install();
                            Console.WriteLine("Installed printer " + pdftron.PDF.Convert.Printer.GetPrinterName());
                            // the function ConvertToXpsFromFile may require the printer so leave it installed
                            // uninstallPrinterWhenDone = true;
                        }
                        catch (PDFNetException e)
                        {
                            Console.WriteLine("ERROR: Unable to install printer.");
                            Console.WriteLine(e.Message);
                            err = true;
                        }
                        catch
                        {
                            Console.WriteLine("ERROR: Unable to install printer. Make sure that the package's bitness matches your operating system's bitness and that you are running with administrator privileges.");
                        }
                    }
                }
                catch (PDFNetException e)
                {
                    Console.WriteLine("ERROR: Unable to install printer.");
                    Console.WriteLine(e.Message);
                    err = true;
                }
            }
            foreach (Testfile file in testfiles)
            {
                if ( Environment.OSVersion.Platform != PlatformID.Win32NT)
                {
                    if (file.requiresWindowsPlatform)
                    {
                        continue;
                    }
                }
                try
                {
                    using (pdftron.PDF.PDFDoc pdfdoc = new PDFDoc())
                    {

                        if (pdftron.PDF.Convert.RequiresPrinter(inputPath + file.inputFile))
                        {
                            Console.WriteLine("Using PDFNet printer to convert file " + file.inputFile);
                        }
                        pdftron.PDF.Convert.ToPdf(pdfdoc, inputPath + file.inputFile);
                        pdfdoc.Save(outputPath + file.outputFile, SDFDoc.SaveOptions.e_linearized);
                        Console.WriteLine("Converted file: " + file.inputFile);
                        Console.WriteLine("to: " + file.outputFile);
                    }
                }
                catch (PDFNetException e)
                {
                    Console.WriteLine("ERROR: on input file " + file.inputFile);
                    Console.WriteLine(e.Message);
                    err = true;
                }
            }

            return err;
        }
        [STAThread]
        static void Main(string [] args)
        {
            PDFNet.Initialize(PDFTronLicense.Key);
            bool err = false;

            err = ConvertToPdfFromFile();
            if (err)
            {
                Console.WriteLine("ConvertFile failed");
            }
            else
            {
                Console.WriteLine("ConvertFile succeeded");
            }

            err = ConvertSpecificFormats();
            if (err)
            {
                Console.WriteLine("ConvertSpecificFormats failed");
            }
            else
            {
                Console.WriteLine("ConvertSpecificFormats succeeded");
            }

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                if (pdftron.PDF.Convert.Printer.IsInstalled())
                {
                    try
                    {
                        Console.WriteLine("Uninstalling printer (requires Windows platform and administrator)");
                        pdftron.PDF.Convert.Printer.Uninstall();
                        Console.WriteLine("Uninstalled Printer " + pdftron.PDF.Convert.Printer.GetPrinterName());
                    }
                    catch
                    {
                        Console.WriteLine("Unable to uninstall printer");
                    }
                }
            }
            PDFNet.Terminate();
            Console.WriteLine("Done.");
        }
    }
}
// Copyright (c) 2001-2021 by PDFTron Systems Inc. All Rights Reserved.

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using pdftron;
using pdftron.Common;
using pdftron.Filters;
using pdftron.SDF;
using pdftron.PDF;

// The following code showcases the conversion of documents to formats // such as SVG, PDF, EMF, or XPS.

namespace ConvertTestCS
{
    class Testfile
    {
        public string inputFile, outputFile;
        public bool requiresWindowsPlatform;
        public Testfile(string inFile, string outFile, bool requiresWindowsPlatform_)
        {
            inputFile = inFile;
            outputFile = outFile;
            requiresWindowsPlatform = requiresWindowsPlatform_;
        }
    };

    class Class1
    {
        private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
        static Class1() {}

        // Relative path to the folder containing test files.
        const string inputPath = "../../../../TestFiles/";
        const string outputPath = "../../../../TestFiles/Output/";

        static bool ConvertSpecificFormats()
        {
            bool err = false;
            try
            {
                using (PDFDoc pdfdoc = new PDFDoc())
                {
                    Console.WriteLine("Converting from XPS");
                    pdftron.PDF.Convert.FromXps(pdfdoc, inputPath + "simple-xps.xps");
                    pdfdoc.Save(outputPath + "xps2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused);
                    Console.WriteLine("Saved xps2pdf v2.pdf");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

    /////////////////////////////////////////////
    if (Environment.OSVersion.Platform == PlatformID.Win32NT) {
                try
                {
                    using (PDFDoc pdfdoc = new PDFDoc())
                    {
                        Console.WriteLine("Converting from EMF");
                        pdftron.PDF.Convert.FromEmf(pdfdoc, inputPath + "simple-emf.emf");
                        pdfdoc.Save(outputPath + "emf2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused);
                        Console.WriteLine("Saved emf2pdf v2.pdf");
                    }
                }
                catch (PDFNetException e)
                {
                    Console.WriteLine(e.Message);
                    err = true;
                }
            }

        ///////////////////////////////////////////
            try
            {
                using (PDFDoc pdfdoc = new PDFDoc())
                {
                    // Add a dictionary
                    ObjSet set = new ObjSet();
                    Obj options = set.CreateDict();

                    // Put options
                    options.PutNumber("FontSize", 15);
                    options.PutBool("UseSourceCodeFormatting", true);
                    options.PutNumber("PageWidth", 12);
                    options.PutNumber("PageHeight", 6);

                    // Convert from .txt file
                    Console.WriteLine("Converting from txt");
                    pdftron.PDF.Convert.FromText(pdfdoc, inputPath + "simple-text.txt", options);
                    pdfdoc.Save(outputPath + "simple-text.pdf", SDFDoc.SaveOptions.e_remove_unused);
                    Console.WriteLine("Saved simple-text.pdf");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

    ///////////////////////////////////////////
            try
            {
                using (PDFDoc pdfdoc = new PDFDoc(inputPath + "newsletter.pdf"))
                {
                    // Convert PDF document to SVG
                    Console.WriteLine("Converting pdfdoc to SVG");
                    pdftron.PDF.Convert.ToSvg(pdfdoc, outputPath + "pdf2svg v2.svg");
                    Console.WriteLine("Saved pdf2svg v2.svg");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

    /////////////////////////////////////////////////
            try
            {
                // Convert PNG image to XPS
                Console.WriteLine("Converting PNG to XPS");
                pdftron.PDF.Convert.ToXps(inputPath + "butterfly.png", outputPath + "butterfly.xps");
                Console.WriteLine("Saved butterfly.xps");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }
    ///////////////////////////////////////////
            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                try
                {
                    // Convert MSWord document to XPS
                    Console.WriteLine("Converting DOCX to XPS");
                    pdftron.PDF.Convert.ToXps(inputPath + "simple-word_2007.docx", outputPath + "simple-word_2007.xps");
                    Console.WriteLine("Saved simple-word_2007.xps");
                }
                catch (PDFNetException e)
                {
                    Console.WriteLine(e.Message);
                    err = true;
                }
            }
            ////////////////////////////////////////////////////////////////////
            try
            {
                // Convert PDF document to XPS
                Console.WriteLine("Converting PDF to XPS");
                pdftron.PDF.Convert.ToXps(inputPath + "newsletter.pdf", outputPath + "newsletter.xps");
                Console.WriteLine("Saved newsletter.xps");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

            //////////////////////////////////////////////////////////////////////
            try
            {
                // Convert PDF document to HTML
                Console.WriteLine("Converting PDF to HTML");
                pdftron.PDF.Convert.ToHtml(inputPath + "newsletter.pdf", outputPath + "newsletter");
                Console.WriteLine("Saved newsletter as HTML");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

            //////////////////////////////////////////////////////////////////////
            try
            {
                // Convert PDF document to EPUB
                Console.WriteLine("Converting PDF to EPUB");
                pdftron.PDF.Convert.ToEpub(inputPath + "newsletter.pdf", outputPath + "newsletter.epub");
                Console.WriteLine("Saved newsletter.epub");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

            /////////////////////////////////////////////////////////////////////
            try
            {
                // Convert PDF document to multipage TIFF
                Console.WriteLine("Converting PDF to multipage TIFF");
                pdftron.PDF.Convert.TiffOutputOptions tiff_options = new pdftron.PDF.Convert.TiffOutputOptions();
                tiff_options.SetDPI(200);
                tiff_options.SetDither(true);
                tiff_options.SetMono(true);
                pdftron.PDF.Convert.ToTiff(inputPath + "newsletter.pdf", outputPath + "newsletter.tiff", tiff_options);
                Console.WriteLine("Saved newsletter.tiff");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
                err = true;
            }

            return err;
        }

        static Boolean ConvertToPdfFromFile()
        {
            System.Collections.ArrayList testfiles = new System.Collections.ArrayList();
            testfiles.Add(new ConvertTestCS.Testfile("simple-word_2007.docx", "docx2pdf.pdf", false));
            testfiles.Add(new ConvertTestCS.Testfile("simple-powerpoint_2007.pptx", "pptx2pdf.pdf", false));
            testfiles.Add(new ConvertTestCS.Testfile("simple-excel_2007.xlsx", "xlsx2pdf.pdf", false));
            testfiles.Add(new ConvertTestCS.Testfile("simple-publisher.pub", "pub2pdf.pdf", true));
            testfiles.Add(new ConvertTestCS.Testfile("simple-text.txt", "txt2pdf.pdf", false));
            testfiles.Add(new ConvertTestCS.Testfile("simple-rtf.rtf", "rtf2pdf.pdf", true));
            testfiles.Add(new ConvertTestCS.Testfile("butterfly.png", "png2pdf.pdf", false));
            testfiles.Add(new ConvertTestCS.Testfile("simple-emf.emf", "emf2pdf.pdf", true));
            testfiles.Add(new ConvertTestCS.Testfile("simple-xps.xps", "xps2pdf.pdf", false));
            // testfiles.Add(new ConvertTestCS.Testfile("simple-webpage.mht", "mht2pdf.pdf", true));
            testfiles.Add(new ConvertTestCS.Testfile("simple-webpage.html", "html2pdf.pdf", true));

            bool err = false;
            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                try
                {
                    if (pdftron.PDF.Convert.Printer.IsInstalled("PDFTron PDFNet"))
                    {
                        pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet");
                    }
                    else if (!pdftron.PDF.Convert.Printer.IsInstalled())
                    {
                        try
                        {
                            Console.WriteLine("Installing printer (requires Windows platform and administrator)");
                            pdftron.PDF.Convert.Printer.Install();
                            Console.WriteLine("Installed printer " + pdftron.PDF.Convert.Printer.GetPrinterName());
                            // the function ConvertToXpsFromFile may require the printer so leave it installed
                            // uninstallPrinterWhenDone = true;
                        }
                        catch (PDFNetException e)
                        {
                            Console.WriteLine("ERROR: Unable to install printer.");
                            Console.WriteLine(e.Message);
                            err = true;
                        }
                        catch
                        {
                            Console.WriteLine("ERROR: Unable to install printer. Make sure that the package's bitness matches your operating system's bitness and that you are running with administrator privileges.");
                        }
                    }
                }
                catch (PDFNetException e)
                {
                    Console.WriteLine("ERROR: Unable to install printer.");
                    Console.WriteLine(e.Message);
                    err = true;
                }
            }
            foreach (Testfile file in testfiles)
            {
                if ( Environment.OSVersion.Platform != PlatformID.Win32NT)
                {
                    if (file.requiresWindowsPlatform)
                    {
                        continue;
                    }
                }
                try
                {
                    using (pdftron.PDF.PDFDoc pdfdoc = new PDFDoc())
                    {

                        if (pdftron.PDF.Convert.RequiresPrinter(inputPath + file.inputFile))
                        {
                            Console.WriteLine("Using PDFNet printer to convert file " + file.inputFile);
                        }
                        pdftron.PDF.Convert.ToPdf(pdfdoc, inputPath + file.inputFile);
                        pdfdoc.Save(outputPath + file.outputFile, SDFDoc.SaveOptions.e_linearized);
                        Console.WriteLine("Converted file: " + file.inputFile);
                        Console.WriteLine("to: " + file.outputFile);
                    }
                }
                catch (PDFNetException e)
                {
                    Console.WriteLine("ERROR: on input file " + file.inputFile);
                    Console.WriteLine(e.Message);
                    err = true;
                }
            }

            return err;
        }
        [STAThread]
        static void Main(string [] args)
        {
            PDFNet.Initialize(PDFTronLicense.Key);
            bool err = false;

            err = ConvertToPdfFromFile();
            if (err)
            {
                Console.WriteLine("ConvertFile failed");
            }
            else
            {
                Console.WriteLine("ConvertFile succeeded");
            }

            err = ConvertSpecificFormats();
            if (err)
            {
                Console.WriteLine("ConvertSpecificFormats failed");
            }
            else
            {
                Console.WriteLine("ConvertSpecificFormats succeeded");
            }

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                if (pdftron.PDF.Convert.Printer.IsInstalled())
                {
                    try
                    {
                        Console.WriteLine("Uninstalling printer (requires Windows platform and administrator)");
                        pdftron.PDF.Convert.Printer.Uninstall();
                        Console.WriteLine("Uninstalled Printer " + pdftron.PDF.Convert.Printer.GetPrinterName());
                    }
                    catch
                    {
                        Console.WriteLine("Unable to uninstall printer");
                    }
                }
            }
            PDFNet.Terminate();
            Console.WriteLine("Done.");
        }
    }
}
' Copyright (c) 2001-2021 by PDFTron Systems Inc. All Rights Reserved.

Imports System
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports pdftron
Imports pdftron.Common
Imports pdftron.Filters
Imports pdftron.SDF
Imports pdftron.PDF

' The following code showcases the conversion of documents to formats // such as SVG, PDF, EMF, or XPS.

Namespace ConvertTestCS
	Friend Class Testfile
		Public inputFile, outputFile As String
		Public requiresWindowsPlatform As Boolean
		Public Sub New(ByVal inFile As String, ByVal outFile As String, ByVal requiresWindowsPlatform_ As Boolean)
			inputFile = inFile
			outputFile = outFile
			requiresWindowsPlatform = requiresWindowsPlatform_
		End Sub
	End Class

	Friend Class Class1
		Private Shared pdfNetLoader As pdftron.PDFNetLoader = pdftron.PDFNetLoader.Instance()
		Shared Sub New()
		End Sub

		' Relative path to the folder containing test files.
		Private Const inputPath As String = "../../../../TestFiles/"
		Private Const outputPath As String = "../../../../TestFiles/Output/"

		Private Shared Function ConvertSpecificFormats() As Boolean
			Dim err As Boolean = False
			Try
				Using pdfdoc As New PDFDoc()
					Console.WriteLine("Converting from XPS")
					pdftron.PDF.Convert.FromXps(pdfdoc, inputPath & "simple-xps.xps")
					pdfdoc.Save(outputPath & "xps2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused)
					Console.WriteLine("Saved xps2pdf v2.pdf")
				End Using
			Catch e As PDFNetException
				Console.WriteLine(e.Message)
				err = True
			End Try

	'///////////////////////////////////////////
	If Environment.OSVersion.Platform = PlatformID.Win32NT Then
				Try
					Using pdfdoc As New PDFDoc()
						Console.WriteLine("Converting from EMF")
						pdftron.PDF.Convert.FromEmf(pdfdoc, inputPath & "simple-emf.emf")
						pdfdoc.Save(outputPath & "emf2pdf v2.pdf", SDFDoc.SaveOptions.e_remove_unused)
						Console.WriteLine("Saved emf2pdf v2.pdf")
					End Using
				Catch e As PDFNetException
					Console.WriteLine(e.Message)
					err = True
				End Try
	End If

		'/////////////////////////////////////////
			Try
				Using pdfdoc As New PDFDoc()
					' Add a dictionary
					Dim [set] As New ObjSet()
					Dim options As Obj = [set].CreateDict()

					' Put options
					options.PutNumber("FontSize", 15)
					options.PutBool("UseSourceCodeFormatting", True)
					options.PutNumber("PageWidth", 12)
					options.PutNumber("PageHeight", 6)

					' Convert from .txt file
					Console.WriteLine("Converting from txt")
					pdftron.PDF.Convert.FromText(pdfdoc, inputPath & "simple-text.txt", options)
					pdfdoc.Save(outputPath & "simple-text.pdf", SDFDoc.SaveOptions.e_remove_unused)
					Console.WriteLine("Saved simple-text.pdf")
				End Using
			Catch e As PDFNetException
				Console.WriteLine(e.Message)
				err = True
			End Try

	'/////////////////////////////////////////
			Try
				Using pdfdoc As New PDFDoc(inputPath & "newsletter.pdf")
					' Convert PDF document to SVG
					Console.WriteLine("Converting pdfdoc to SVG")
					pdftron.PDF.Convert.ToSvg(pdfdoc, outputPath & "pdf2svg v2.svg")
					Console.WriteLine("Saved pdf2svg v2.svg")
				End Using
			Catch e As PDFNetException
				Console.WriteLine(e.Message)
				err = True
			End Try

	'///////////////////////////////////////////////
			Try
				' Convert PNG image to XPS
				Console.WriteLine("Converting PNG to XPS")
				pdftron.PDF.Convert.ToXps(inputPath & "butterfly.png", outputPath & "butterfly.xps")
				Console.WriteLine("Saved butterfly.xps")
			Catch e As PDFNetException
				Console.WriteLine(e.Message)
				err = True
			End Try
	'/////////////////////////////////////////
			If Environment.OSVersion.Platform = PlatformID.Win32NT Then
				Try
					' Convert MSWord document to XPS
					Console.WriteLine("Converting DOCX to XPS")
					pdftron.PDF.Convert.ToXps(inputPath & "simple-word_2007.docx", outputPath & "simple-word_2007.xps")
					Console.WriteLine("Saved simple-word_2007.xps")
				Catch e As PDFNetException
					Console.WriteLine(e.Message)
					err = True
				End Try
			End If
			'//////////////////////////////////////////////////////////////////
			Try
				' Convert PDF document to XPS
				Console.WriteLine("Converting PDF to XPS")
				pdftron.PDF.Convert.ToXps(inputPath & "newsletter.pdf", outputPath & "newsletter.xps")
				Console.WriteLine("Saved newsletter.xps")
			Catch e As PDFNetException
				Console.WriteLine(e.Message)
				err = True
			End Try

			'////////////////////////////////////////////////////////////////////
			Try
				' Convert PDF document to HTML
				Console.WriteLine("Converting PDF to HTML")
				pdftron.PDF.Convert.ToHtml(inputPath & "newsletter.pdf", outputPath & "newsletter")
				Console.WriteLine("Saved newsletter as HTML")
			Catch e As PDFNetException
				Console.WriteLine(e.Message)
				err = True
			End Try

			'////////////////////////////////////////////////////////////////////
			Try
				' Convert PDF document to EPUB
				Console.WriteLine("Converting PDF to EPUB")
				pdftron.PDF.Convert.ToEpub(inputPath & "newsletter.pdf", outputPath & "newsletter.epub")
				Console.WriteLine("Saved newsletter.epub")
			Catch e As PDFNetException
				Console.WriteLine(e.Message)
				err = True
			End Try

			'///////////////////////////////////////////////////////////////////
			Try
				' Convert PDF document to multipage TIFF
				Console.WriteLine("Converting PDF to multipage TIFF")
				Dim tiff_options As New pdftron.PDF.Convert.TiffOutputOptions()
				tiff_options.SetDPI(200)
				tiff_options.SetDither(True)
				tiff_options.SetMono(True)
				pdftron.PDF.Convert.ToTiff(inputPath & "newsletter.pdf", outputPath & "newsletter.tiff", tiff_options)
				Console.WriteLine("Saved newsletter.tiff")
			Catch e As PDFNetException
				Console.WriteLine(e.Message)
				err = True
			End Try

			Return err
		End Function

		Private Shared Function ConvertToPdfFromFile() As Boolean
			Dim testfiles As New System.Collections.ArrayList()
			testfiles.Add(New ConvertTestCS.Testfile("simple-word_2007.docx", "docx2pdf.pdf", False))
			testfiles.Add(New ConvertTestCS.Testfile("simple-powerpoint_2007.pptx", "pptx2pdf.pdf", False))
			testfiles.Add(New ConvertTestCS.Testfile("simple-excel_2007.xlsx", "xlsx2pdf.pdf", False))
			testfiles.Add(New ConvertTestCS.Testfile("simple-publisher.pub", "pub2pdf.pdf", True))
			testfiles.Add(New ConvertTestCS.Testfile("simple-text.txt", "txt2pdf.pdf", False))
			testfiles.Add(New ConvertTestCS.Testfile("simple-rtf.rtf", "rtf2pdf.pdf", True))
			testfiles.Add(New ConvertTestCS.Testfile("butterfly.png", "png2pdf.pdf", False))
			testfiles.Add(New ConvertTestCS.Testfile("simple-emf.emf", "emf2pdf.pdf", True))
			testfiles.Add(New ConvertTestCS.Testfile("simple-xps.xps", "xps2pdf.pdf", False))
			' testfiles.Add(new ConvertTestCS.Testfile("simple-webpage.mht", "mht2pdf.pdf", true));
			testfiles.Add(New ConvertTestCS.Testfile("simple-webpage.html", "html2pdf.pdf", True))

			Dim err As Boolean = False
			If Environment.OSVersion.Platform = PlatformID.Win32NT Then
				Try
					If pdftron.PDF.Convert.Printer.IsInstalled("PDFTron PDFNet") Then
						pdftron.PDF.Convert.Printer.SetPrinterName("PDFTron PDFNet")
					ElseIf Not pdftron.PDF.Convert.Printer.IsInstalled() Then
						Try
							Console.WriteLine("Installing printer (requires Windows platform and administrator)")
							pdftron.PDF.Convert.Printer.Install()
							Console.WriteLine("Installed printer " & pdftron.PDF.Convert.Printer.GetPrinterName())
							' the function ConvertToXpsFromFile may require the printer so leave it installed
							' uninstallPrinterWhenDone = true;
						Catch e As PDFNetException
							Console.WriteLine("ERROR: Unable to install printer.")
							Console.WriteLine(e.Message)
							err = True
						Catch
							Console.WriteLine("ERROR: Unable to install printer. Make sure that the package's bitness matches your operating system's bitness and that you are running with administrator privileges.")
						End Try
					End If
				Catch e As PDFNetException
					Console.WriteLine("ERROR: Unable to install printer.")
					Console.WriteLine(e.Message)
					err = True
				End Try
			End If
			For Each file As Testfile In testfiles
				If Environment.OSVersion.Platform <> PlatformID.Win32NT Then
					If file.requiresWindowsPlatform Then
						Continue For
					End If
				End If
				Try
					Using pdfdoc As pdftron.PDF.PDFDoc = New PDFDoc()

						If pdftron.PDF.Convert.RequiresPrinter(inputPath & file.inputFile) Then
							Console.WriteLine("Using PDFNet printer to convert file " & file.inputFile)
						End If
						pdftron.PDF.Convert.ToPdf(pdfdoc, inputPath & file.inputFile)
						pdfdoc.Save(outputPath & file.outputFile, SDFDoc.SaveOptions.e_linearized)
						Console.WriteLine("Converted file: " & file.inputFile)
						Console.WriteLine("to: " & file.outputFile)
					End Using
				Catch e As PDFNetException
					Console.WriteLine("ERROR: on input file " & file.inputFile)
					Console.WriteLine(e.Message)
					err = True
				End Try
			Next file

			Return err
		End Function
		<STAThread>
		Shared Sub Main(ByVal args() As String)
			PDFNet.Initialize(PDFTronLicense.Key)
			Dim err As Boolean = False

			err = ConvertToPdfFromFile()
			If err Then
				Console.WriteLine("ConvertFile failed")
			Else
				Console.WriteLine("ConvertFile succeeded")
			End If

			err = ConvertSpecificFormats()
			If err Then
				Console.WriteLine("ConvertSpecificFormats failed")
			Else
				Console.WriteLine("ConvertSpecificFormats succeeded")
			End If

			If Environment.OSVersion.Platform = PlatformID.Win32NT Then
				If pdftron.PDF.Convert.Printer.IsInstalled() Then
					Try
						Console.WriteLine("Uninstalling printer (requires Windows platform and administrator)")
						pdftron.PDF.Convert.Printer.Uninstall()
						Console.WriteLine("Uninstalled Printer " & pdftron.PDF.Convert.Printer.GetPrinterName())
					Catch
						Console.WriteLine("Unable to uninstall printer")
					End Try
				End If
			End If
			PDFNet.Terminate()
			Console.WriteLine("Done.")
		End Sub
	End Class
End Namespace
VB   C#

5.2 Utilisation de l'IronOCR

La gestion des fichiers PDF peut être réalisée à l'aide de la fonction OCRInput. Chaque page d'un document sera lue par la classe Iron Tesseract. Le texte sera ensuite extrait des pages. Une deuxième fonction appelée "AddPDF" nous permettra d'ouvrir des documents protégés et de nous assurer que nous pouvons ajouter des PDF à notre liste de documents(mot de passe s'il est protégé). Pour ouvrir un document PDF protégé par un mot de passe, utilisez l'extrait de code ci-dessous :

var Ocr = new IronTesseract(); // nothing to configure
using (var Input = new OcrInput())
{
    Input.AddPdf("example.pdf", "password");
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
var Ocr = new IronTesseract(); // nothing to configure
using (var Input = new OcrInput())
{
    Input.AddPdf("example.pdf", "password");
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Dim Ocr = New IronTesseract() ' nothing to configure
Using Input = New OcrInput()
	Input.AddPdf("example.pdf", "password")
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
VB   C#

La lecture et l'extraction du contenu d'une page d'un fichier PDF peuvent être réalisées à l'aide de la fonction "Addpdfpage". Ne spécifier que le numéro de page exact à partir duquel nous voulons extraire le texte. "AddPdfPage" vous permet d'extraire du texte de plusieurs pages que vous spécifiez. IEnumerablevous permettra de spécifier efficacement de nombreuses pages. Vous devez également indiquer l'emplacement et l'extension du fichier. L'extrait de code ci-dessous en fait la démonstration :

IEnumerable<int> numbers = new List<int> {2,8,10 };
 var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
    //single page
    Input.AddPdfPage("example.pdf",10);
    //Multiple page
    Input.AddPdfPages("example.pdf", numbers);
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
    Result.SaveAsTextFile("ocrtext.txt");
}
IEnumerable<int> numbers = new List<int> {2,8,10 };
 var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
    //single page
    Input.AddPdfPage("example.pdf",10);
    //Multiple page
    Input.AddPdfPages("example.pdf", numbers);
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
    Result.SaveAsTextFile("ocrtext.txt");
}
Dim numbers As IEnumerable(Of Integer) = New List(Of Integer) From {2, 8, 10}
 Dim Ocr = New IronTesseract()
Using Input = New OcrInput()
	'single page
	Input.AddPdfPage("example.pdf",10)
	'Multiple page
	Input.AddPdfPages("example.pdf", numbers)
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
	Result.SaveAsTextFile("ocrtext.txt")
End Using
VB   C#

Utilisez la fonction SaveAsTextFile pour enregistrer directement le résultat dans un format de fichier texte afin de pouvoir télécharger directement le fichier dans le chemin du répertoire de sortie. Pour enregistrer le fichier au format HTML, utilisez SaveAsHocrFile.

6.1 Utilisation de PDFTron

Nous pouvons utiliser le SDK PDFTron pour extraire les images des fichiers PDF, ainsi que leurs informations de positionnement et leur DPI. Au lieu de convertir les images PDF en images bitmap, vous pouvez également extraire les données d'image non compressées/compressées directement à l'aide de elements.GetImageData() (décrit dans l'exemple de code d'extraction de données PDF). En savoir plus sur notre bibliothèque PDF C# et sur la bibliothèque d'analyse et d'extraction de contenu PDF.

6.2 Utilisation de l'IronOCR

IronOCR dispose d'un nombre impressionnant de fonctionnalités qui vous permettront de lire les codes QR et les codes-barres directement à partir de documents scannés. L'extrait de code ci-dessous montre comment vous pouvez scanner le code-barres d'une image ou d'un document donné.

var Ocr = new IronTesseract(); // nothing to configure
Ocr.Language = OcrLanguage.EnglishBest;
Ocr.Configuration.ReadBarCodes = true;
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var Input = new OcrInput())
{
    Input.AddImage("barcode.gif");
    var Result = Ocr.Read(Input);

    foreach (var Barcode in Result.Barcodes)
    {
        Console.WriteLine(Barcode.Value);
    }
}
var Ocr = new IronTesseract(); // nothing to configure
Ocr.Language = OcrLanguage.EnglishBest;
Ocr.Configuration.ReadBarCodes = true;
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;
using (var Input = new OcrInput())
{
    Input.AddImage("barcode.gif");
    var Result = Ocr.Read(Input);

    foreach (var Barcode in Result.Barcodes)
    {
        Console.WriteLine(Barcode.Value);
    }
}
Dim Ocr = New IronTesseract() ' nothing to configure
Ocr.Language = OcrLanguage.EnglishBest
Ocr.Configuration.ReadBarCodes = True
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5
Using Input = New OcrInput()
	Input.AddImage("barcode.gif")
	Dim Result = Ocr.Read(Input)

	For Each Barcode In Result.Barcodes
		Console.WriteLine(Barcode.Value)
	Next Barcode
End Using
VB   C#

Le code ci-dessus permet de lire le code-barres d'une image ou d'un document PDF donné. De nombreux codes-barres peuvent être lus en même temps sur une seule image ou une seule page. IronOCR dispose d'une méthode distinctive qui lira le code-barres, Ocr.Configuration.ReadBarCodes.

Les données sont stockées dans un objet appelé OCRResult après la numérisation de l'entrée. La propriété de OCRResult s'appelle Barcodes et contient une liste de toutes les données de codes-barres disponibles. Nous pouvons obtenir chaque donnée individuelle liée aux détails du code-barres en utilisant une boucle "for-each". Deux opérations sont effectuées en un seul processus : le balayage et la lecture de la valeur du code-barres.

La prise en charge des options d'enchaînement est également disponible et plusieurs processus d'OCR peuvent être exécutés en même temps. En outre, IronOCR peut reconnaître une zone précise à partir d'une région spécifiée.

var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
    var ContentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
    Input.Add("document.png", ContentArea);
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
    var ContentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
    Input.Add("document.png", ContentArea);
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Dim Ocr = New IronTesseract()
Using Input = New OcrInput()
	Dim ContentArea = New System.Drawing.Rectangle() With {
		.X = 215,
		.Y = 1250,
		.Height = 280,
		.Width = 1335
	}
	Input.Add("document.png", ContentArea)
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
VB   C#

L'extrait de code ci-dessus montre comment effectuer l'OCR sur une région distincte. Il vous suffit de spécifier la région rectangulaire dans le PDF/l'image, car le moteur Tesseract d'IronOCR aidera à reconnaître le texte.

Modèles de licence et tarification d'IronOCR et de PDFtron OCR

Modèles de licence et tarification d'IronOCR

Une garantie de remboursement de 30 jours: Une fois la licence achetée, vous bénéficiez d'une garantie de remboursement de 30 jours. Dans les 30 jours où vous souhaitez retourner le produit, vous serez remboursé.

Intégration facile: L'intégration d'IronOCR à tout projet et environnement est si facile qu'elle peut être réalisée en une seule ligne de code, simplement en l'ajoutant en tant qu'élément de l'interface utilisateurNuGet Paquet. D'autre part, une autre façon d'intégrer l'environnement est de le télécharger directement à partir du web.

Licence perpétuelle: Chaque licence achetée ne nécessite pas de renouvellement.

Support gratuit et mises à jour du produit : Chaque licence bénéficiera d'une assistance directe de la part du groupe à l'origine du produit et sera accompagnée d'un an de mises à jour gratuites du produit. Les extensions d'achat sont disponibles à tout moment.

Licences immédiates: Une fois le paiement reçu, les clés de licence enregistrées seront envoyées immédiatement.

Toutes les licences sont perpétuelles et s'appliquent au développement, à la mise en place et à la production.

La License Lite

  • 1 développeur
  • 1 emplacement
  • 1 projet
  • Licence perpétuelle

    Cette formule permet à un seul développeur de logiciels au sein d'une organisation d'utiliser Iron Software en un seul endroit. Iron Software peut être utilisé dans une application intranet, une application web ou un logiciel de bureau. Il est interdit de partager les licences en dehors d'une organisation ou d'une relation agence/client, car elles ne sont pas transférables. Ce type de licence, comme tous les autres types de licence, exclut expressément tous les droits qui ne sont pas expressément accordés dans le cadre de l'accord, sans redistribution OEM et utilisation du Iron Software en tant que SaaS sans achat d'une couverture supplémentaire.

    Tarification: A partir de $749 par an.

La licence professionnelle

  • 10 développeurs
  • 10 emplacements
  • 10 projets
  • Licence perpétuelle

    Cette licence permet à un nombre prédéterminé de développeurs de logiciels au sein d'une organisation d'utiliser Iron Software dans de nombreux sites, jusqu'à un maximum de dix. Iron Software peut être utilisé dans autant de sites web, d'applications intranet ou de logiciels de bureau que vous le souhaitez. Les licences ne sont pas transférables et ne peuvent être partagées en dehors d'une organisation ou d'une relation agence/client. Ce type de licence, comme tous les autres types de licence, exclut expressément tous les droits qui ne sont pas expressément accordés dans le cadre de l'accord, y compris la redistribution OEM et l'utilisation du logiciel Iron Software en tant que SaaS sans achat d'une couverture supplémentaire. Cette licence peut être intégrée à un seul projet jusqu'à un maximum de 10.

    Tarification: À partir de 999 $ par an.

La License Unlimited

  • Nombre illimité de développeurs
  • Nombre illimité de lieux
  • Projets illimités
  • Licence perpétuelle

    Cela permet à un nombre illimité de développeurs de logiciels d'une organisation d'utiliser Iron Software dans un nombre illimité de sites. Iron Software peut être utilisé dans autant d'applications intranet, d'applications logicielles de bureau ou de sites web que vous le souhaitez. Les licences ne sont pas transférables et ne peuvent être partagées en dehors d'une organisation ou d'une relation agence/client. Ce type de licence, comme tous les autres types de licence, exclut expressément tous les droits non accordés dans le cadre de l'accord, y compris la redistribution OEM et l'utilisation du logiciel Iron Software en tant que SaaS sans achat d'une couverture supplémentaire.

    Tarification: A partir de $5,999 par an.

    Royalty-Free Redistribution &#8212 ; Ceci vous permet de distribuer le Iron Software en tant qu'élément de plusieurs produits commerciaux conditionnés différemment(sans avoir à payer de redevances) en fonction du nombre de projets couverts par la licence de base. Cela permettra de déployer Iron Software dans le cadre de services logiciels SaaS, qui sont basés sur le nombre de projets couverts par la licence de base.

    Tarification: À partir de 1 599 $ par an.

    Pdftron Ocr Alternatives 7 related to La License Unlimited

Modèles de licence et prix de PDFTron

PDFTron Packages(licences personnalisées)

  • Les prix des licences personnalisées varient - demandez un devis adapté à votre budget.
  • Déployer la puissante technologie de visualisation et d'édition de documents de PDFTron pour le rendu et le traitement de documents sur des plates-formes Web, mobiles et de bureau
  • Prêt pour l'intégration, la redistribution OEM, et les organisations avec de grands volumes de documents ou des exigences uniques
  • Prix multi-domaines et remises pluriannuelles avantageuses
  • Prise en charge des opérations hors ligne et en bac à sable
  • Conditions contractuelles personnalisées et complètes
  • Services de conseil et de formation

    Les licences personnalisées de PDFTron sont adaptées à votre application et aux exigences de votre entreprise. Les prix dépendent de l'étendue de vos fonctionnalités

    Pdftron Ocr Alternatives 8 related to PDFTron Packages(licences personnalisées)

    La License Lite d'IronOCR est un package non défini qui inclut un développeur avec un an de support, et coûte environ $749. La licence professionnelle** d'IronOCR comprenant 10 packages pour développeurs et un an d'assistance coûte 999 $, tandis que les packages de PDFTron ne sont pas définis. Pour acheter un forfait, vous devez contacter le centre d'assistance pour obtenir un devis.

Les offres IronOCR Lite et Professional comprennent un service OEM ou SaaS avec une option d'assistance de 5 ans. La version Lite comprend un package pour un développeur avec un support de 5 ans et un service Saas et OEM. Elle coûte 2 897 $ avec une option de support personnalisé. La version Professionnelle d'IronOCR comprend un package de 10 développeurs avec 5 ans d'assistance, un service Saas et un service OEM et coûte 3 397 $. L'offre de PDFTron pour 10 développeurs avec un an d'assistance, un service Saas et un service OEM n'a pas de prix défini.

7.0 Conclusion

IronOCR dans le contexte du Framework .NET fournit Tesseract qui est simple à utiliser avec la prise en charge de photos et de documents PDF réalisée de nombreuses façons. Il fournit également plusieurs paramètres permettant d'améliorer les performances de la bibliothèque Tesseract OCRs. Un grand nombre de langues sont prises en charge, avec la possibilité d'utiliser plusieurs langues dans une seule opération. Visitez leur site web pour en savoir plus sur le Tesseract OCR.

PDFTron est un logiciel qui utilise différents moteurs pour reconnaître les images et les documents PDF. Il propose également divers paramètres permettant d'améliorer les performances du processus d'OCR et offre la possibilité de sélectionner plusieurs langues. PDFTron a des limitations sur l'utilisation des conversions de pages. Il propose également différents prix pour différents systèmes d'exploitation.

IronOCR est un logiciel compétitif et peut offrir une plus grande précision que les marques concurrentes. Il est arrivé que des produits similaires ne parviennent pas à reconnaître des images de faible qualité, ce qui a donné lieu à des caractères inconnus. D'autre part, IronOCR ne fournit pas seulement des résultats précis, mais nous permet de reconnaître les données des codes-barres et d'en lire la valeur à partir d'images.

Les packages IronOCR offrent des licences et une assistance compétitives à un prix unique pour toutes les plateformes. En comparaison, les produits OCR de PDFtrons sont tous exclusivement sélectionnés sur mesure, ce qui tend à les rendre plus chers. Les prix varient entre les deux produits, IronOCR commençant à un prix de $749, tandis qu'en raison de la sélection personnalisée, le prix de départ de PDFTron n'est pas défini. En conclusion, IronOCR offre un plus grand nombre de fonctionnalités pour un prix inférieur.

Alors, qu'attendez-vous ? L'essai gratuit est ouvert à tous. Obtenir leLicence ici et commencer immédiatement!

< PRÉCÉDENT
Alternatives à Tesseract (mise à jour 2022)
SUIVANT >
Comparaison entre IronOCR et Tesseract.NET