PDF export: ensure the file always have a pdf extension
This commit is contained in:
@@ -295,7 +295,8 @@ class MainViewModel(
|
||||
fun getFinalPdf(): GeneratedPdf? {
|
||||
val tempPdf = _pdfUiState.value.generatedPdf ?: return null
|
||||
val tempFile = tempPdf.file
|
||||
val newFile = File(tempFile.parentFile, desiredFilename)
|
||||
val fileName = PdfFileManager.addExtensionIfMissing(desiredFilename)
|
||||
val newFile = File(tempFile.parentFile, fileName)
|
||||
if (tempFile.absolutePath != newFile.absolutePath) {
|
||||
if (newFile.exists()) newFile.delete()
|
||||
val success = tempFile.renameTo(newFile)
|
||||
|
||||
@@ -27,6 +27,15 @@ class PdfFileManager(
|
||||
private val externalDir: File,
|
||||
private val pdfWriter: PdfWriter
|
||||
) {
|
||||
companion object {
|
||||
fun addExtensionIfMissing(fileName: String): String {
|
||||
return if (fileName.lowercase().endsWith(".pdf"))
|
||||
fileName
|
||||
else
|
||||
"$fileName.pdf"
|
||||
}
|
||||
}
|
||||
|
||||
fun generatePdf(jpegs: Sequence<ByteArray>): GeneratedPdf {
|
||||
pdfDir.mkdirs()
|
||||
require(pdfDir.exists() && pdfDir.isDirectory) { "Invalid pdfDir: $pdfDir" }
|
||||
|
||||
@@ -260,7 +260,7 @@ private fun CloseButton(onDismiss: () -> Unit) {
|
||||
|
||||
fun defaultFilename(): String {
|
||||
val timestamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
|
||||
return "scan_$timestamp.pdf"
|
||||
return "scan_$timestamp"
|
||||
}
|
||||
|
||||
fun formatFileSize(sizeInBytes: Long?, context: Context): String {
|
||||
|
||||
@@ -84,4 +84,12 @@ class PdfFileManagerTest {
|
||||
assertThat(pdf.file.readBytes()).isEqualTo(byteArrayOf(0x01, 0x02, 0x11))
|
||||
assertThat(pdf.file.name).endsWith(".pdf")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun addExtensionIfMissing() {
|
||||
assertThat(PdfFileManager.addExtensionIfMissing("f1.pdf")).isEqualTo("f1.pdf")
|
||||
assertThat(PdfFileManager.addExtensionIfMissing("f2.PDF")).isEqualTo("f2.PDF")
|
||||
assertThat(PdfFileManager.addExtensionIfMissing("f3")).isEqualTo("f3.pdf")
|
||||
assertThat(PdfFileManager.addExtensionIfMissing("f4.txt")).isEqualTo("f4.txt.pdf")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user