Основываясь на коде, опубликованном в https://stackoverflow.com/a/51654691, я смог применить примечания выделения, подчеркивания и вычеркивания к тексту в PDF-файлах.Сейчас я пробую концептуально похожую волнистую аннотацию, и она, похоже, ничего не делает (текст кажется неизменным).
Я не могу найти никаких примеров специально для этого (а в PDFBox JIRA нетвозникают проблемы, связанные с «волнистой»), поэтому я застрял на том, как использовать эту аннотацию.
Я мог бы опубликовать код, который я использовал, но он по сути такой же, как приведенный выше, за исключением использованияSUB_TYPE_SQUIGGLY вместо SUB_TYPE_HIGHLIGHT.
Обновление: это код, с которым я тестирую его в его самой базовой форме.
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationTextMarkup;
public class MainSourceSO {
public static void main (String[] args) throws Exception {
PDDocument document = PDDocument.load(new File("SO-example.pdf"));
List<PDAnnotation> annotations = document.getPage(0).getAnnotations();
PDColor color = new PDColor(new float[] { 1, 1 / 255F, 1 }, PDDeviceRGB.INSTANCE);
PDAnnotationTextMarkup highlight = new PDAnnotationTextMarkup(PDAnnotationTextMarkup.SUB_TYPE_UNDERLINE);
highlight.setRectangle(new PDRectangle(72, 400, 72, 18));
highlight.setQuadPoints(new float[]{72.0f,418.0f,142.002f,418.0f,72.0f,400.0f,142.002f,400.0f});
highlight.setColor(color);
annotations.add(highlight);
highlight = new PDAnnotationTextMarkup(PDAnnotationTextMarkup.SUB_TYPE_HIGHLIGHT);
highlight.setRectangle(new PDRectangle(72, 500, 72, 18));
highlight.setQuadPoints(new float[]{72.0f,518.0f,142.002f,518.0f,72.0f,500.0f,142.002f,500.0f});
highlight.setColor(color);
annotations.add(highlight);
highlight = new PDAnnotationTextMarkup(PDAnnotationTextMarkup.SUB_TYPE_STRIKEOUT);
highlight.setRectangle(new PDRectangle(72, 600, 72, 18));
highlight.setQuadPoints(new float[]{72.0f,618.0f,142.002f,618.0f,72.0f,600.0f,142.002f,600.0f});
highlight.setColor(color);
annotations.add(highlight);
highlight = new PDAnnotationTextMarkup(PDAnnotationTextMarkup.SUB_TYPE_SQUIGGLY);
highlight.setRectangle(new PDRectangle(72, 700, 72, 18));
highlight.setQuadPoints(new float[]{72.0f,718.0f,142.002f,718.0f,72.0f,700.0f,142.002f,700.0f});
highlight.setColor(color);
annotations.add(highlight);
File file1 = new File("SO-example-2.pdf");
document.save(file1);
}
}