我正在使用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
以防万一有人帮助我
答案 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生成者的父母的婚姻状况(仅举几例)。