private int write_pdf_string(byte[] pdfstr)
{
int written = writeToFile("(");
int len = strlen(pdfstr);
for (int i = 0; i < len; i++)
{
if ((pdfstr[i] & 0x80) != 0 || (pdfstr[i] == 127) || (pdfstr[i] < 32))
{
string buffer = string.Format(CultureInfo.InvariantCulture,
"{0}", encodeOctalString(pdfstr[i]));
written += writeToFile(buffer);
}
else
{
switch (pdfstr[i])
{
case 0x08:
written += writeToFile("\\b");
break;
case 0x09:
written += writeToFile("\\t");
break;
case 0x0A:
written += writeToFile("\\n");
break;
case 0x0C:
written += writeToFile("\\f");
break;
case 0x0D:
written += writeToFile("\\r");
break;
case 0x28:
written += writeToFile("\\(");
break;
case 0x29:
written += writeToFile("\\)");
break;
case 0x5C:
written += writeToFile("\\\\");
break;
default:
byte[] b = new byte[1];
b[0] = pdfstr[i];
written += writeToFile(b, 1);
break;
}
}
}
written += writeToFile(")");
return written;
}