如何使用报表工具FastReport VCL 设计器中的 PDF/A?

news2024/11/16 20:48:08

Fastreport是目前世界上主流的图表控件,具有超高性价比,以更具成本优势的价格,便能提供功能齐全的报表解决方案,连续三年蝉联全球文档创建组件和库的“ Top 50 Publishers”奖。

慧都科技是Fast Reports在中国区十余年的友好合作伙伴,连续多年被Fast Reports授予中国区Best Partner称号。

FastReport.VCL官方版下载

今天我们将向您介绍 FastReport VCL 的导出选项,我们的开发团队在每次更新时都会添加许多新功能。我们早在 2017 年就添加的导出格式,今天我们来一起讨论 PDF/A 及其功能。

众所周知PDF文档格式很早以前就出现了,并且深受大众喜欢,因为我们可以在无论Windows、Linux、iOS等任何平台上创建和打开这些文档。这一优势促进了使用 PDF 来存档文档。然而,并非所有文件都适合存档。然而,并不是所有的文件都适合归档。例如,如果你的文件包含链接,使用特定的字体(不嵌入在文件本身),或多媒体数据,这个文件就不是独立的。
PDF/A 标准是专门为归档文档而开发的,它还被认证为常规 PDF(ISO 19005-1:2005 标准),那么PDF 和 PDF/A 有什么区别呢?
PDF/A 格式的主要要求是保证文件在几年后可以以相同的形式再现。首先,这是由文档的自包含性确保的,意味着文档必须包含所有必要的数据(文本、光栅和矢量图像、字体和颜色数据)并且没有外部链接。
让我们按顺序看一下文档应该包含和不应该包含的内容。
以下是被禁止的:

  • 从 JavaScript 代码启动可执行文件;
  • 使用音频和视频内容;
  • 使用外部引用;
  • 加密文档。

规定:

  • 在文档中嵌入字体;
  • 使用以与设备无关的方式指定的颜色数据。

因此,我们得到的是一个不依赖外部数据的完整的自足文件。你可以用一个标准的查看器程序打开这样的文件,保证文件的复制也是受国际标准保证的。

由于包含所有数据,PDF/A 文档将比 PDF 稍大。

创建模板后,让我们切换到完成报表的预览模式。在左上角找到导出为 PDF。

让我们看看 FastReport VCL 中可用的 PDF/A 标准:

标准 PDF/A-1a 和 PDF/A-1b (ISO 19005-1)
1B 级一致性仅要求遵循可靠再现文档视觉外观所必需的标准,而 1A 级一致性包括所有 1B 级要求以及旨在提高文档可访问性的功能。

  • 额外的 1A 级要求:
  • 语言规范。
  • 分层文档结构。
  • 图像和符号的标记文本跨度和描述性文本
  • 到 Unicode 的字符映射

A 级一致性旨在通过允许辅助软件(例如屏幕阅读器)更精确地提取和解释文件内容,来提高身体受损用户对一致性文件的可访问性

PDF/A-2 标准 (ISO 19005-2)

PDF/A-2 解决了 PDF 版本 1.5、1.6 和 1.7 添加的一些新功能。PDF/A-2 与 PDF/A-1 具有向后兼容性,这意味着所有 PDF/A-1 文档都必须与 PDF/A-2 兼容。但是,PDF/A-2 不一定符合 PDF/A-1。
PDF/A-2 基于 PDF 1.7(如 ISO 32000-1 中所定义),它支持一些工作流程增强功能,例如 JPEG2000 压缩、透明效果和图层、OpenType 字体嵌入以及符合 PDF Advanced 的数字签名规定电子签名
PDF/A-2 还允许使用单个文件归档文档集。
PDF/A-2 具有以下合规级别:
- PDF/A-2a 满足 ISO 19005-2 规范中的所有要求;
- PDF/A-2b 是较低级别的合规性。它涵盖了标准对文档外观的要求,而不是其结构和语义属性。

PDF/A-3 标准 (ISO 19005-3)

PDF/A-3 在一个重要方面不同于 PDF/A-2:它允许嵌入。此外,它不仅可以是其他 PDF/A(PDF/A-2 支持),还可以是任何其他文件。这对于存档至关重要。
与 PDF/A-2 一样,PDF/A-3 标准定义了三个合规级别:

  • PDF/A-3a PDF/a-3A 符合 ISO 19005-3 规范的所有要求。
  • PDF/A-3b 满足确保文档在长期保存期间以其原始形式显示的最低要求。

在 PDF/A-3 文件中,任何嵌入的文件都必须被视为“非存档”。换句话说,嵌入文件被认为是临时的,不应被视为长期存储的文件。只有主要 PDF 内容用于长期存储。
那么,让我们看看如何按照PDF/A标准导出。我们将看到一个导出设置窗口。转到“选项”选项卡。这是我们可以选择 PDF/A 标准的地方。请注意,下拉列表中有 4 个标准:PDF/A-2a、PDF/A-2b、PDF/A-3a 和 PDF/A-3b。这里没有 PDF/A-1,因为它被认为已过时。

请注意,当我们选择 PDF/A 选项时,嵌入字体不再可编辑。现在默认嵌入字体。这符合标准要求。
让我们回顾一下所有的导出属性。
页面范围— 选择将导出为 PDF 的文档页面。
PDF 标准— 选择 PDF 规范(常规或 PDF/A)。
PDF 版本——现在不可用,因为我们正在谈论 PDF/A,但是从 1.4 到 1.7 的 PDF 导出版本将以常规规范提供。
Compressed — 确定是否应压缩报表数据的属性。
嵌入式字体——此属性在 PDF/A 中将被禁用,因为标准不支持使用任何字体。
背景— 允许用户在报告中制作没有水印的背景。
打印优化— PDF 可以针对打印进行优化,从而提高图像质量,但它们的尺寸会变大。
Outline — 启用或禁用大纲显示的属性。
Transparency — 属性负责显示对象的透明度。

这是添加到 PDF 文件的内部信息的部分:标题、作者、主题、关键字(您可以将 PDF 上传到网络,它们有很好的索引)、PDF 创建者和文档制作者。

这是添加到 PDF 文件的内部信息的部分:标题、作者、主题、关键字(您可以将 PDF 上传到网络,它们有很好的索引)、PDF 创建者和文档制作者。

如何在打开文档时自定义 PDF 查看器:隐藏工具栏、隐藏菜单、隐藏用户界面窗口、展开查看器窗口、居中窗口和拉伸打印尺寸。导出时通常使用开发者设置的默认参数。

如何从 Delphi 或 Lazarus 代码生成 PDF/A

procedure TForm1.Button1Click(Sender: TObject);
begin
 {Generate a report. We must generate a report before exporting}
 frxReport1.PrepareReport();
 {Set the range of exported pages. All pages of the generated report are exported by default}
 frxPDFExport1.PageNumbers := '2-3';
 {Set the PDF standard TPDFStandard = (psNone, psPDFA_1a, psPDFA_1b, psPDFA_2a, psPDFA_2b, psPDFA_3a, psPDFA_3b);  Adding frxExportPDFHelpers module to the uses list is required: uses frxExportPDFHelpers;}
 frxPDFExport1.PDFStandard := psNone;
 {For PDFStandard = psNone you can set the version of the PDF standard TPDFVersion = (pv14, pv15, pv16, pv17);  Adding frxExportPDFHelpers module to the uses list is required: uses frxExportPDFHelpers;}
 frxPDFExport1.PDFVersion := pv17;
 {You can set compression for a smaller file size}
 frxPDFExport1.Compressed := True;
 {Set whether fonts should be embedded in the resulting document.  Font embedding significantly increases the size of the resulting document}
 frxPDFExport1.EmbeddedFonts := False;
 {Set whether to export the background image of the page}
 frxPDFExport1.Background := True;
 {Disable the export of print optimized objects.}
 {When the option is enabled, the image quality will be better, but they will be 9 times larger}
 frxPDFExport1.PrintOptimized := False;
 {Set whether the resulting PDF will include an external table of contents, as in the original report}
 frxPDFExport1.Outline := False;
 {Set whether to export images with transparency}
 frxPDFExport1.Transparency := True;
 {You can set the desired DPI for images. Enabling this option disables the SaveOriginalImages function,}
 {which allows saving images in their original form.}
 frxPDFExport1.PictureDPI := 150;
 {Set compression ratio of raster images}
 frxPDFExport1.Quality := 95;
 {Set whether to open the resulting file after export}
 frxPDFExport1.OpenAfterExport := False;
 {Set whether to display export progress  (show which page is currently being exported)}
 frxPDFExport1.ShowProgress := False;
 {Set whether to display a dialog box with export filter settings}
 frxPDFExport1.ShowDialog := False;
 {Set the name of the resulting file. Note that if you do not set a file name and disable the export filter dialog window,}
 {the dialog will still be displayed for file name selection.}
 frxPDFExport1.FileName := 'C:\Output\test.pdf';
 {Fill in the corresponding fields of the Information tab}
 frxPDFExport1.Title := 'Your Title';
 frxPDFExport1.Author := 'Your Name';
 frxPDFExport1.Subject := 'Your Subject';
 frxPDFExport1.Keywords := 'Your Keywords';
 frxPDFExport1.Creator := 'Creator Name';
 frxPDFExport1.Producer := 'Producer Name';
 {Fill in the corresponding fields of the Security tab}
 frxPDFExport1.UserPassword := 'User Password';
 frxPDFExport1.OwnerPassword := 'Owner Password';
 frxPDFExport1.ProtectionFlags := [ePrint, eModify, eCopy, eAnnot];
 {Set up viewer settings (Viewer tab)}
 frxPDFExport1.HideToolbar := False;
 frxPDFExport1.HideMenubar := False;
 frxPDFExport1.HideWindowUI := False;
 frxPDFExport1.FitWindow := False;
 frxPDFExport1.CenterWindow := False;
 frxPDFExport1.PrintScaling := False;
 {Export the report}
 frxReport1.Export(frxPDFExport1);
end;

FastReport技术QQ群:536197826      欢迎进群一起讨论

本次FastReport使用教程中关于如何使用FastReport VCL 设计器中的 PDF/A的相关内容就到这里了,更多教程进入慧都官网查看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/107863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0基础学python容易吗?零基础学习路线目标

零基础Python学习路线及阶段学习目标,首先应该夯实Python核心基础、Web前端编程、Django开发框架、Flask开发框架、爬虫与数据分析等知识,理解机器学习相关的基本概念及系统处理流程。 零基础Python学习路线及阶段学习目标: 阶段一、Python核…

【React学习】React更新渲染原理

当我们调用 setState 之后发生了什么?react经历了怎样的过程将新的 state 渲染到页面上? 一次react更新,核心就是对虚拟dom进行diff,找出最少的需要变化的dom节点,然后对其进行相应的dom操作,用户即可在页…

亲子游小程序开发,助力商家掌握亲子流量

随着新生代父母越来越年轻化,育儿观念上也发生了很大改变,当代父母已经不在单纯的关注孩子的学习情况,学习固然重要但是孩子的身心健康也是非常重要的。所以很多父母开始带着自己的孩子参加各种各样的亲子活动,多参加亲子活动可以…

Python数据分析之Pandas库

Python数据分析之Pandas库一、Pandas简介二、Pandas库的安装三、Pandas的数据结构四、Series 和 DataFrame 数据结构的使用五、其他可以参考的网站一、Pandas简介 Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于200…

Struts2框架中的Action接口和ActionSupport类

Struts2框架中的Action接口和ActionSupport类1、Action接口2、ActionSupport类3、登录案例3.1、页面3.2、控制器3.3、struts.xml配置3.4、测试1、Action接口 Action是Struts2框架的核心,因为它们适用于任何MVC(Model View Controller)框架。…

【Maven基础】单一架构案例(二)

第三节 搭建环境&#xff1a;事务控制 1、总体思路 2、TransactionFilter 2.1、创建 Filter 类 2.2、TransactionFilter 完整代码 public class TransactionFilter implements Filter {// 声明集合保存静态资源扩展名private static Set<String> staticResourceExtNam…

长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的实践技术应用

【查看原文】长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的实践技术应用 植被是陆地生态系统中最重要的组分之一&#xff0c;也是对气候变化最敏感的组分&#xff0c;其在全球变化过程中起着重要作用&#xff0c;能够指…

云知声: 基于 JuiceFS 的超算平台存储实践

云知声从一家专注于语音及语言处理的技术公司&#xff0c;现在技术栈已经发展到具备图像、自然语言处理、信号等全栈式的 AI 能力&#xff0c;是国内头部人工智能独角兽企业。公司拥抱云计算&#xff0c;在智慧医疗、智慧酒店、智慧教育等方面都有相应的解决方案。 Atlas 是云知…

技术栈入门------RabbitMQ

Direct交换机是路由键精准匹配 Fanout交换机是不看路由键 &#xff0c;只要你消息发给了某个交换机&#xff0c;这个交换机就立马把消息转给绑定了这个交换机的所有队列&#xff0c;所以速度最快 Topic交换机可以把一个消息根据交换机和消息队列的绑定的路由键进行匹配&#xf…

没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

你好呀&#xff0c;我是喜提七天居家隔离的歪歪。 这篇文章要从一个奇怪的注释说起&#xff0c;就是下面这张图&#xff1a; 我们可以不用管具体的代码逻辑&#xff0c;只是单单看这个 for 循环。 在循环里面&#xff0c;专门有个变量 j&#xff0c;来记录当前循环次数。 第…

项目实战之旅游网(一)项目介绍 项目搭建

目录 一.项目介绍 1.功能介绍 2.技术选型 3.实体类 二.项目搭建 1.创建项目 2.adminLTE 3.编写后端首页 4.提取统一后台模板 5.重构后台首页 ************************************************************************* 项目代码地址&#xff1a;等写完这个项目我…

jsoup

1.什么是jsoup jsoup&#xff1a;Java HTML解析器&#xff0c;专为HTML编辑&#xff0c;清理&#xff0c;抓取和XSS安全而构建 2.依赖 <dependency><!-- jsoup HTML parser library https://jsoup.org/ --><groupId>org.jsoup</groupId><artifac…

干货!深入学习必学的模型微调

学习目标 知道微调的原理能够利用微调模型来完成图像的分类任务1.微调 如何在只有6万张图像的MNIST训练数据集上训练模型。学术界当下使用最广泛的大规模图像数据集ImageNet&#xff0c;它有超过1,000万的图像和1,000类的物体。然而&#xff0c;我们平常接触到数据集的规模通…

浅析JWT

Cookie-session 我们都知道JWT一般用于用户登录等需要记住的操作&#xff0c;在谈论JWT之前就不得不谈谈以前的cookie-session登录了 。因为http协议是一种无状态协议&#xff0c;即每次服务端接收到客户端的请求时&#xff0c;都是一个全新的请求&#xff0c;服务器并不知道客…

【从零开始学微服务】08.引入微服务架构的时机

大家好&#xff0c;欢迎来到万猫学社&#xff0c;跟我一起学&#xff0c;你也能成为微服务专家。 在了解引入微服务架构的时机之前&#xff0c;架构设计时一般需要遵循的三个原则。 架构设计三个原则 架构设计一般需要遵循以下三个原则&#xff1a; 合适原则&#xff1a;合适…

NeurIPS'22 | APG:面向CTR预估的自适应参数生成网络

丨目录&#xff1a; 摘要 背景 Method 实验 结语▐ 摘要目前基于深度学习的CTR预估模型&#xff08;即 Deep CTR Models&#xff09;被广泛的应用于各个应用中。传统的 Deep CTR Models 的学习模式是相对静态的&#xff0c;即所有的样本共享相同的网络参数。然而&#xff0c;由…

IntelliJ IDEA中我最爱的10个快捷操作

1. psvm/main快速生成 main() 方法 在日常开发中&#xff0c;我们经常需要写main()方法&#xff0c;这时候您也可以使用main或者psvm命令快速地帮助我们创建出main()方法。 2.sout快速生成println()方法 打印输出一些内容到控制台也是频率很高的一个行为&#xff0c;我们可以…

Pytest断言

&#x1f534;pytest 允许使用标准的python assert 用于验证Python测试中的期望和值。所以并不像unittest的那么丰富。但是我们可以重写。 ❞小例子--介绍 import pytestclass Testnew:def test_num(self):assert 1 "1"def test_dic(self):assert {"QA":…

MySql索引下推知识分享

作者&#xff1a;刘邓忠 Mysql 是大家最常用的数据库&#xff0c;下面为大家带来 mysql 索引下推知识点的分享&#xff0c;以便巩固 mysql 基础知识&#xff0c;如有错误&#xff0c;还请各位大佬们指正。 1 什么是索引下推 索引下推 (Index Condition Pushdown&#xff0c;…

技术分享 | 测试的本质是什么?

本文将分别浅谈不同阶段的业务、不同端的业务、不同类型的业务的测试差异&#xff0c;再抽离其中的测试目标/本质。仅为笔者个人观点&#xff0c;欢迎批评指正。 一、不同阶段业务对测试的需求不同 不同阶段业务对测试的需求不同。这点几乎经历过的人员都心有戚戚焉。 从0到1的…