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