2015-08-31 3 views
1

Я хочу написать некоторый контент в моем PDF-формате с помощью PDFBox. Когда высота страницы меньше, чем у поля, мне нужно создать другую страницу. Я хочу сохранить информацию о курсоре. У меня есть способ, с помощью которого я могу получить информацию о курсоре, например, где присутствует курсор, поэтому я могу вычесть маржу из позиции курсора и добавить к ней другую страницу. Прямо сейчас я сделал что-то вроде этогоКак добавить несколько страниц в PDFBox

PDRectangle rect = page.getMediaBox(); 
float positionY = rect.getWidth(); 
positionY = positionY - pdfWriter.defaultBottomMargin; 
if(positionY < positionX) { 
       positionY = rect.getWidth(); 
       PDPage page2 = page; 
       rect = page2.getMediaBox(); 
       document.addPage(page2); 
       PDPageContentStream contentStream = new PDPageContentStream(document, page2); 
       contentStream.appendRawCommands("T*\n"); 
       contentStream.beginText(); 
       // contentStream.setFont(font, 12); 
       contentStream.moveTextPositionByAmount(positionX, positionY); 
       contentStream.drawString(tmpText[k]); 
       contentStream.endText(); 
       contentStream.close(); 
       } 
+0

«Ответ» от «Mr. Noddy», вероятно, должен был быть комментарием, но он не имеет репутации в 50 очков. Он говорит вам посмотреть здесь: https://stackoverflow.com/questions/18152803/how-do-you-track-the-location-of-pdpagecontentstreams-text-output. Кстати, ответ на ваш вопрос «Есть ли способ, по которому я могу получить информацию о курсоре, например, где присутствует курсор», - «нет». –

+0

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

ответ

5

Вы можете использовать некоторые переменные уровня класса, как показано ниже, который поддерживает позиционирование через выполнение генерации PDF.

float PAGE_MARGIN = 20; 
float newPagepositionY = page.findMediaBox().getHeight() - PAGE_MARGIN; 
float positionY = newPagepositionY; 
PDPage currentPage = new PDPage(); 

Перед добавлением любого содержимого в PDF проверьте, достиг ли курсор в конце страницы или нет. т.е. Создание Funtion, как показано ниже

public boolean isEndOfPage(Row row) 
{ 
    float currentY = this.positionY ; 
    boolean isEndOfPage = currentY <= (PAGE_MARGIN + 10); 

    return isEndOfPage; 
} 

Используя выше Funtion, вы можете создать новую страницу, как требуется.

if (isEndOfPage(row)) 
{ 
    // Reset positionY to newPagepositionY 
    this.positionY = newPagepositionY; 

    this.currentPage = new PDPage(); 

    // your code 
}