All pastes #455958 Raw Edit

Bob Johnson

public text v1 · immutable
#455958 ·published 2007-04-24 16:02 UTC
rendered paste body
using System.IO;
using Atalasoft.Imaging;
using Atalasoft.Imaging.Codec;
using Atalasoft.Imaging.Codec.Pdf;
using Atalasoft.Ocr;
using Atalasoft.Ocr.GlyphReader;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace PdfProcessing
{
    /// <summary>
    /// Summary description for PDFSearchableTest
    /// </summary>
    [TestClass]
    public class PDFSearchableTest
    {
        private const string TestDirectory = @"..\..\TestFiles\";
        private const string TestDirectoryOutput = @"..\..\TestFiles\Output\";
        private GlyphReaderEngine ocr;
        private PdfTranslator pdfTrans;
        private PdfDecoder pdf;

        [ClassInitialize()]
        public static void MyClassInitialize(TestContext testContext)
        {
            // Put this in your application’s termination code
            // Shut the engine down
            GlyphReaderLoader loader = new GlyphReaderLoader();

            if (Directory.Exists(TestDirectoryOutput) == false)
            {
                Directory.CreateDirectory(TestDirectoryOutput);
            }

            FileDirectoryUtil.SetFilePermissions(TestDirectory);
        }

        [ClassCleanup()]
        public static void MyClassCleanup(TestContext testContext)
        {
        }

        [TestInitialize]
        public void TestInitialize()
        {
            Directory.CreateDirectory(TestDirectoryOutput);
        }

        [TestCleanup()]
        public void MyTestCleanup()
        {
            //   FileDirectoryUtil.RemoveDirectoryAndFilesRecursive(TestDirectoryOutput);
        }

        public PDFSearchableTest()
        {
          //  ocr = new ExperVisionEngine();
            ocr = new GlyphReaderEngine();

            pdfTrans = new PdfTranslator();
            pdfTrans.OutputType = PdfTranslatorOutputType.TextUnderImage;

            ocr.Translators.Add(pdfTrans);

            pdf = new PdfDecoder();

            RegisteredDecoders.Decoders.Add(pdf);
        }


        [TestMethod]
        public void TestMethod1()
        {
       //     pdf.Resolution = 150;

            Workspace myWorkspace = new Workspace();
            myWorkspace.Open(TestDirectory + "File2_NonSearch.pdf");
            myWorkspace.Save(TestDirectoryOutput + "out.tiff", new TiffEncoder());

            using (FileSystemImageSource fis =
                new FileSystemImageSource(new string[1] { TestDirectoryOutput + "out.tiff" }, true))
            {
                ocr.Initialize();
             //   ocr.RecognitionCulture = CultureInfo.GetCultureInfo("es-ES");
                ocr.Translate(fis, "application/pdf", TestDirectoryOutput+ "blah.pdf");
                ocr.ShutDown();
            }


            Assert.IsTrue(FileDirectoryUtil.CountFilesInADirectory(TestDirectoryOutput) > 0,
                          "Count should be greater than 0");
        }

        [TestMethod]
        public void TestMethod2()
        {
            ocr.Initialize();
            try
            {
               // _pageNum = 0;
              //  this.Cursor = Cursors.WaitCursor;
//                ocr.PreprocessingOptions.AutoRotate = chkFixPageOrientation.Checked;
//                pdfTrans.AutoPageRotation = chkFixPageOrientation.Checked;
                FileSystemImageSource fs = new FileSystemImageSource(new string[] { TestDirectory + "File1_NonSearch.pdf" }, true);
                ocr.Translate(fs, "application/pdf", TestDirectoryOutput+ "blah2.pdf");
            }
            finally
            {
                ocr.ShutDown();
            }

            Assert.IsTrue(FileDirectoryUtil.CountFilesInADirectory(TestDirectoryOutput) > 0,
              "Count should be greater than 0");
        }
    }

    public class FileDirectoryUtil
    {
        /// <summary>
        /// Utility method for changing permissions of files one level deep given a directory.
        /// </summary>
        /// <param name="directory">The directory to</param>
        public static void SetFilePermissions(string directory)
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(directory);
            foreach (FileInfo fileInfo in directoryInfo.GetFiles())
            {
                fileInfo.Attributes = FileAttributes.Normal;
            }
        }

        /// <summary>
        /// Removes directories and files recursively.
        /// </summary>
        /// <param name="directory">The root directory to start deleting from.</param>
        public static void RemoveDirectoryAndFilesRecursive(string directory)
        {
            if (Directory.Exists(directory))
            {
                DirectoryInfo directoryInfo = new DirectoryInfo(directory);

                DirectoryInfo[] directoryInfos = directoryInfo.GetDirectories();
                foreach (DirectoryInfo info in directoryInfos)
                {
                    RemoveDirectoryAndFilesRecursive(info.FullName);
                }
                foreach (FileInfo fileInfo in directoryInfo.GetFiles())
                {
                    fileInfo.Delete();
                }
                Directory.Delete(directory);
            }
        }

        /// <summary>
        /// Returns the number of files in a directory
        /// </summary>
        /// <param name="directory"> The directory that has files to be counted. </param>
        /// <returns>return -1 if directory doesnt exist</returns>
        public static int CountFilesInADirectory(string directory)
        {
            int returnVal = -1;

            if (Directory.Exists(directory) == true)
            {
                DirectoryInfo directoryInfo = new DirectoryInfo(directory);
                returnVal = directoryInfo.GetFiles().Length;
            }

            return returnVal;
        }
    }
}