Получить доступ к ImageFiles из объекта данных релиза
Я хотел бы конвертировать файлы изображений из выпуска Kofax. Я взял это для информации.
конвертировать документ Kofax Release в двоичный файл
и создал этот код
public KfxReturnValue ReleaseDoc()
{
try
{
documentData.ImageFiles.Copy(Path.GetTempPath(), -1);
string tmpFile = Path.Combine(Path.GetTempPath(), documentData.UniqueDocumentID.ToString("X8")) + Path.GetExtension(documentData.ImageFiles[0].FileName);
string fileName = Path.GetFileName(tmpFile);
byte[] binaryFile = null;
if (File.Exists(documentData.KofaxPDFFileName)) // PDF
{
binaryFile = File.ReadAllBytes(documentData.KofaxPDFFileName);
}
else if (File.Exists(tmpFile)) // TIFF
{
binaryFile = File.ReadAllBytes(tmpFile);
File.Delete(tmpFile);
}
else
{
// throw an error
return KfxReturnValue.KFX_REL_ERROR;
}
// use fileName and binaryFile
return KfxReturnValue.KFX_REL_SUCCESS;
}
catch (Exception e)
{
// log the error
return KfxReturnValue.KFX_REL_ERROR;
}
}
Когда я выполню эту строку
string tmpFile = Path.Combine(Path.GetTempPath(), documentData.UniqueDocumentID.ToString("X8")) + Path.GetExtension(documentData.ImageFiles[0].FileName);
он всегда переходит в оператор catch и выбрасывает элемент, не найденный в исключении коллекции.
Что не так и как я могу это исправить?
1 ответ
Я пытался решить проблему с помощью
string fileName;
foreach (ImageFile img in documentData.ImageFiles)
{
fileName = img.FileName;
break;
}
вместо
documentData.ImageFiles[0]
Я знаю, что это решение действительно ужасно, и я постараюсь найти лучшее. Я только что узнал, что
string tempImgFileName = documentData.ImageFiles.ReleasedDirectory;
тоже работает. Наконец я использую этот код
public KfxReturnValue ReleaseDoc()
{
try
{
string tempPath = Path.GetTempPath();
documentData.ImageFiles.Copy(tempPath, -1);
string tempImgFileName = documentData.ImageFiles.ReleasedDirectory;
string fileExtension = Path.GetExtension(tempImgFileName);
string documentId = documentData.UniqueDocumentID.ToString("X8");
string filePath = Path.Combine(tempPath, documentId);
string tmpTargetFile = filePath + fileExtension;
string fileToRead = string.Empty;
if (File.Exists(documentData.KofaxPDFFileName)) // try to create a PDF binary
{
fileToRead = documentData.KofaxPDFFileName;
}
else if (File.Exists(tmpTargetFile)) // try to create a TIFF binary if PDF is not possible
{
fileToRead = tmpTargetFile;
}
else
{
// handle error
return KfxReturnValue.KFX_REL_ERROR;
}
string fileName = Path.GetFileName(tmpTargetFile);
byte[] binaryFile = File.ReadAllBytes(fileToRead);
File.Delete(tmpTargetFile);
// use fileName and binaryFile;
return KfxReturnValue.KFX_REL_SUCCESS;
}
catch (Exception e)
{
// handle error
return KfxReturnValue.KFX_REL_ERROR;
}
}