2013-05-13 63 views
0

这是我想复制的参考pdf。itextsharp多行输出字符串

http://www.depo.com.tw/asp/pdf/R_VW_PASAT_2.pdf

我工作的PDF目录和我试图输出像红色文本区域。

正如你们可以在PDF中看到的,输出字母441-11B2-LDHEM非常简单。但是,输出441-11A7-LD/RD-EM1不是。

private void PlaceChunck(String text, int x, int y) 
{ 
    PdfContentByte cb = writer.DirectContent; 
    cb.SaveState(); 
    cb.BeginText(); 
    cb.MoveText(x, y); 
    cb.ShowText(text); 
    cb.EndText(); 
    cb.RestoreState(); 
} 

我能想到的就是在相应的区域放置块。但这是一个真正的长度过程,需要很多字符的计算...

我想知道如果有人知道如何以更简单的方式做到这一点?谢谢。

回答

1

好吧,现在我明白了这个问题。

要做到这一点,最好的方法是创建一个小的PdfTemplate对象,并将LD和RD添加到正确的位置(一个在另一个之上)。现在将PdfTemplate包装在一个Image对象内,并将Image包装在Chunk(也许带有Y偏移量)内。 现在您可以创建一个带有“441-11A7-”的Phrase,接着是图像块,然后是“-EM1”。不幸的是,这是我知道的最简单的方法。

另一种方法是使用ChunksetTextRise(),但是你必须找到一种方法来返回一些字符。虽然这可能是可能的,但它可能更困难,更容易出错。最后,编写一个DrawInterface或VerticalMark的自定义实现可以工作,但我需要更多时间来编写这样的示例(我目前没有的时间;我在维也纳的ISO的ISO委员会暂时)。

也许你可以告诉我们你到目前为止尝试过什么吗?

+0

lemme先试试这个。我甚至不知道从哪里开始我的问题我一直使用Google搜索线,行,短语,换行符和那些关键字不起作用...让我检查:) – 2013-05-13 10:05:53

+0

setTextRise()是不是真的工作.. – 2013-05-14 06:00:44

+0

也LD/RD是一种情况,有很多情况下,如-E/-R,-LED/-BUB ..我可以按情况做这种情况吗? – 2013-05-14 06:01:45