Move utility methods from PdfStream class to PdfDictionary.

This commit is contained in:
2016-06-19 03:49:05 +02:00
parent 142241e791
commit e0ec1c0f5c
2 changed files with 40 additions and 40 deletions

View File

@@ -60,7 +60,7 @@ namespace VAR.PdfTools
private static void ApplyFiltersToStreams(PdfStream stream)
{
string filter = stream.GetParamAsString("Filter");
string filter = stream.Dictionary.GetParamAsString("Filter");
if (filter == "FlateDecode")
{
stream.OriginalData = stream.Data;
@@ -108,9 +108,9 @@ namespace VAR.PdfTools
if (obj.Data.Type != PdfElementTypes.Stream) { continue; }
PdfStream stream = obj.Data as PdfStream;
string type = stream.GetParamAsString("Type");
long? number = stream.GetParamAsInt("N");
long? first = stream.GetParamAsInt("First");
string type = stream.Dictionary.GetParamAsString("Type");
long? number = stream.Dictionary.GetParamAsInt("N");
long? first = stream.Dictionary.GetParamAsInt("First");
if (type == "ObjStm" && number != null && first != null)
{
PdfParser parserAux = new PdfParser(stream.Data);

View File

@@ -65,6 +65,42 @@ namespace VAR.PdfTools
public PdfElementTypes Type { get; private set; } = PdfElementTypes.Dictionary;
private Dictionary<string, IPdfElement> _values = new Dictionary<string, IPdfElement>();
public Dictionary<string, IPdfElement> Values { get { return _values; } }
public string GetParamAsString(string name)
{
if (Values.ContainsKey(name) == false) { return null; }
IPdfElement value = Values[name];
if (value is PdfArray)
{
value = ((PdfArray)value).Values[0];
}
if (value is PdfName)
{
return ((PdfName)value).Value;
}
if (value is PdfString)
{
return ((PdfString)value).Value;
}
return null;
}
public long? GetParamAsInt(string name)
{
if (Values.ContainsKey(name) == false) { return null; }
IPdfElement value = Values[name];
if (value is PdfArray)
{
value = ((PdfArray)value).Values[0];
}
if (value is PdfInteger)
{
return ((PdfInteger)value).Value;
}
return null;
}
}
public class PdfNull : IPdfElement
@@ -87,42 +123,6 @@ namespace VAR.PdfTools
public byte[] OriginalData { get; set; }
public IPdfElement OriginalFilter { get; set; }
public string GetParamAsString(string name)
{
if(Dictionary.Values.ContainsKey(name) == false) { return null; }
IPdfElement value = Dictionary.Values[name];
if (value is PdfArray)
{
value = ((PdfArray)value).Values[0];
}
if (value is PdfName)
{
return ((PdfName)value).Value;
}
if (value is PdfString)
{
return ((PdfString)value).Value;
}
return null;
}
public long? GetParamAsInt(string name)
{
if (Dictionary.Values.ContainsKey(name) == false) { return null; }
IPdfElement value = Dictionary.Values[name];
if (value is PdfArray)
{
value = ((PdfArray)value).Values[0];
}
if (value is PdfInteger)
{
return ((PdfInteger)value).Value;
}
return null;
}
}
public class PdfObject : IPdfElement