private String DecodeString(PdfString ps) { if (ps.IsHexWriting()) { return(PdfEncodings.ConvertToString(ps.GetBytes(), "UnicodeBigUnmarked")); } else { return(ps.ToUnicodeString()); } }
/** Gets the field value or <CODE>null</CODE> if the field does not * exist or has no value defined. * @param name the fully qualified field name * @return the field value or <CODE>null</CODE> */ public String GetFieldValue(String name) { PdfDictionary field = (PdfDictionary)fields[name]; if (field == null) { return(null); } PdfObject v = GetPdfObject(field.Get(PdfName.V)); if (v == null) { return(null); } if (v.IsName()) { return(PdfName.DecodeName(((PdfName)v).ToString())); } else if (v.IsString()) { PdfString vs = (PdfString)v; if (encoding == null || vs.Encoding != null) { return(vs.ToUnicodeString()); } byte[] b = vs.GetBytes(); if (b.Length >= 2 && b[0] == (byte)254 && b[1] == (byte)255) { return(vs.ToUnicodeString()); } try { if (encoding.Equals(PdfName.SHIFT_JIS)) { return(Encoding.GetEncoding(932).GetString(b)); } else if (encoding.Equals(PdfName.UHC)) { return(Encoding.GetEncoding(949).GetString(b)); } else if (encoding.Equals(PdfName.GBK)) { return(Encoding.GetEncoding(936).GetString(b)); } else if (encoding.Equals(PdfName.BIGFIVE)) { return(Encoding.GetEncoding(950).GetString(b)); } } catch { } return(vs.ToUnicodeString()); } return(null); }
private static void IterateItems(PdfDictionary dic, Hashtable items) { PdfArray nn = (PdfArray)PdfReader.GetPdfObjectRelease(dic.Get(PdfName.NAMES)); if (nn != null) { for (int k = 0; k < nn.Size; ++k) { PdfString s = (PdfString)PdfReader.GetPdfObjectRelease(nn[k++]); items[PdfEncodings.ConvertToString(s.GetBytes(), null)] = nn[k]; } } else if ((nn = (PdfArray)PdfReader.GetPdfObjectRelease(dic.Get(PdfName.KIDS))) != null) { for (int k = 0; k < nn.Size; ++k) { PdfDictionary kid = (PdfDictionary)PdfReader.GetPdfObjectRelease(nn[k]); IterateItems(kid, items); } } }