Я хочу преобразовать PDF в изображение, но мне нужно только одно выходное изображение, которое содержит все изображения и только векторную графику. Я не хочу текст

Подскажите, пожалуйста, как я могу этого добиться с помощью pdfbox?

Я пробовал код ниже:

try {
    PDDocument document = PDDocument.load(new File(inputFilePath));
    PDFRenderer pdfRenderer = new PDFRenderer(document);
    
    for (int page = 0; page < document.getNumberOfPages(); ++page)
    { 
        BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
        ImageIOUtil.writeImage(bim, outputFilePath + "-" + (page+1) + ".png", 300);
    }
    
    document.close();
} catch (Exception e) {
    e.printStackTrace();
}

Я прикрепил полученный результат

Смотрите это фото, я не хочу содержания:

[![См. Это изображение, я не хочу контент][1]][1]

Я ожидаю вывода ниже, см. Этот рисунок:

[![см. это изображение][2]][2]

1 ответ

Решение

В качестве первого шага вы можете удалить текст из PDF. Если текст в вашем PDF-файле хранится в потоках содержимого страницы (а не в какой-либо указанной форме XObjects или какой-либо аннотации), вы можете использоватьPdfContentStreamEditorиз этого ответа, например, вот так:

PDDocument document = ...;
for (PDPage page : document.getDocumentCatalog().getPages()) {
    PdfContentStreamEditor identity = new PdfContentStreamEditor(document, page) {
        @Override
        protected void write(ContentStreamWriter contentStreamWriter, Operator operator, List<COSBase> operands) throws IOException {
            String operatorString = operator.getName();

            if (TEXT_SHOWING_OPERATORS.contains(operatorString))
            {
                return;
            }

            super.write(contentStreamWriter, operator, operands);
        }

        final List<String> TEXT_SHOWING_OPERATORS = Arrays.asList("Tj", "'", "\"", "TJ");
    };
    identity.processPage(page);
}

( EditPageContent testtestRemoveTextDocument)

Если вы хотите получить результат в виде растрового изображения, теперь вы можете визуализировать этот документ, как и раньше.

Другие вопросы по тегам