2

縦書きテキストの iText サンプルに従いました。

http://1t3xt.info/examples/browse/?page=example&id=145

この C# バージョンを作成しました。

PdfReader reader = new PdfReader("existing.pdf");
PdfStamper stamp = new PdfStamper(reader, new FileStream("stamped.pdf", FileMode.Create));

// change the content on top of page 1
PdfContentByte cb = stamp.GetOverContent(1);

Rectangle psize = reader.GetPageSize(1);
float width = psize.Width;
float height = psize.Height;

BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
VerticalText vt = new VerticalText(cb);
vt.SetVerticalLayout(width / 2, height / 2, height, 1, 0);
vt.AddText(new Phrase("Test", new Font(bf, 20)));
vt.Go();

stamp.Close();

それはページの中央にありますが、垂直ではなく水平です (実際にはページの中央から水平に左揃えになっています)。

ここで何か間違ったことをしているのですか、それとも iTextSharp の動作がおかしいのでしょうか?

4

2 に答える 2

2

setVerticalLayout に渡すパラメーターが原因である可能性があります。

// from the java source
public void setVerticalLayout(float startX, 
                              float startY, 
                              float height, 
                              int maxLines,
                              float leading)

したがって、startX と startY はページの中央を指し、使用可能な高さはページの高さです (ページの下部から定義された領域の半分を残します)。また、先頭がゼロの単一行に制限しています。理論的には、テキストはページの中央から始まり、ページの下部から下に向かって続きます。

実際には、あなたは何か他のものを完全に手に入れています。

この場合、ベース フォントからフォントを作成する際にも問題が発生する可能性がありBaseFont.IDENTITY_Vます。

OTOH、baseFont が既に Identity-V にある場合、VerticalText は水平方向の「エンコードされた」テキストを垂直方向の配置にマングルし、垂直方向の「エンコードされた」テキストとは正反対のことを行う必要があると予想していると思います。

奇妙です。最新情報を知りたいです。

于 2010-12-21T17:49:19.683 に答える
0

試す

cb.ShowTextAligned(配置、テキスト、x、y、回転);

于 2010-05-04T13:33:31.533 に答える