0

我一直在尝试使用 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();
4

1 回答 1

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();
于 2013-09-11T09:05:29.977 回答