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 description for PDFSearchableTest /// [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 { /// /// Utility method for changing permissions of files one level deep given a directory. /// /// The directory to public static void SetFilePermissions(string directory) { DirectoryInfo directoryInfo = new DirectoryInfo(directory); foreach (FileInfo fileInfo in directoryInfo.GetFiles()) { fileInfo.Attributes = FileAttributes.Normal; } } /// /// Removes directories and files recursively. /// /// The root directory to start deleting from. 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); } } /// /// Returns the number of files in a directory /// /// The directory that has files to be counted. /// return -1 if directory doesnt exist 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; } } }