@pilixiaopang
我们想与您分享我们已经调查了先前记录的故障单:
解决方法是,您可以在文本片段内重新创建文本片段(删除旧片段并在其位置创建新片段),从而可以为每个片段设置不同的颜色。请查看下面的代码片段,并记住您应该使用合适的字体(我在代码片段中使用了“ Arial Unicode MS”)。
Document doc = new Document(dataDir + "test1.pdf");
TextFragmentAbsorber tfa = new TextFragmentAbsorber();
doc.getPages().accept(tfa);
TextFragmentCollection tfc = tfa.getTextFragments();
Font font = FontRepository.findFont("Arial Unicode MS");
Random rand = new Random();
for (TextFragment tf : tfc) {
String text = tf.getText();
double mediumDistanceBetweenChars = tf.getRectangle().getWidth() / text.length();
// Remove previous fragment
for (TextSegment seg : tf.getSegments()) {
seg.setText("");
}
for (int i = 0; i < text.length(); i++) {
TextSegment textSegment = new TextSegment(String.valueOf(text.charAt(i)));
textSegment.setPosition(new Position(
tf.getPosition().getXIndent() + i * mediumDistanceBetweenChars,
tf.getPosition().getYIndent() * 2 - tf.getBaselinePosition().getYIndent()));
textSegment.getTextState().setFont(font);
// Set Random color
textSegment.getTextState().setForegroundColor(
Color.fromArgb(rand.nextInt(255), rand.nextInt(255), rand.nextInt(255)));
tf.getSegments().add(textSegment);
}
}