使用PdfDictionary时出错

时间:2012-11-29 13:13:13

标签: c# visual-studio-2010 c#-4.0 itextsharp

我正在使用PdfDictionary并撰写以下内容

PdfDictionary sv = new PdfDictionary();
sv["/Type"] = new PDFName("/SV");
sv["/Filter"] = new PDFName("Abc");
sv["/Ff"] = new PDFNumber(1);

signame.Dictionary["/SV"] = sv;
PDFArray arReasons = new PDFArray();
arReasons.Add(new PDFString(string.Format("CToken::{0}", customxml)));
arReasons.Add(new PDFString(reason));
v.Put(PdfName.arReasons);

但它给了我很多搜索到的错误,但没有积极的结果

Error   1   Cannot apply indexing with [] to an expression of type 'iTextSharp.text.pdf.PdfDictionary'  C:\Users\lenovo\Dropbox\updated C# app\WindowsFormsApplication1\WindowsFormsApplication1\Form2.cs   134 17  WindowsFormsApplication1

我得到的其他错误是: -

Error   9   'iTextSharp.text.pdf.PdfName' does not contain a definition for 'arReasons' C:\Users\lenovo\Dropbox\updated C# app\WindowsFormsApplication1\WindowsFormsApplication1\Form2.cs   145 32  WindowsFormsApplication1

Error   3   'string' does not contain a definition for 'Dictionary' and no extension method 'Dictionary' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)   C:\Users\lenovo\Dropbox\updated C# app\WindowsFormsApplication1\WindowsFormsApplication1\Form2.cs   141 25  WindowsFormsApplication1

Error   8   The name 'reason' does not exist in the current context C:\Users\lenovo\Dropbox\updated C# app\WindowsFormsApplication1\WindowsFormsApplication1\Form2.cs   144 45  WindowsFormsApplication1

以防万一有人帮助我

1 个答案:

答案 0 :(得分:2)

PdfDictionary个键是PdfName个对象,因此如果有索引运算符,则无法使用string。由于PdfDictionary似乎没有实现索引运算符,您可以这样做:

PdfDictionary sv = new PdfDictionary();
sv.Put(PdfName.TYPE, PdfName.SV);
sv.Put(PdfName.FILTER, new PdfName("Abc"));
sv.Put(PdfName.FF, new PdfNumber(1));

注意使用已经设置为这些名称的静态成员,并且不需要在任何名称字符串前加上'/'前缀。

此外,确保检查输出的语法和语义。 iTextSharp不会为您(据我所知)这样做,最终结果是Acrobat可能会默默接受的损坏的PDF,但对其他所有PDF消费者来说都是一种痛苦。当我看到缺少所需的密钥,需要的空值,无法显示的日期时间字符串以及读取// Foobar而不是/ Foobar的字典中的名称时,我会编写PDF工具以谋生并定期质疑其他PDF生成者的父母的婚姻状况(仅举几例)。