当前位置: 首页 > 面试题库 >

无效的标题签名;IOException与Excel文档上的Apache POI

何涵畅
2023-03-14
问题内容

我越来越:

java.io.IOException:标头签名无效;读取0x000201060000FFFE,应为0xE11AB1A1E011CFD0

尝试使用apache POI HPSF向Excel文档中添加一些自定义属性时。

我完全确定文件是Excel OLE2(不是HTML,XML或Excel不会抱怨的其他东西)。

这是我的代码的相关部分:

try {
     final POIFSFileSystem poifs = new POIFSFileSystem(event.getStream());
     final DirectoryEntry dir = poifs.getRoot();
     final DocumentEntry dsiEntry = (DocumentEntry)
             dir.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);

     final DocumentInputStream dis = new DocumentInputStream(dsiEntry);
     final PropertySet props = new PropertySet(dis);
     dis.close();
     dsi = new DocumentSummaryInformation(props);
    }
    catch (Exception ex) {
        throw new RuntimeException
            ("Cannot create POI SummaryInformation for event: " + event +
              ", path:" + event.getPath() + 
              ", name:" + event.getPath() +
              ", cause:" + ex);
    }

尝试使用Word和Power Point文件(也为OLE2)时,出现相同的错误。

我完全没有主意,因此非常感谢任何帮助/指针:)


问题答案:

如果将签名号四舍五入,您将看到文件开头的字节:

0x000201060000FFFE-> 0xFE 0xFF 0x00 0x00 0x06 0x01 0x02 00

前两个字节看起来像Unicode
BOM,0xFEFF表示16位小尾数。然后,您有一些低控制字节,十六进制代码为0,然后是258,然后是2,因此也许毕竟不是文本文件。

该文件确实不是OLE2文件,POI可以为您提供错误信息。我不知道它是什么,但是我猜测如果没有外部OLE2包装,它可能是OLE2文件的一部分?如果您可以在办公室打开它,请另存为,POI应该可以打开它。就目前而言,该标头不是OLE2文件标头,因此POI无法为您打开它。



 类似资料:
  • 所以我最近一直在处理PDF文档的签名,今天我遇到了一个新的奇妙的问题。因此,当我签署文档(文档实际上是在服务器上签署的)并在我的机器中打开文档时,签名显示有效,并且启用了LTV,因此几乎与预期的工作方式相同。但是,当我在老板的计算机上打开相同的文档时,它显示即使在证书被信任后也无法验证签名的身份,但如果我打开证书属性,它会说证书是有效的,吊销已经成功执行。这可能是什么原因? 图1:证书本身是可信的

  • 我有一个问题与数字签名PDF文件已标记为PDF/A-3A兼容。使用PDFBox(最新版本,2.0.24)最终在Adobe Acrobat中获得无效签名,而使用iText7(最新版本)获得有效签名。目标是获得符合PAdES LTV的签名。 我的流程如下(使用PDFBox和iText7): 打开PDF,创建用于签名的散列(要签名的数据) 我呼叫第三方服务以取回数字签名 在服务响应中,我还获得了OCSP

  • 目标是实现一个PDF签名过程,其中服务器根据请求向客户端提供要签名的哈希。然后,客户端使用通过PKCS#11接口从智能卡获得的私钥对给定哈希进行签名。然后,签名被发送回服务器,以便使用iTextSharp 5.5.4附加到PDF文件中。 在Acrobat Reader中查看签名时,我发现错误“自签名应用以来,文档已被更改或损坏”。 下面是我在服务器上计算哈希的方法。 客户端对给定的哈希签名后,我将

  • 问题内容: 我正在尝试使用Apache POI(版本3.6)来解析Excel .xls文件,但是只有异常: 我已经在Google上搜索了一些结果,该结果基本上表示“该文件实际上不是有效的excel文件(即.csv等),但以后缀.xls结尾”。但是我非常确定我的Excel文件有效(Excel97-2003格式)。 出于保密考虑,我无法发布我的excel,但是当我使用emacs hexl-mode查看

  • 我在Maven构建期间收到此错误。 无法执行目标组织。阿帕奇。专家插件:maven shade插件:2.4.3:项目dl4j上的shade(默认)示例:创建着色jar时出错:无效的LOC头(错误签名)- 这是我的pom。xml文件。 我多次尝试删除jar文件,但似乎都不起作用。

  • 我对此并不陌生,但我无法从Xcode Version6.2(6C86E)修复我的签名身份。当我在以下消息中单击修复问题时: 我得到一个弹出窗口,上面写着: “所选团队的代理'Name Gushe'必须同意最新的ios程序许可协议。请访问成员中心。https://developer.apple.com/membercenter”