Я использую PDFBox PDFTextStripper для извлечения текста. Мне также нужно получить информацию о цвете для каждого символа, в идеале в методе writeString .
Я обнаружил, что это решение для PDFBox 1.8 (на самом деле его легко конвертировать в версию 2.0), и что мне еще нужно, так это цвет фона для каждого символа (так как в этом ответе есть только символ цвет).
Я добавил все обработчики для операторов Fill - CloseFillNonZeroAndStrokePath, CloseFillEvenOddAndStrokePath FillNonZeroAndStrokePath, FillEvenOddAndStrokePath, LegacyFillNonZeroRule, операторы FillNonZ * * 100 * * *, не только *, но и другие *, такие как 100 * * * *
public final class FillEvenOddRule extends OperatorProcessor {
@Override
public void process(Operator operator, List<COSBase> operands) throws IOException {
linePath.setWindingRule(GeneralPath.WIND_EVEN_ODD);
deleteCharsInPath();
linePath.reset();
PDGraphicsState gs = getGraphicsState();
PDColor nonStrokingColor = gs.getNonStrokingColor();
fillColor = nonStrokingColor.toRGB();
}
@Override
public String getName() {
return "f*";
}
}
Затем в processTextPosition Я попытался получить это fillColor и поместить его на карту для каждого символа (при условии, что поток контента работает последовательно - после завершения оператора Fill все последующие переходы к processTextPosition символов должны иметь это fillColor . Однако это не правда, и все символы имеют неправильный цвет. Есть файл Я пытаюсь В процессе обработки каждая вторая строка имеет синюю заливку, и я хотел бы получить этот синий цвет для каждого символа в такой строке и белый цвет для каждого символа в белой строке. Возможно ли это с PDFBox?