优化合并的进度展示。

This commit is contained in:
ocean 2025-10-09 17:34:12 +08:00
parent c04dae1fe3
commit 6ffb08dc4f

View File

@ -15,6 +15,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
import java.io.FileOutputStream
@ -173,16 +174,34 @@ object PdfUtils {
try {
val merger = PDFMergerUtility()
val total = 100
// 加载文件 0~30%
inputFiles.forEachIndexed { index, file ->
merger.addSource(file)
onProgress?.invoke(index + 1, inputFiles.size)
delay(100)
val progress = ((index + 1).toFloat() / inputFiles.size * 30).toInt()
onProgress?.invoke(progress, total)
delay(50)
}
merger.destinationFileName = outputFile.absolutePath
// 伪进度30%~95%
var fakeProgress = 30
val fakeJob = launch {
while (fakeProgress < 95) {
fakeProgress += (1..3).random() // 每次前进一点点
if (fakeProgress > 95) fakeProgress = 95
onProgress?.invoke(fakeProgress, total)
delay((100L..300L).random()) // 模拟不均匀的进度
}
}
merger.mergeDocuments(MemoryUsageSetting.setupTempFileOnly())
fakeJob.cancel()
onProgress?.invoke(100, total)
outputFile
} catch (e: Exception) {
e.printStackTrace()