Добавьте HTML-разметку, используя Java Apache PDFBOX - PullRequest
0 голосов
/ 03 октября 2019

Я использую PDFBOX и EasyTable, который расширяет PDFBOX для рисования таблиц данных. Я столкнулся с проблемой, из-за которой у меня есть Java-объект со строкой HTML-данных, которые мне нужно добавить в PDF с помощью PDFBOX. Копание документации, похоже, не приносит никаких плодов.

Приведенный ниже код представляет собой фрагмент привет-мира, который я хочу, чтобы в PDF-файле было сгенерировано форматирование H1.

// Create a document and add a page to it
        PDDocument document = new PDDocument();
        PDPage page = new PDPage();
        document.addPage( page );

// Create a new font object selecting one of the PDF base fonts
        PDFont font = PDType1Font.HELVETICA_BOLD;

// Start a new content stream which will "hold" the to be created content
        PDPageContentStream contentStream = new PDPageContentStream(document, page);

// Define a text content stream using the selected font, moving the cursor and drawing the text "Hello World"
        contentStream.beginText();
        contentStream.setFont( font, 12 );
        contentStream.moveTextPositionByAmount( 100, 700 );
        contentStream.drawString( "<h1>HelloWorld</h1>" );
        contentStream.endText();

// Make sure that the content stream is closed:
        contentStream.close();

// Save the results and ensure that the document is properly closed:
        document.save( "Hello World.pdf");
        document.close();

    }

Ответы [ 2 ]

1 голос
/ 26 октября 2019

Используйте jerico , чтобы отформатировать html-код для освобождения текста при правильном отображении вывода тегов.

sample

public String extractAllText(String htmlText){
    return new net.htmlparser.jericho
            .Source(htmlText)
            .getRenderer()
            .setMaxLineLength(Integer.MAX_VALUE)
            .setNewLine(null)
            .toString();
}

Включите в свой gradle или maven:

compile group: 'net.htmlparser.jericho', name: 'jericho-html', version: '3.4'
1 голос
/ 03 октября 2019

PDFBox не знает HTML, по крайней мере, не для создания контента.

Таким образом, с обычным PDFBox вы должны самостоятельно анализировать HTML и извлекать особые характеристики рисования текста из тегов, в которых находится текст.

Например, когда вы встречаете "<h1>HelloWorld</h1>", вам нужно извлечь текст "HelloWorld" и использовать информацию, содержащуюся в теге h1, чтобы выбрать подходящий шрифт основного заголовка и размер шрифта для рисования этого "HelloWorld".

В качестве альтернативы вы можете найти библиотеку, выполняющую этот разбор HTML и преобразующую в PDF инструкции для рисования текста для PDFBox, например Открыть HTML в PDF .

...