C创建标签PDF文件
Q1:关于"标签PDF文件(Tagged PDF)"
标签PDF文件包含描述文档结构和各种文档元素顺序的元数据,是一种包含后端提供的可访问标记,管理阅读顺序和文档内容表示的逻辑结构的PDF文件 [1] 。Q2:关于"标签(Tag)"
PDF标签是通过屏幕阅读器等支持技术访问PDF文档内容的关键。PDF标记在层次结构或标记树(tag tree)中排列PDF内容 [1] 。
这里的标签是一种不可见的标签,它提供关于PDF文档内容的重要信息。带标签的PDF包含许多不同类型的标签,但最常用的是文本、替代文本(图像的替代文本)、标题、链接和链接描述 [2] 。Q3:PDF标签的用处及意义
添加PDF标签不会改变文档的视觉外观,但它提供了一个不可见的层,用于格式化文档与屏幕阅读器协作工作,这就使得从PDF文件中提取文本和图形变得更容易,并帮助屏幕阅读器以正确的顺序显示文件内容。 [2]
PDF标签还可以用于将内容传输到屏幕较小的设备,如智能手机和平板电脑。 [2] Q4:如何创建标签PDF文件
本文将要介绍的创建方法是以后端C#程序代码的方式来创建标签PDF文件。创建时,通过NuGet安装引用PDF API- Spire.PDF for .NET ,调用其提供的类及相关方法来标记内容、结构元素等。
C#
using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Interchange.TaggedPdf; using System.Drawing; namespace CreateTaggedPDF { class Program { static void Main(string[] args) { //创建PdfDocument类的对象 PdfDocument pdf = new PdfDocument(); //添加一页 pdf.Pages.Add(PdfPageSize.A4); //设置tab order pdf.Pages[0].SetTabOrder(TabOrder.Structure); //创建PdfTaggedContent类的对象 PdfTaggedContent taggedContent = new PdfTaggedContent(pdf); taggedContent.SetLanguage("en-US"); taggedContent.SetTitle("test"); //创建字体、画刷、字符串格式 PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman", 10), true); PdfSolidBrush brush = new PdfSolidBrush(Color.Black); PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left); //添加elements PdfStructureElement article = taggedContent.StructureTreeRoot.AppendChildElement(PdfStandardStructTypes.Document); PdfStructureElement paragraph1 = article.AppendChildElement(PdfStandardStructTypes.Paragraph); PdfStructureElement span1 = paragraph1.AppendChildElement(PdfStandardStructTypes.Span); span1.BeginMarkedContent(pdf.Pages[0]); //绘制内容到页面 pdf.Pages[0].Canvas.DrawString("A PDF tag is the key to accessing the contents of PDF documents with supporting technologies such as screen readers. ", font, brush, new Rectangle(40, 0, 480, 80), format); span1.EndMarkedContent(pdf.Pages[0]); PdfStructureElement paragraph2 = article.AppendChildElement(PdfStandardStructTypes.Paragraph); paragraph2.BeginMarkedContent(pdf.Pages[0]); pdf.Pages[0].Canvas.DrawString("A PDF tag arranges the PDF content in a hierarchical architecture or tag tree.", font, brush, new Rectangle(40, 80, 480, 80), format); paragraph2.EndMarkedContent(pdf.Pages[0]); PdfStructureElement figure1 = article.AppendChildElement(PdfStandardStructTypes.Figure); //Set Alternate text figure1.Alt = "replacement text1"; figure1.BeginMarkedContent(pdf.Pages[0], null); PdfImage image = PdfImage.FromFile(@"logo.png"); pdf.Pages[0].Canvas.DrawImage(image, new PointF(40, 200), new SizeF(100, 100));//绘制图片到页面 figure1.EndMarkedContent(pdf.Pages[0]); PdfStructureElement figure2 = article.AppendChildElement(PdfStandardStructTypes.Figure); //Set Alternate text figure2.Alt = "replacement text2"; figure2.BeginMarkedContent(pdf.Pages[0], null); pdf.Pages[0].Canvas.DrawRectangle(PdfPens.Black, new Rectangle(300, 200, 100, 100)); figure2.EndMarkedContent(pdf.Pages[0]); //保存文档 pdf.SaveToFile("CreateTaggedFile_result.pdf"); } } }
vb.net
Imports Spire.Pdf Imports Spire.Pdf.Graphics Imports Spire.Pdf.Interchange.TaggedPdf Imports System.Drawing Namespace CreateTaggedPDF Class Program Private Shared Sub Main(args As String()) "创建PdfDocument类的对象 Dim pdf As New PdfDocument() "添加一页 pdf.Pages.Add(PdfPageSize.A4) "设置tab order pdf.Pages(0).SetTabOrder(TabOrder.[Structure]) "创建PdfTaggedContent类的对象 Dim taggedContent As New PdfTaggedContent(pdf) taggedContent.SetLanguage("en-US") taggedContent.SetTitle("test") "创建字体、画刷、字符串格式 Dim font As New PdfTrueTypeFont(New Font("Times New Roman", 10), True) Dim brush As New PdfSolidBrush(Color.Black) Dim format As New PdfStringFormat(PdfTextAlignment.Left) "添加elements Dim article As PdfStructureElement = taggedContent.StructureTreeRoot.AppendChildElement(PdfStandardStructTypes.Document) Dim paragraph1 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Paragraph) Dim span1 As PdfStructureElement = paragraph1.AppendChildElement(PdfStandardStructTypes.Span) span1.BeginMarkedContent(pdf.Pages(0)) "绘制内容到页面 pdf.Pages(0).Canvas.DrawString("A PDF tag is the key to accessing the contents of PDF documents with supporting technologies such as screen readers. ", font, brush, New Rectangle(40, 0, 480, 80), format) span1.EndMarkedContent(pdf.Pages(0)) Dim paragraph2 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Paragraph) paragraph2.BeginMarkedContent(pdf.Pages(0)) pdf.Pages(0).Canvas.DrawString("A PDF tag arranges the PDF content in a hierarchical architecture or tag tree.", font, brush, New Rectangle(40, 80, 480, 80), format) paragraph2.EndMarkedContent(pdf.Pages(0)) Dim figure1 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Figure) "Set Alternate text figure1.Alt = "replacement text1" figure1.BeginMarkedContent(pdf.Pages(0), Nothing) Dim image As PdfImage = PdfImage.FromFile("logo.png") pdf.Pages(0).Canvas.DrawImage(image, New PointF(40, 200), New SizeF(100, 100)) "绘制图片到页面 figure1.EndMarkedContent(pdf.Pages(0)) Dim figure2 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Figure) "Set Alternate text figure2.Alt = "replacement text2" figure2.BeginMarkedContent(pdf.Pages(0), Nothing) pdf.Pages(0).Canvas.DrawRectangle(PdfPens.Black, New Rectangle(300, 200, 100, 100)) figure2.EndMarkedContent(pdf.Pages(0)) "保存文档 pdf.SaveToFile("CreateTaggedFile_result.pdf") System.Diagnostics.Process.Start("CreateTaggedFile_result.pdf") End Sub End Class End Namespace
参考资料:
[1]. https://247accessibledocuments.com/what-is-a-tagged-pdf/
[2]. https://accessibility-i.org/what-is-a-tagged-pdf/
学习电脑知识好不好?电脑用的越来越普遍,学习电脑,尤其是如何用,成了当下几乎必备的知识技能。这个问题问的有点那个啥微笑,现在各行各业都需要用到计算机,零售办公,企业必不可少的工具,普及率较高,电脑知识
盘点NBA历史十大恶人(106名)第十名拉希德华莱士外号怒吼天尊,光看绰号就能感受到此人的脾气了。华莱士每个赛季几乎都是技犯之王,同时每个赛季也都会因为技术犯规太多而被联盟处以罚款。在20002001赛季常规赛中华
泽林斯基现在唯一重要的是赢米兰那不勒斯优势大但还未赢意甲直播吧3月28日讯接受记者采访时,那不勒斯中场泽林斯基谈到了接下来对阵米兰的比赛。泽林斯基表示面对米兰,那不勒斯有望在欧冠中晋级半决赛?我们还没考虑过这个事情,我们正专注于意甲联赛
意大利地球观测星座IRIDE将获得六颗带合成孔径雷达的小型卫星据Satnews3月27日报道,泰雷兹公司(67)和莱昂纳多公司(33)的合资企业泰雷兹阿莱尼亚航天公司已赢得欧洲航天局(ESA)的合同,为意大利地球观测星座IRIDE提供首批六颗
三四线城市的高房价时代已经结束了吗?现在判断三四线城市高房价已经结束尚且过早,因为支撑三四线城市房价上涨的短期利好还没有完全出尽,部分地区房价还有上冲动能。三四线城市房价上涨的重要动力来自于棚户区改造,按照国家计划,
农村妻跑族逐渐增多,是啥原因,导致农村妻跑族增多的?亲戚陈某,养有二子,好不容易给他们娶婚成家,生下孩子,原以为大事已了,可以安享晚年了,谁知一个变故,除了多了四个孙子外,一切又回到了老样子。原来儿媳自嫁进陈门,就从来没有做过农事,
农民自己杀猪违法吗?农民自已养猪自已杀,有几百年历史,民间习俗没错吧?自已养自已杀不应该有错!那些专家搞事,又不让散养鸡鸭鹅,这些事本来非常自然的事,这些专家吃饱称的座办室乱放屁!他们能为国家做些有利
冬奥会为何选丰田的氢燃料汽车,而不用国产的锂电池车?原因非常简单。丰田是本届奥运会与国际奥委会的签约赞助商,所以,本届奥运会,无论东京的夏季奥运会还是北京的冬季奥运会,奥运会官方使用的车辆,都只能是丰田汽车。为了更好的突显绿色节能和
一副中药一般熬几次?谢谢你的问题一副中药一般熬几次?一般中药先要用凉水泡20分钟后再熬,第一次大火开了小火再慢慢熬半小时,把药水倒出来。第二次又添凉水刚奄过药材大火熬至药水开后,关小火再熬半小时,倒入
乔治我几乎与詹姆斯在骑士联手很意外最后与威少在俄城搭档直播吧3月28日讯乔治近日在自己的播客节目PodcastPwithPaulGeorge中谈到了他离开步行者后的下家。谈到自己离开步行者那年的潜在下家,乔治说道几乎没几个人知道,我当
小雷只要列维掌权热刺就无法夺冠,球队从不以夺冠为目标直播吧3月28日讯北京时间3月27日凌晨,热刺官方宣布主帅孔蒂下课。小雷德克纳普在自己的专栏中评价了此事。小雷德克纳普写道我在热刺对阵南安普顿的比赛后就说过,孔蒂在热刺已经站不住脚