如何在Android中的PDF中添加位图图像



我正在构建一个Android应用程序,该应用程序使用户可以将其数字签名添加到PDF文件中。到目前为止,我所做的是,用户可以浏览并选择一个通过此功能查看的PDF文件:

private void showFileChooser() {
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("application/pdf");
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        try {
            startActivityForResult(
                    Intent.createChooser(intent, "Select a File to Upload"),
                    FILE_SELECT_CODE);
        } catch (android.content.ActivityNotFoundException ex) {
            // Potentially direct the user to the Market with a Dialog
            Toast.makeText(this, "Please install a File Manager.",
                    Toast.LENGTH_SHORT).show();
        }
    }

onActivityResult方法中,我将所选的文件URI扔到PDF查看器中以查看它。然后,用户可以通过自定义视图添加他们的签名,我将签名作为位图获得,并将其作为图像保存到本地设备存储中。

我想要的是将此图像添加到当前查看的PDF文件中,并将PDF文件再次保存。

有人知道如何将签名位图映像添加到PDF文件并保存?

根据您的应用程序所使用的国家/地区,我建议您对"数字签名"一词非常谨慎。

仅添加某人签名的图像并不是一个非常安全的策略。使用Adobe,提取图像非常容易。这意味着我可以通过简单地重新插入图像来"伪造"我拥有的任何签名文档的签名。

在更复杂的方法中,签名是通过在文件中添加额外信息来进行的(简化):

  • 鲍勃想签署PDF文档
  • 鲍勃计算PDF的哈希值(例如使用SHA256)
  • 鲍勃使用他的私钥加密此哈希值
  • 鲍勃将加密的哈希值添加到文档中(与他的公钥,常规哈希值,涉及算法的名称和时间戳)

现在假设爱丽丝想验证鲍勃是否已签署

  • 爱丽丝知道用来放哈文档的算法
  • 爱丽丝使用鲍勃的公共密钥解密了加密的哈希(我们称其为签名哈希)
  • 解密的哈希值应等于文档的常规哈希值
  • 使用证书授权,爱丽丝知道所使用的公钥确实属于Bob

为什么这起作用?

  • 完整性:如果有人更改文档中的任何内容,则哈希将会改变。而且鲍勃的签名哈希将不再与文档的哈希相匹配。因此,只要文档没有更改
  • ,鲍勃的签名才能有效
  • 非拒绝:只有鲍勃应该拥有鲍勃的私钥。只有鲍勃才能签署哈希值。鲍勃不能否认签署了文件。
  • 身份验证:爱丽丝(Alice

有一本关于此的很酷的电子书
http://pages.itextpdf.com/ebook-digital-signatures-for-pdf.html

最新更新