Я работаю над индивидуальным текстовым макетом 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
Как достичь лидерства и выравнивания в отношении фразы в OpenPDF ColumnText с встроенным рендерингом? ⇐ JAVA
Программисты JAVA общаются здесь
1759177243
Anonymous
Я работаю над индивидуальным текстовым макетом PDF, используя OpenPDF [b]ColumnText [/b] и необходимо отобрать несколько фраз, каждая из которых со своим ведущим, интервалом персонажей, выравниванием и стилем. В настоящее время я использую [b]ct.addElement(Paragraph) [/b] для каждой фразы, которая дает мне лидерство и выравнивание уровня абзаца, но не создает желаемый встроенный текстовый поток (фразы стекают вертикально с отдельными настройками, но не текут как встроенный текст). Когда я использую [b]ct.addText(Chunk) [/b] с ручным позиционированием, я получаю встроенный рендеринг, но теряю отдельный ведущий и выравнивание для каждой фразы.
Вот рендеринг, которого я хочу достичь (см. Третье изображение, игнорируйте шрифт и цвет на данный момент):
Каждый цвет должен иметь свою собственную выравнивание (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();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79776532/how-to-achieve-per-phrase-leading-and-alignment-in-openpdf-columntext-with-inlin[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия