2013-05-13 60 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