private void optimizationReplaceAllSinglePage(PdfPageBase page, Map<String, Object> reportPDFFields, List<PdfTextFragment> textFragmentCollection) {
// Create text find options for searching
PdfTextFindOptions findOptions = new PdfTextFindOptions();
// Set search parameters
findOptions.setTextFindParameter(EnumSet.of(TextFindParameter.Regex));
String regex = "\\${2,}\\w+\\${2,}";
// PdfTextReplacer replacer = new PdfTextReplacer(page);
PdfTextReplaceOptions options = new PdfTextReplaceOptions();
options.setReplaceType(EnumSet.of(ReplaceActionType.Regex));
List<TextToDraw> textsToDraw = new ArrayList<>();
for (PdfTextFragment textFragment : textFragmentCollection) {
try {
String text = textFragment.getText();
String key = text.replaceAll("\\$", StringPool.BLANK);
if (reportPDFFields.containsKey(key)) {
// float fontSize = textFragment.getTextState().getFontSize();
// if (fontSize < 5f) fontSize = 7f;
if (reportPDFFields.get(key) instanceof String) {
float fontSize;
try {
fontSize = textFragment.getTextStates()[0].getFontSize();
} catch (Exception e) {
fontSize = 7f;
}
String value = (String) reportPDFFields.get(key);
try {
value = value.replaceAll("\\r?\\n", " ");
int charLimitPerLine = textFragment.getText().length();
if (value.length() < charLimitPerLine) {
if (fontSize > 5) {
// replacer.replaceAllText(textFragment.getText(), (String) reportPDFFields.get(key));
} else {
if (_log.isInfoEnabled()) {
_log.info("[optimizationReplaceAll]"
+ "[value]" + " [" + value + "]"
+ "[X]" + " [" + textFragment.getBounds()[0].getX() + "]"
+ "[y]" + " [" + textFragment.getBounds()[0].getY() + "]"
);
}
if (value.equals("■") || value.equals("□")) {
continue;
}
Rectangle2D bounds = textFragment.getBounds()[0].getBounds2D();
fontSize = 7f;
// replacer.replaceText(textFragment.getText(), " "); // Spazio non vuoto
page.getCanvas().drawRectangle(
PdfBrushes.getWhite(),
new Rectangle2D.Float(
(float) bounds.getX() - 1,
(float) bounds.getY() - 1,
(float) bounds.getWidth() + 2,
(float) bounds.getHeight() + 2
)
);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", Font.PLAIN,

, true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);
page.getCanvas().drawString(
value,
font,
PdfBrushes.getBlack(),
(float) bounds.getX(),
(float) bounds.getY(),
format
);
// NO save/restore, solo transparency
page.getCanvas().setTransparency(1);
// replacer.replaceText(textFragment.getText(), "");
// PdfTextWidget textWidget = new PdfTextWidget(
// value,
// new PdfTrueTypeFont("C:\\Users\\ja.dinardo\\Desktop\\NotoSans\\NotoSans-Regular-2.ttf", fontSize),
// PdfBrushes.getBlack()
// );
// Rectangle2D bounds = textFragment.getBounds()[0].getBounds2D();
// float minHeight = Math.max((float) bounds.getHeight(), fontSize + 1);
//
// PdfLayoutResult result = textWidget.draw(
// page,
// new Rectangle2D.Float(
// (float) bounds.getX(),
// (float) bounds.getY(),
// (float) (bounds.getWidth()), // margine destro
// (float) minHeight // altezza automatica
// )
// );
// page.getCanvas().restore();
}
} else {
// replacer.replaceText(textFragment.getText(), "");
// PdfTextWidget textWidget = new PdfTextWidget(
// value,
// new PdfTrueTypeFont("C:\\Users\\ja.dinardo\\Desktop\\NotoSans\\NotoSans-Regular-2.ttf", fontSize),
// PdfBrushes.getBlack()
// );
// Rectangle2D bounds = textFragment.getBounds()[0].getBounds2D();
// float minHeight = Math.max((float) bounds.getHeight(), fontSize + 1);
//
// PdfLayoutResult result = textWidget.draw(
// page,
// new Rectangle2D.Float(
// (float) bounds.getX(),
// (float) bounds.getY(),
// (float) (bounds.getWidth()), // margine destro
// (float) minHeight // altezza automatica
// )
// );
}
} catch (Exception e) {
_log.error("Could not replace text", e);
}
} else {
if (_log.isDebugEnabled()) {
_log.debug("[asposePDFExporterImpl] optimizationReplaceAll error replacing: key = " + key + "text = " + text);
}
// replacer.replaceText(textFragment.getText(), StringPool.DASH);
}
} else {
// replacer.replaceText(textFragment.getText(), StringPool.DASH);
}
} catch (Exception e1) {
_log.error("[asposePDFExporterImpl] optimizationReplaceAll " + e1.getMessage(), e1);
}
}
}