Как достичь лидерства и выравнивания в отношении фразы в OpenPDF ColumnText с встроенным рендерингом?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как достичь лидерства и выравнивания в отношении фразы в OpenPDF ColumnText с встроенным рендерингом?

Сообщение Anonymous »

Я работаю над индивидуальным текстовым макетом PDF, используя OpenPDF ColumnText и необходимо отобрать несколько фраз, каждая из которых со своим ведущим, интервалом персонажей, выравниванием и стилем. В настоящее время я использую ct.addElement(Paragraph) для каждой фразы, которая дает мне лидерство и выравнивание уровня абзаца, но не создает желаемый встроенный текстовый поток (фразы стекают вертикально с отдельными настройками, но не текут как встроенный текст). Когда я использую ct.addText(Chunk) с ручным позиционированием, я получаю встроенный рендеринг, но теряю отдельный ведущий и выравнивание для каждой фразы.
Вот рендеринг, которого я хочу достичь (см. Третье изображение, игнорируйте шрифт и цвет на данный момент):

Каждый цвет должен иметь свою собственную выравнивание (E.g. расстояние. Получите индивидуальное руководство и выравнивание, но фразы кажутся сложенными, а не текут встроенный. Ссылка: < /p>
Составной режим (AddElement) < /p>
inline-mode (addtext) < /p>
Ожидаемый текст с встроенным потоком и выравниванием < /p>
ОБ ОБЩЕСТВЕННЫХ ОБА. и встроенный текстовый поток в Columntext? Есть ли обходной путь, или мне нужно вручную измерить и позиционировать каждую часть фразы?
public void draw(){
float llx = 41;
float lly= 60;
float urx= 289;
float ury= 191;
try (Document document = new Document(new Rectangle(llx, lly, urx, ury), 0 , 0,0,0 )){
ByteArrayOutputStream os = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(document,os);
writer.setViewerPreferences(PdfWriter.PrintScalingNone);
document.open();
PdfContentByte cb = writer.getDirectContent();

ColumnText ct = new ColumnText(cb);
ct.setSimpleColumn(43, 61, 288, 189);

BaseFont bf = BaseFont.createFont();
ct.setUseAscender(false);
Font font = new Font(bf, 12);
font.setColor(Color.GREEN);

float dAscent = font.getBaseFont().getAscentPoint("d", font.getSize());
ct.setYLine(ury - dAscent);

String text1 = "Together ";
Chunk chunk1 = new Chunk(text1, font);
chunk1.setTextRenderMode(PdfContentByte.TEXT_RENDER_MODE_STROKE, 1 , Color.red);
chunk1.setCharacterSpacing(0.4f);
chunk1.setHorizontalScaling(1);
Paragraph paragraph1 = new Paragraph(chunk1);
paragraph1.setLeading(14);
paragraph1.setAlignment(Element.ALIGN_RIGHT);
ct.addElement(paragraph1);

String text2 = "with their Parents";
Chunk chunk2 = new Chunk(text2, font);
chunk2.setTextRenderMode(PdfContentByte.TEXT_RENDER_MODE_STROKE, 1 , Color.GREEN);
chunk2.setCharacterSpacing(0.3f);
chunk2.setHorizontalScaling(1);
Paragraph paragraph2 = new Paragraph(chunk2);
paragraph2.setLeading(12);
paragraph2.setAlignment(Element.ALIGN_LEFT);
ct.addElement(paragraph2);

String text3 = "Bella Sydney and george Thomas invite";
Chunk chunk3 = new Chunk(text3, font);
chunk3.setTextRenderMode(PdfContentByte.TEXT_RENDER_MODE_STROKE, 1 , Color.PINK);
chunk3.setCharacterSpacing(0.3f);
chunk3.setHorizontalScaling(1);
Paragraph paragraph3 = new Paragraph(chunk3);
paragraph3.setLeading(12);
paragraph3.setAlignment(Element.ALIGN_RIGHT);
ct.addElement(paragraph3);
ct.go();

document.close();
File outputPDF = new File("columnTextUserBaselineTest.pdf");
FileOutputStream fos = new FileOutputStream(outputPDF);
fos.write(os.toByteArray());
fos.close();
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... with-inlin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»