Я использую приведенный ниже код, который меняет цвет синих ссылок на черный с pdf:
void testAllRgbBlueToBlackConverter(String resourceName, String resultName) throws IOException {
System.out.printf("\nConverting '%s'.\n", resourceName);
try ( InputStream resource = getClass().getResourceAsStream(resourceName);
PdfReader pdfReader = new PdfReader(resource);
OutputStream result = new FileOutputStream(new File(RESULT_FOLDER, resultName));
PdfWriter pdfWriter = new PdfWriter(result);
PdfDocument pdfDocument = new PdfDocument(pdfReader, pdfWriter) ) {
PdfCanvasEditor editor = new AllRgbBlueToBlackConverter();
for (int i = 1; i <= pdfDocument.getNumberOfPages(); i++)
{
editor.editPage(pdfDocument, i);
}
}
}
class AllRgbBlueToBlackConverter extends PdfCanvasEditor {
@Override
protected void write(PdfCanvasProcessor processor, PdfLiteral operator, List<PdfObject> operands)
{
String operatorString = operator.toString();
if (RGB_SETTER_CANDIDATES.contains(operatorString) && operands.size() == 4) {
if (isBlue(operands.get(0), operands.get(1), operands.get(2))) {
PdfNumber number0 = new PdfNumber(0);
operands.set(0, number0);
operands.set(1, number0);
operands.set(2, number0);
}
}
super.write(processor, operator, operands);
}
boolean isBlue(PdfObject red, PdfObject green, PdfObject blue) {
if (red instanceof PdfNumber && green instanceof PdfNumber && blue instanceof PdfNumber) {
float r = ((PdfNumber)red).floatValue();
float g = ((PdfNumber)green).floatValue();
float b = ((PdfNumber)blue).floatValue();
return b > .5f && r < .9f*b && g < .9f*b;
}
return false;
}
final Set<String> RGB_SETTER_CANDIDATES = new HashSet<>(Arrays.asList("rg", "RG", "sc", "SC", "scn", "SCN"));
}
Могу ли я ограничить приведенный выше код, в котором я ограничиваю это изменение цвета только тогда, когда текст равен"бла бла". В противном случае не изменить цвет? Этот код также изменяет цвет линии графика, если в pdf есть какой-либо график.
Я использую itext. Если у кого-то есть код, доступный в другой библиотеке. Пожалуйста, поделитесь этим со мной. Я застрял на этом с месяца. Я хочу изменить цвет определенного текста с синего на черный.