Я работаю над приложением Kotlin, которому необходимо обработать коллекцию PDF-файлов и объединить их в один документ. Одной из функций, запрошенных пользователями, является сортировка страниц в объединенном документе на основе имен файлов исходных документов.
Проблема, с которой я борюсь, заключается в том, как написать модульный тест, чтобы убедиться, что страницы объединенного документа расположены в правильном порядке. Мне нужен какой-то способ извлечь уникальный идентификатор для каждой страницы объединенного документа, который я могу сравнить со списком ожидаемых результатов. Кто-нибудь знает хороший способ сделать это?
Для справки, моя функция для объединения коллекции файлов выглядит так:
internal fun List.mergePdfsToOne(
path: String,
newFileTitle: String,
parentZipFileModifiedDate: Date,
dp: INT202DependencyProvider
): File {
return this.let { filesToMerge ->
COSStream().use { cosStream ->
ByteArrayOutputStream().use { mergedPdfOutputStream ->
val pdfMergeUtil = PDFMergerUtility()
pdfMergeUtil.destinationStream = mergedPdfOutputStream
generateDocInfo(
cosStream,
newFileTitle,
parentZipFileModifiedDate,
dp.integrationId.value()
).let { docInfo ->
// PDF and XMP properties must be identical, otherwise document is not PDF/A compliant
pdfMergeUtil.destinationDocumentInformation = docInfo.first
pdfMergeUtil.destinationMetadata = docInfo.second
}
pdfMergeUtil.addSources(filesToMerge.map { it.inputStream() })
pdfMergeUtil.mergeDocuments(MemoryUsageSetting.setupTempFileOnly())
File("$path/$newFileTitle").let { fileToWrite ->
FileUtils.writeByteArrayToFile(fileToWrite, mergedPdfOutputStream.toByteArray())
fileToWrite
}
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ith-pdfbox