无法将英镑符号输出到PDF

时间:2013-09-10 17:15:54

标签: c# itextsharp

我一直在尝试使用itextsharp打开和编辑PDF文件。

一切都很好,但由于某些原因我不能在PDF上写'£'。

当输出确实生成时,它会留下“空白空间”,这让我感到困惑。

想知道是否有人之前遇到过这个问题?

这是我的代码:

PdfContentByte cb = stamper.GetOverContent(x);

iTextSharp.text.Rectangle rectangle = new iTextSharp.text.Rectangle(370, 750, 155, 790);
rectangle.BackgroundColor = new BaseColor(Color.FromArgb(147, 146, 152));
cb.Rectangle(rectangle);

BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED);
cb.SetColorFill(BaseColor.WHITE);
cb.SetFontAndSize(baseFont, 21);
cb.BeginText();

var encoder = System.Text.Encoding.GetEncoding(858); //also tried with 437
byte[] c = new byte[] { 156 };
string appendto = "£" + textBox1.Text;

cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, appendto, 245, 764, 0);
cb.EndText();

1 个答案:

答案 0 :(得分:0)

正如布鲁诺指出的那样,我不得不将CP1250更改为IDENTITY_H并嵌入字体。

 PdfContentByte cb = stamper.GetOverContent(x);
                        iTextSharp.text.Rectangle rectangle = new iTextSharp.text.Rectangle(370, 750, 140, 790);
                        rectangle.BackgroundColor = new BaseColor(Color.FromArgb(147, 146, 152));
                        cb.Rectangle(rectangle);

                        BaseFont baseFont = BaseFont.CreateFont("times.ttf"/*BaseFont.HELVETICA*/, /*BaseFont.CP1250*/ BaseFont.IDENTITY_H, BaseFont.EMBEDDED/*BaseFont.NOT_EMBEDDED*/);
                        cb.SetColorFill(BaseColor.WHITE);
                        cb.SetFontAndSize(baseFont, 21);
                        cb.BeginText();

                        string appendto = "\u00A3" + textBox1.Text;

                        if (!checkBox1.Checked)
                        {
                            cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, appendto, 235, 764, 0);
                        }
                        else if (checkBox1.Checked)
                        {
                            cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, appendto, 260, 764, 0);
                        }
                        cb.EndText();