FastReport如何保护您的PDF教程?

报表生成器FastReport .NET是适用于.NET Core 3,ASP.NET,MVC和Windows窗体的全功能报告库。使用FastReport .NET,您可以创建独立于应用程序的.NET报告。

近日,FastReport .Net升级到v2020.4版,在此版本中,添加了新的条形码:ITF-14和Deutsce Post Identcode,同时优化了多种性能(点击下方按钮下载),感兴趣的朋友可点击下方按钮下载最新版。

点击下载最新版FastReport .Net

Fastreport在线下单立享85折起**!赶紧**加入购物清单吧!

在数据保护日,我们决定准备一篇有关PDF文档保护的文章。PDF已成为当今世界的标准之一,了解如何保护它是一个好方法。

PDF格式

您需要从什么保护PDF文档?

  1. 来自未经授权的编辑。
  2. 来自未经授权的访问。

保护PDF文件免于编辑

首先,我想说,变更是可以授权的,甚至是可取的。通常会发送PDF文件进行签名(并且Adobe Acrobat Reader等标准工具允许您对此类文件进行签名),或者它是具有内置可编辑字段和交互式表格的问卷文件。

有很多关于在FastReport中使用PDF文件的文章,其中一些是关于使用交互式表单创建PDF文件的文章:

  1. 以PDF / X格式保存报告
  2. 从FastReport.NET导出时配置Acrobat PDF Viewer的选项
  3. PDF导出中的交互式表格Fast Report .Net 2018
  4. 如何从Delphi / C ++ Builder / Lazarus制作PDF
  5. 如何从文本文件制作PDF文档

但是还有另一种PDF文档–那些无法编辑的文档,如果某个坏人试图编辑某些内容,我们会知道的。

首先,这些是带有电子签名的证明该特定文件有效的文件。

FastReport.Net版本2019.3.2中提供了两种类型的签名。

1)签名栏。要将其添加到文档中,您需要添加数字签名对象。当将此控件放置在报告页面上时,它如下所示:

电子签名

它不会在报告查看模式下显示。其功能仅限于PDF导出,这意味着您在Acrobat Reader中查看PDF文件时将看到此字段。

导出为PDF时,启用“签署文档”选项:

导出为PDF

2)看不见的签名。对于不可见的PDF导出签名,无需在报告页面上添加“数字签名”控件。您唯一需要做的就是在导出设置中启用“签名文档”选项:

导出为PDF

您可以填写位置,原因和联系信息字段。接下来,您需要选择.pfx格式的签名证书文件,并设置证书的密码。导出报告后,您将在PDF文档中看到一个隐藏的签名,但不会被填写。重要的是要知道,该签名在文档中不是直接可见的。

您可以在我们的文章中阅读有关数字签名的更多信息。

此外,还有所谓的“存档”格式PDF / A。此类文档包含其中的所有信息(不会“拉”图像,字体和来自外部来源的任何其他可能被破坏或删除的数据)。此外,文档属性指出它是不可编辑的格式。您可以打开它进行编辑吗?一切皆有可能,但是在这种情况下,它将失去其存档类型特征,也就是说,我们将清楚地看到文档已更改。

文章“如何以PDF / A格式导出报告”详细介绍了此格式的功能。

保护PDF文件免遭未经授权的访问

本文无意提供破解受保护的PDF文件的方法的概述(这是一个单独的主题。例如,此处Elcomsoft的专业人员介绍了他们的方法)。

作为一种格式,PDF包含内置的密码保护机制。

密码可让您一次保护文档免受一项或多项操作的侵害:

  • 从开放
  • 从印刷
  • 从编辑
  • 复制文本,图像和其他信息
  • 来自屏幕阅读器的访问权限

现代PDF使用AES(高级加密标准)加密来使用128位密钥进行密码保护,这使查找密码的任务变得复杂(但并非不可能!)。使用128位加密时,密钥数为2 128。
FR .Net:

导出为PDF

帧频VCL:

导出为PDF

在“安全性”选项卡中,您可以配置以下字段:

  1. 所有者密码
  2. 用户密码
  3. 您还可以禁止打印文档,更改文档,复制文本或图形,添加或更改文本注释。

您还可以使用证书(带有用于数字唱歌和打开文档的公共和私人密钥)来保护文档。公钥包含在证书中,用于加密信息,而私钥用于解密和数字签名文档。现在谈论100%保护还为时过早。尽管如此,今天它可能是最安全的电子文档格式。

希望本文能帮助您为用户提供PDF安全工具,并使他们更加了解安全。无论如何,没有100%的保护;文件保护只是集成安全系统的一小部分,其中不仅应包括技术措施,还应包括组织措施。

慧都年终钜惠,在线下单立享85折起!点击查看优惠价格,或咨询在线客服了解详情。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )