Как установить вертикальное выравнивание текста с itextpdf в Android?
Как можно установить текст по вертикали, начиная с bottom to top
?
Это динамически генерируемые тексты. Поэтому я решил поместить каждый текст в теги в таблице.
Это не работает:
for (int j = 0; j < cur.getCount(); j++)
{
VerticalText vt = new VerticalText(writer.getDirectContent());
//vt.setVerticalLayout(390, 570, 540, 12, 30);
vt.addText(new Phrase(location));
vt.go();
vt.setAlignment(Element.ALIGN_RIGHT);
verticalLoc = vt.toString();
verticalLoc += "<td align='left' width='28%'><div style='font-size:8px;-ms-transform:rotate(270deg);-moz-transform:rotate(270deg);" +
"-webkit-transform:rotate(270deg);-o-transform:rotate(270deg);'>"+ verticalLoc+ "</div></td>";
}
Стиль, используемый здесь для вертикального выравнивания, не работает для itextpdf.
ОБНОВИТЬ:
Хорошо, я нашел одну статью и пытаюсь с ее помощью реализовать текст статьи.
Но как связать это с моим кодом выше?
ОБНОВИТЬ:
Further as a point of note
-
Мой HTML содержит некоторые элементы, которые я заменяю позже, используя программу. Такие элементы обозначаются в скобках внутри HTML-тегов, таких как <td>{VERTICALTEXT}</td>
, Затем в программе я заменяю это на карту как map.put("VERTICALTEXT", verticalLoc);
, Тогда его html = html.replace("{" + e.getKey() + "}", value);
заменить и получить необходимый HTML.
ОБНОВИТЬ:
Как я это делаю
private static String FILE = Environment.getExternalStorageDirectory() + File.separator;
static PdfWriter writer;
HTMLWorker htmlWorker = new HTMLWorker(document);
Document document = new Document();
document.setMargins(2f, 2f, 2f, 2f);
writer = PdfWriter.getInstance(document, new FileOutputStream(FILE));
document.open();
PdfDestination pdfDest = new PdfDestination(PdfDestination.FIT, 0,
document.getPageSize().getHeight(), 0.5f);
PdfAction action = PdfAction.gotoLocalPage(1, pdfDest, writer);
writer.setOpenAction(action);
verticalLoc += "<td align='left' width='28%'><div style='font-size:8px;-ms-transform:rotate(270deg);-moz-transform:rotate(270deg);" +"-webkit-transform:rotate(270deg);-o-transform:rotate(270deg);'>"+ location+ "</div></td>";
InputStream is = getAssets().open("My_Report.html");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
map.put("VERTICALTEXT", verticalLoc);
map.put("STATE", getvalue("State", "Information", ""));
map.put("TIMEZONE", getvalue("Time_Zone", "Information", ""));
String htmlStr = getHTMLReport(new String(buffer), map);
htmlWorker.parse(new StringReader(htmlStr));
PdfContentByte cb = writer.getDirectContent();
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.saveState();
cb.beginText();
cb.moveText(x, y);
cb.setFontAndSize(bf, 12);
cb.showText(text);
cb.endText();
cb.restoreState();
document.newPage();
document.close();
openPdfIntent(FILE);
Могу ли я использовать Canvas для поворота текста и передачи карты дальше для отображения?
Пожалуйста, помогите, поскольку я новичок в Android Canvas и itextpdf.
Спасибо!