Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中使用itextpdf设置垂直文本对齐?_Android_Android Canvas_Vertical Alignment_Itextpdf - Fatal编程技术网

如何在android中使用itextpdf设置垂直文本对齐?

如何在android中使用itextpdf设置垂直文本对齐?,android,android-canvas,vertical-alignment,itextpdf,Android,Android Canvas,Vertical Alignment,Itextpdf,如何设置从底部到顶部的垂直文本 这些是动态生成的文本。所以我考虑将每个文本放在一个表中的标签中 这不起作用: 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.g

如何设置从
底部到顶部的垂直文本

这些是动态生成的文本。所以我考虑将每个文本放在一个表中的标签中

这不起作用:

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>";
}
我仍然可以使用画布旋转文本并进一步传入地图以显示吗

请帮助我,因为我是android画布和itextpdf的新手


谢谢

为什么要使用“VerticalText”类来绘制西文文本。VerticalText类将用于特殊的书写系统,如日语或汉语。当我看你的屏幕截图时,我看不到垂直文本。我看到的文字只是简单的旋转。另外:你的问题是关于Android(屏幕截图)还是关于iText?这还不清楚。@BrunoLowagie-我用它只是作为一种点击和试用的方式来获取垂直文本。也许这是错误的方式。然而,我在android应用程序中使用iText从html生成Pdf。我希望生成的Pdf中的文本与屏幕截图中的文本类似。@BrunoLowagie-需要进一步注意的是-我的html包含一些元素,我稍后将使用该程序替换这些元素。这些元素由html标记(如
{VERTICALTEXT}
中的大括号表示。然后在程序中,我用map-like-
map.put(“VERTICALTEXT”,verticalLoc)替换它。然后它的
html=html.replace(“{e.getKey()+“}”,value)以替换和获取所需的html。我仍然可以使用
Canvas
旋转文本并进一步传递地图以供显示吗?@BrunoLowagie-我可以使用iText从html生成Pdf。我唯一无法得到的是垂直文本。iText似乎不支持像
-ms transform:rotate(270度)这样的样式
以在html中旋转文本。如何做到这一点?部分的困惑在于,当你们实际上指的是旋转文本时,你们谈论的是垂直文本。这是一个巨大的差异!此外,我不知道您是如何(甚至为什么)将HTML转换为PDF的。旋转单元格内容的方式如下:
cell.setRotation(90)有关示例,请参见和。
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);