我無法通過在iText中使用PdfContentByte設置下劃線和上劃線。我想爲sectionArea == 1 ||中的所有字段設置下劃線如getFontForFormat中所提到的區域== 3。到目前爲止,我只能做大膽的風格,我需要它被強調和劃線。 下面是代碼:如何設置下劃線爲PdfContentByte - iText
public void doOutputField(Field field) {
String fieldAsString = field.toString();
BaseFont baseFont = getFontForFormat(field);
float fontSize = 11;
Point bottomLeft = bottomLeftOfField(field, 11, baseFont);
int align;
align = PdfContentByte.ALIGN_LEFT;
//PdfContentByte content
content.beginText();
content.setFontAndSize(baseFont, fontSize);
content.setColorFill(Color.BLACK);
double lineHeight = field.getOutputHeight();
content.showTextAligned(align, fieldAsString, (float) bottomLeft.x,
(float) bottomLeft.y, 0f);
bottomLeft.y -= lineHeight;
content.endText();
}
public BaseFont getFontForFormat(Field field) {
try {
if (field.getSection().getArea().getArea() == 1
|| field.getSection().getArea().getArea() == 3) {
BaseFont bf = BaseFont.createFont(BaseFont.TIMES_BOLD,
BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
return bf;
} else {
BaseFont bf = BaseFont.createFont("Times-Roman",
BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
return bf;
}
} catch (Exception e) {
}
return null;
}
在此先感謝
編輯(由布魯諾Lowagie解決):
這個問題可以通過利用ColumnText來解決。
if (field.getSection().getArea().getArea() == 1
|| field.getSection().getArea().getArea() == 3) {
Chunk chunk = new Chunk(fieldAsString);
chunk.setUnderline(+1f, -2f);
if (field.getSection().getArea().getArea() == 3) {
chunk.setUnderline(+1f, (float) field.getBoundHeight());
}
Font font = new Font();
font.setFamily("Times Roman");
font.setStyle(Font.BOLD);
font.setSize((float) 11);
chunk.setFont(font);
Paragraph p = new Paragraph();
p.add(chunk);
ColumnText ct = new ColumnText(content);
ct.setSimpleColumn(p, (float)bottomLeft.x, (float)bottomLeft.y,
(float)field.getBoundWidth() + (float)bottomLeft.x,
(float)field.getBoundHeight() + (float)bottomLeft.y,
(float)lineHeight, align);
try {
ct.go();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
感謝
是的..我剛剛發現了答案也是通過使用columnText,因爲你說..我仍然有問題與超線雖然..任何想法? 我會發布我上面的當前解決方案.. 謝謝.. –
請下載http://www.manning.com/lowagie2/samplechapter2.pdf並尋找setUnderline()方法。我引用:「使用Chunk.setUnderline()方法,可以設置線條粗細(在 示例中爲0.2 pt)和Y位置(在本例中爲基線之下2 pt)。位置允許您使用相同的方法通過塊創建一條線。「我可以補充說:它允許你使用相同的方法在Chunk上劃線。 –
現在所有的作品..非常感謝..:D –