当前位置: 首页 > 知识库问答 >
问题:

我可以使用iText在PDF中查找字段的bordercolor吗?

方俊
2023-03-14

是否可以使用iText最新版本在我的PDF中查找特定字段的边框颜色?我可以得到AcroField。项目,但我看不到从那里获取bordercolor的选项。

共有1个答案

段干靖
2023-03-14

请查看此PDF:text_fields.pdf.此PDF是使用TextFields示例创建的。以下代码片段用于设置名称为text_2的字段的边框:

text.setBorderStyle(PdfBorderDictionary.STYLE_SOLID);
text.setBorderColor(BaseColor.BLUE);
text.setBorderWidth(2);

现在,当我们使用iText RUPS查看PDF内部,并查看该字段的字段字典/小部件注释时,我们会看到以下结构:

我们看到一个定义实心边框样式(S键的值为S)和值为2的边框宽度(W)的字典。

我们还看到/MK条目的边框颜色(/BC)条目是一个具有三个值的数组:[0 0 1]。这意味着边框颜色是一种RGB颜色,其中Red的值为0,Green的值为0,Blue的值为1。这与我们在创建文件时将颜色设置为BaseColor. BLUE是一致的。

你说你有一个字段的AcroField. Item对象。现在您需要获取合并的字段/小部件注释字典并按照iText RUPS显示的路径操作:

AcroFields.Item item = acroFields.getFieldItem(fldName); 
PdfDictionary merged = item.getMerged(0); 
PdfDictionary mk = merged.getAsDict(PdfName.MK);
PdfArray bc = mk.getAsArray(PdfName.BC);

存储在数组bc中的值将通知您背景颜色。如果数组只有一个值,则为灰色,如果有三个,则为RGB颜色,如果有四个,则为CMYK颜色。

警告:某些值可能不存在(例如,可能没有输入)。在这种情况下,您可以得到NullPointerException。

 类似资料:
  • 我想把几个PDF文档合并成一个。源文件可以由我创建的PDF文件和其他组织创建的PDF文件组成。我无法控制附加到非我创建的文档的权限。其中一些文档(不是我创建的)可能设置了权限。如果文档需要密码才能打开它,我不会尝试合并它。 我正在使用iText 5.5.1(我认为这是最新的)创建一个PDFCopy对象,以包含结果文档和循环中每个源PDF的阅读器(我正在传递一个要合并的文档列表)。我检查每个文档的页

  • 问题内容: iText可以在Swing应用程序中呈现PDF文档吗?还是我必须为此使用另一个库/框架? 问题答案: iText用于以编程方式生成PDF文件(例如,从HTML转换为PDF或生成PDF报告。) 要查看PDF,您可以使用ICEpdf之类的库

  • 问题内容: 有没有一种方法可以重用mysql语句中的计算字段。我收到以下错误信息:“ unknown column total_sale”: 还是我必须重复计算,如果我添加了所有需要的计算,这将导致很长的SQL语句。 当然,我可以在我的php程序中进行所有计算。 问题答案: 是的,您可以重用变量。这是您的操作方式: 在此处了解更多信息:http : //dev.mysql.com/doc/refm

  • 我使用Adobe acrobat reader编辑PDF,在我看到的地方,每个字段都有一个position属性,表示PDF字段在表单中的位置。 所以我的问题是,我能读到那个值吗? 现在我用下面的代码检索表单字段:

  • 问题内容: 在我的数据集中,一个文档包含20多个带有嵌套对象的字段。它们大多数是长文本字段。这些字段对于全文搜索很重要,但是我们只需要在输出中显示标题,简短描述和ID。 是否可以在ElasticSearch中为全文查询指定输出字段?(如MongoDB中的投影) 问题答案: 我认为您正在寻找搜索请求的属性: 允许有选择地为搜索命中表示的每个文档加载特定字段。默认情况下加载内部 字段。 这些字段将自动

  • 问题内容: 我有一个使用Foxit表单设计器创建的pdf文件。在我的设计系统上,我安装了条形码字体。条形码字体在AcroField之一中使用。foxit似乎没有在文档中嵌入字体。 我也有一些客户的计算机上未安装条形码字体,因此我想将该字体嵌入到PDF中。我是否可以使用iText将AcroFields中使用的字体嵌入到PDF中? 编辑: 字体似乎包含在文本中,但没有包含在字段中,因此字体(条形码)将