конвертировать документ Kofax Release в двоичный файл - PullRequest
0 голосов
/ 28 ноября 2018

Когда дело доходит до выпуска Kofax, я хочу преобразовать каждый отсканированный документ в байтовый массив.В моем методе ReleaseDoc я сначала хочу проверить, является ли файл файлом PDF или TIFF.

Пользователь может установить значение bool в ReleaseSetup, которое приводит к использованию файла PDF, еслиВы должны выбрать между несколькими типами файлов.

Я только что создал фрагмент, который пытается преобразовать файл в байтовый массив.

Как я могу проверить, должен ли я использовать PDF или файл изображения в моем методе ReleaseDoc?

Не имеет значения, содержит ли файл PDF три страницы, потому что этоотдельный файл.Но это важно, если есть три файла TIFF, которые нужно преобразовать в один байтовый массив.Как мне этого добиться?

Подводя итог, мне нужен в моем методе только способ извлечь имя и байтовый массив из документа.

    public KfxReturnValue ReleaseDoc()
    {
        try
        {
            string fileName = string.Empty;
            string filePath = string.Empty;

            bool isPDFFile = false; // how to check it?

            if (isPDFFile)
            {
                filePath = documentData.KofaxPDFPath;
                fileName = documentData.KofaxPDFFileName;
            }
            else
            {
                ImageFiles files = documentData.ImageFiles;

                if (files.Count == 1)
                {
                    fileName = files[0].FileName;
                    filePath = documentData.ImageFilePath;
                }
                else
                {
                    // Create one document out of multiple TIFF files?
                    // fileName = ...
                    // filePath = ...
                }
            }

            byte[] binaryFile = File.ReadAllBytes(filePath);

            // use fileName and binaryFile

            return KfxReturnValue.KFX_REL_SUCCESS;
        }
        catch (Exception e)
        {
            // Handle exception
            return KfxReturnValue.KFX_REL_ERROR;
        }
    }

1 Ответ

0 голосов
/ 03 декабря 2018

Не объединять TIFF вручную.Вот для чего предназначен метод Copy в коллекции ImageFiles.Вот краткий пример - вы получите два байтовых массива BinaryImage[] и PdfImage[].Во время выпуска просто проверьте нулевое значение перед попыткой записи PDF-файлов (если генератор PDF не был добавлен в очередь, у вас просто не будет этих файлов).

Обратите внимание, что во время установки вы можете изменить *Свойство 1007 * объекта ReleaseSetupData, а затем метод Copy будет использовать указанный формат (0 = многостраничный TIFF, CCITT G4).

// binary image
DocumentData.ImageFiles.Copy(Path.GetTempPath(), -1);
string tmpFile = Path.Combine(Path.GetTempPath(), DocumentData.UniqueDocumentID.ToString("X8")) + Path.GetExtension(ImageFileNames[0]);
if (File.Exists(tmpFile))
{
    // assuming BinaryImage is of type byte[]
    BinaryImage = File.ReadAllBytes(tmpFile);
    File.Delete(tmpFile);
}

// binary PDF
if (File.Exists(DocumentData.KofaxPDFFileName))
{
    // assuming BinaryPdf is of type byte[]
    BinaryPdf = File.ReadAllBytes(DocumentData.KofaxPDFFileName);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...