2012-05-24 30 views
1

我遇到了一个我正在开发的Winforms应用程序的小问题。我有一些全局热键,可以在文本框中插入一些ASCII字符。然后使用iTextSharp将这些字符写入PDF文件。这一直工作得很好,除了一个字符:方形符号(#127)。在Windows应用程序中,角色看起来很好,但是一旦我将它写入PDF,它就会显示为一个子弹点,并且在任何角色之后(而不是出现在它之前)出现。我无法弄清楚为什么会发生这种情况。我所有其他的ASCII字符都写入PDF没有问题。有什么建议么?使用Winforms将ASCII字符127写入PDF文件

作为参考,这是我使用的字符代码表:http://yorktown.cbe.wwu.edu/sandvig/shared/ASCIICodes.aspx

下面是插入字符到表单的代码:

if(focusedTextbox != null) 
{ 
    if (inKey == 'S') 
    { 
     focusedTextbox.Text += Convert.ToChar(127);//Square symbol 
    } 
    else if (inKey == 'P') 
    { 
     focusedTextbox.Text += Convert.ToChar(177);//Plus-minus symbol 
    } 
    //Places the cursor after the newly-inserted symbol 
    focusedTextbox.Select(focusedTextbox.Text.Length, 0); 
} 

在这里被写入的数据的代码到PDF使用iTextSharp:

//Measurement A 
cb.BeginText(); 
string mesA = mainForm.txtMesA.Text.Trim(); 
if (mesA.Equals("")) 
{ 
    text = ""; 
} 
else 
{ 
    text = mesA + " " + mainForm.txtUnit.Text; 
} 
cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, text, offSetStartAt, topRow, 0); 
offSetStartAt += colOffset; 
cb.EndText(); 

//Create a PDF page and add the content 
PdfImportedPage page = writer.GetImportedPage(reader, 1); 
cb.AddTemplate(page, 0, 0); 

//Close the streams 
document.Close(); 
fs.Close(); 
writer.Close(); 
reader.Close(); 

任何帮助赞赏!

+2

ASCII 127是[控制字符](http://en.wikipedia.org/wiki/ASCII#ASCII_control_characters) - 特别是[Delete](http://en.wikipedia.org/wiki/Delete_character)。你确定你应该写吗? – raveturned

+0

@raveturned不,我不知道它是正确的,我在这里找到了(试图插入一个正方形):http://yorktown.cbe.wwu.edu/sandvig/shared/ASCIICodes.aspx其他的工作完美无缺,所以我认为这也是。你知道正方形的代码吗? –

+2

我不认为有一个正方形的ASCII字符。在我的浏览器中,该列表中的127显示为空白 - 也许你的显示一个正方形,因为渲染它的字体试图处理不支持的字符?如果你需要渲染一个正方形,也许你可以使用两个方括号'[]'(代码91和93)。 – raveturned

回答

3

ASCII 127是control character - 具体地,Delete。控制字符不打算是可打印的。

我不认为有一个正方形的ASCII chatacter。在我的浏览器,127从问题列表中显示为空白:

enter image description here

如果你看到一个正方形它可能是你的浏览器的字体试图呈现一个不支持的字符的结果。

如果您需要渲染一个正方形,您可以使用两个方括号[](代码91 & 93)作为近似值。

+0

谢谢!这是有道理:)羞愧广场不存在,虽然... –

相关问题