Updated code for pdf table issue

This commit is contained in:
nisha
2024-10-28 20:07:11 +05:30
parent 58901835c3
commit ff013827fb
2 changed files with 46 additions and 10 deletions

View File

@@ -277,6 +277,9 @@ public class PdfDao {
if(Utils.isValidDateString(fieldValue1)){
fieldValue1=Utils.formatDateString(String.valueOf(value));
}
if(Boolean.TRUE.equals(Utils.isItalianFormattedAmount(fieldValue)) ){
fieldValue= String.valueOf(Utils.convertItalianAmountToDouble(fieldValue));
}
PdfPCell valueCell = new PdfPCell(new Phrase(fieldValue1, valueFont));
valueCell.setPadding(5f); // Increase padding for better spacing
valueCell.setPaddingLeft(leftMargin); // Increase left margin for value
@@ -352,7 +355,6 @@ public class PdfDao {
List<String> orderedKeys = new ArrayList<>(trueKeys);
orderedKeys.addAll(falseKeys);
// Iterate through extracted data to populate the table
for (Map<String, Object> row : extractedData) {
// Add headers once
if (!headersAdded) {
for (String key : orderedKeys) {
@@ -369,16 +371,23 @@ public class PdfDao {
}
// Add data rows matching stateFieldMap keys
for (String key : orderedKeys) {
Object value = row.getOrDefault(key, ""); // Fetch value or use empty string if key not present
PdfPCell dataCell = new PdfPCell(new Phrase(value != null ? value.toString() : "", textFont));
dataCell.setBackgroundColor(new BaseColor(239, 243, 248)); // Light blue for the cell
dataCell.setMinimumHeight(rowHeight);
dataCell.setFixedHeight(rowHeight);
dataCell.setPadding(7f);
for (Map<String, Object> row : extractedData) {
// Add data rows matching stateFieldMap keys
for (String key : orderedKeys) {
if (stateFieldMap.containsKey(key)) { // Only add data cell if key is in stateFieldMap
Object value = row.getOrDefault(key, ""); // Fetch value or use empty string if key not present
String fieldValue= (String) value;
if(Boolean.TRUE.equals(Utils.isItalianFormattedAmount(fieldValue)) ){
fieldValue= String.valueOf(Utils.convertItalianAmountToDouble(fieldValue));
}
PdfPCell dataCell = new PdfPCell(new Phrase(fieldValue != null ?fieldValue: "", textFont));
dataCell.setBackgroundColor(new BaseColor(239, 243, 248)); // Light blue for the cell
dataCell.setMinimumHeight(rowHeight);
dataCell.setPadding(7f);
table.addCell(dataCell); // Add the cell to the table
}
table.addCell(dataCell); // Add the cell to the table
}
}
// Check if adding another row would exceed max height
if (table.getTotalHeight() + rowHeight > maxTableHeight) {

View File

@@ -5,6 +5,8 @@ import java.lang.reflect.Field;
import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
@@ -414,4 +416,29 @@ public class Utils {
return null;
}
}
public static String convertItalianAmountToDouble(String amount) throws NumberFormatException {
// Step 1: Remove the thousands separator and replace the decimal separator
String normalizedAmount = amount.replace(".", "").replace(",", ".");
// Step 2: Parse the string to a double
double value = Double.parseDouble(normalizedAmount);
if (value <= 0) {
return amount;
}
// Step 3: Format the double to 2 decimal places
DecimalFormat decimalFormat = new DecimalFormat("#.00");
return decimalFormat.format(value); // Return formatted string
}
public static boolean isItalianFormattedAmount(String input) {
// Regular expression to match Italian-style amounts (e.g., 41.003,00 or 123,45)
if (!input.contains(",")) {
return false; // Return false if there is no comma
}
String sanitizedInput = input.replace(",", "");
// Step 2: Check if the remaining string is a whole number
String wholeNumberPattern = "^\\d+$"; // Regex to match whole numbers
return sanitizedInput.matches(wholeNumberPattern);
}
}