Updated code for pdf table issue

This commit is contained in:
nisha
2024-10-28 20:07:11 +05:30
committed by rajesh
parent fc6293b3d3
commit 564d5d5dd2
2 changed files with 46 additions and 10 deletions

View File

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

View File

@@ -4,6 +4,8 @@ import java.lang.reflect.Field;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
@@ -396,4 +398,29 @@ public class Utils {
return null; 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);
}
} }