1

当谈到 Kofax Release 时,我想将每个扫描的文档转换为字节数组。在我的ReleaseDoc方法中,我首先要检查文件是 PDF 文件还是 TIFF 文件。

用户可以在其中设置一个布尔值,ReleaseSetup从而导致“如果您必须在多种文件类型之间做出决定,请使用 PDF 文件”。

我刚刚创建了一个尝试将文件转换为字节数组的片段。

如何检查我是否必须在我的ReleaseDoc方法中使用 PDF 或图像文件?

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;
        }
    }
4

1 回答 1

0

不要手动合并 TIFF。这就是集合Copy上的方法的用途。ImageFiles这是一个简短的示例-您最终将得到两个字节数组,BinaryImage[]并且PdfImage[]. 在发布期间,只需在尝试编写 PDF 之前检查 null (如果 PDF 生成器未添加到队列中,您将不会拥有这些文件)。

请注意,在设置过程中,您可以更改对象的ImageType属性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);
}
于 2018-12-03T20:14:10.417 回答