Пытался сделать краисво, ничего не получиолось, только норм отчет. Сейчас сделаю просто норм дезигн, перенсу бизнесс логику, а там посмотрим, уже 0:00....

This commit is contained in:
Кашин Максим 2023-12-25 23:39:52 +04:00
parent c1251004ba
commit 34f379b65d

View File

@ -228,8 +228,8 @@ private fun createPdfContent(outputStream: OutputStream, reportData: List<Report
val canvas = page.canvas
val paint = Paint()
paint.color = android.graphics.Color.BLACK
paint.textSize = 24f
paint.textSize = 16f // Уменьшаем размер шрифта для лучшей видимости
paint.isAntiAlias = true
// Отображаем заголовок
val title = "Отчет"
@ -237,14 +237,22 @@ private fun createPdfContent(outputStream: OutputStream, reportData: List<Report
val yTitle = 40f
canvas.drawText(title, xTitle, yTitle, paint)
// Отображаем данные из запроса
val yStart = yTitle + 40f
val lineHeight = 40f
// Отображаем данные в виде таблицы
val tableStartY = yTitle + 80f
val columnWidths = floatArrayOf(0.5f, 1.5f, 1f, 1.5f, 1f) // Увеличиваем ширину столбцов
val rowHeight = 30f // Увеличиваем высоту строки
drawTableRow(canvas, arrayOf("ID", "Дата проверки", "Вес", "Количество", "ID велосипеда"), columnWidths, tableStartY, paint)
for ((index, report) in reportData.withIndex()) {
val y = yStart + index * lineHeight
Log.d("Проверка данных","${report.id} | ${report.dateTime} | ${report.weight} | ${report.maxCount} | ${report.bikeId}")
val text = "${report.id} | ${report.dateTime} | ${report.weight} | ${report.maxCount} | ${report.bikeId}"
canvas.drawText(text, 40f, y, paint)
val row = arrayOf(
report.id.toString(),
report.dateTime.toString(),
report.weight.toString(),
report.maxCount.toString(),
report.bikeId.toString()
)
drawTableRow(canvas, row, columnWidths, tableStartY + (index + 1) * rowHeight, paint)
}
pdfDocument.finishPage(page)
@ -253,6 +261,18 @@ private fun createPdfContent(outputStream: OutputStream, reportData: List<Report
pdfDocument.close()
}
private fun drawCell(canvas: Canvas, paint: Paint, text: String, x: Float, y: Float, width: Int) {
canvas.drawText(text, x + (width - paint.measureText(text)) / 2, y + paint.textSize, paint)
private fun drawTableRow(
canvas: Canvas,
row: Array<String>,
columnWidths: FloatArray,
y: Float,
paint: Paint
) {
var x = 40f
for (i in row.indices) {
val text = row[i]
canvas.drawText(text, x, y, paint)
x += columnWidths[i] * 80 // Увеличиваем ширину столбцов
}
}