2015-12-24 2 views
1

Как я могу обработать действительно длинный динамический текст для абзаца, который находится в фиксированном прямоугольнике в документе iText?iText Обработка переполнения абзаца

ColumnText ct = new ColumnText(canvas); 
Font paragraphFont=new Font(baseFont,4.5f); 
ct.setSimpleColumn(9, 70, 70, 95); 
Paragraph paragraph=new Paragraph("REALLLLLLLLLLY LONGGGGGGGGGG text",paragraphFont); 
ct.addElement(paragraph); 
ct.go(); 
+2

Добро пожаловать на StackOverflow! Не могли бы вы добавить к вашему вопросу более подробную информацию о проблеме и о том, как вы хотите работать (обертывание, обрезка и т. Д.). Может быть, вы можете добавить образ того, как вы хотите, чтобы такой текст появился? – trincot

+1

Текст будет обернут в соответствии с заданным вами прямоугольником. Текст, который не подходит, не будет отображаться. Он хранится в столбце, чтобы вы могли добавить его в другое место. Вы читали [iText FAQ] (http://developers.itextpdf.com/faq/category/absolute-positioning-text)? –

ответ

0

У меня есть копия/вставить фрагмент кода в примере, который я назвал SimpleColumn:

public void createPdf(String dest) throws IOException, DocumentException { 
    // step 1 
    Rectangle rect = new Rectangle(100, 120); 
    Document document = new Document(rect); 
    // step 2 
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest)); 
    // step 3 
    document.open(); 
    // step 4 
    PdfContentByte canvas = writer.getDirectContent(); 
    BaseFont baseFont = BaseFont.createFont(); 
    ColumnText ct = new ColumnText(canvas); 
    Font paragraphFont=new Font(baseFont,4.5f); 
    ct.setSimpleColumn(9, 70, 70, 95); 
    Paragraph paragraph = new Paragraph("REALLLLLLLLLLY LONGGGGGGGGGG text",paragraphFont); 
    ct.addElement(paragraph); 
    ct.go(); 
    // step 5 
    document.close(); 
} 

Это приводит к файлу simple_column.pdf:

enter image description here

Как вы можете видеть , текст отображается правильно внутри прямоугольника, нижний левый угол которого имеет координаты x = 9; y = 70, а верхний правый угол имеет координаты x = 70, y = 95. Текст не соответствовал ширине этого прямоугольника, поэтому он был обернут (разбит на символ пробела и распределен по двум строкам).

Вот как долго обрабатываются абзацы, когда вы хотите отображать их в фиксированном прямоугольнике. Если абзац не соответствует прямоугольнику, оставшаяся часть абзаца сохраняется в объекте ColumnText. Вы можете определить новый простой столбец (используя разные координаты), чтобы отобразить остальную часть абзаца.

Смежные вопросы