package
com.example.newcanaryproject
import
android.os.Bundle
import
android.util.Log
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
import
androidx.compose.runtime.*
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.text.font.FontWeight
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.*
import
com.example.newcanaryproject.ui.theme.*
import
com.itextpdf.text.pdf.PdfReader
import
com.itextpdf.text.pdf.parser.PdfTextExtractor
class
MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
NewCanaryProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"Text Extractor in Android"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
}
)
}
) {
textExtractor()
}
}
}
}
}
}
@Composable
fun textExtractor() {
val extractedText = remember {
mutableStateOf(
""
)
}
Column(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight()
.fillMaxSize()
.padding(
6
.dp),
verticalArrangement = Arrangement.Bottom,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(text = extractedText.value, color = Color.Black, fontSize =
12
.sp)
Spacer(modifier = Modifier.height(
10
.dp))
Button(
modifier = Modifier
.fillMaxWidth()
.padding(
20
.dp),
onClick = {
extractData(extractedText)
}) {
Text(modifier = Modifier.padding(
6
.dp), text =
"Extract Text from PDF"
)
}
}
}
private
fun extractData(extractedString: MutableState<String>) {
try
{
var extractedText =
""
val pdfReader: PdfReader = PdfReader(
"res/raw/android.pdf"
)
val n = pdfReader.numberOfPages
for
(i in
0
until n) {
extractedText =
""
"
$extractedText${
PdfTextExtractor.getTextFromPage(pdfReader, i +
1
).trim { it <=
' '
}
}
""
".trimIndent()
}
extractedString.value = extractedText
pdfReader.close()
}
catch
(e: Exception) {
e.printStackTrace()
}
}