如何在空格键下添加下划线。它不会在空白处添加空间。
我尝试了2-3个示例,但未能在空格下添加下划线。
1
para = New Paragraph(New Chunk("abc. ", underlined_font))
cell = New PdfPCell(para)
cell.Border = 0
cell.BorderWidthBottom = 0
document.Add(cell)
Dim str_required_space As New String(" "c, 20)
para = New Paragraph(New Chunk(str_required_space, underlined_font))
cell = New PdfPCell(para)
cell.Border = 0
cell.BorderWidthBottom = 0
document.Add(cell)
由于输入字符串的长度不确定,我无法使用单元格边框。所以我使用下划线。
请帮助在空间下添加空格。
我的要求图片
由于
[编辑]
如果我按照答案1,那么结果将如下所示
asdasd asdsad scasdnk kjashdk kasbas ckasbd ascuasc ksajcasc
asdansjdnasjakjsnasndasdmlaskdm
________________________________________________________________
但我需要以下结果。
asdasd asdsad scasdnk kjashdk kasbas ckasbd ascuasc ksajcasc
________________________________________________________________
asdansjdnasjakjsnasndasdmlaskdm
________________________________________________________________
我尝试使用Ansii Code。不适合我:(
Dim str_required_space As New String(ChrW(32), (119 - (str_synopsis.Length Mod 119)))
para = New Paragraph(str_required_space)
cell = New PdfPCell(para)
cell.Border = 0
doc.Add(cell)
答案 0 :(得分:2)
请阅读chapter 2 of my book,更具体地说,请参阅有关垂直位置标记,分隔符和标签的部分(第2.2.6节)。
查看您的图片(忽略该网站上的软色情图片,请在将来避免使用此类链接),我认为您需要一条如图2.9所示的线条(导演名下的行)。可以找到导致该屏幕截图中显示的PDF的代码here。
这是用Java完成的:
Paragraph p = new Paragraph("abc.");
LineSeparator line = new LineSeparator(1, 100, null, Element.ALIGN_CENTER, -2);
p.add(line);
document.add(p);
将此代码改编为C#应该是明智的选择。如果您确实遇到问题,那么您可以找到图书样本的移植版本here。
您的代码出了什么问题?
这没有意义:
para = New Paragraph(New Chunk("abc. ", underlined_font))
Chunk
的内容被修剪,这解释了空间消失的原因。另一种方法是使用不间断的空格字符(ASCII代码160)而不是常规空格字符(ASCII代码32)。
<强>更新强>
我之前的回答是基于您的图片,这是您最初问题的正确答案。但是:您现在已经更改了问题(而不是创建新问题)。
您可以通过使用页面事件来满足您的要求,更具体地说,通过实施OnGenericTag()
方法。 chapter 5 of my book中描述了此方法。
在Java中,实现看起来像这样:
public void onGenericTag(PdfWriter writer, Document pdfDocument,
Rectangle rect, String text) {
Rectangle page = pdfDocument.getPageSize();
float x1 = page.getRight(pdfDocument.rightMargin());
float x2 = page.getLeft(pdfDocument.leftMargin());
float y = rect.getBottom() - 3;
PdfContentByte canvas = writer.getDirectContent();
canvas.moveTo(x1, y);
canvas.lineTo(x2, y);
canvas.stroke();
}
您需要使用该实现创建页面事件的实例(例如,您编写的类,并将其命名为MyPageEvent
),并使用{{1}将该页面事件声明为PdfWriter
方法:
setPageEvent()
您现在可以像这样声明writer.setPageEvent(new MyPageEvent());
和Chunk
:
Paragraph
使用一个Chunk chunk = new Chunk(long_text);
chunk.setGenericTag("");
Paragraph p = new Paragraph(chunk);
document.add(p);
对象构建段落非常重要。如果段落中有多个Chunk
,则该部分行看起来会更粗。