<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
標籤PDF檔案包含描述檔案結構和各種檔案元素順序的後設資料,是一種包含後端提供的可存取標記,管理閱讀順序和檔案內容表示的邏輯結構的PDF檔案[1]。
PDF標籤是通過螢幕閱讀器等支援技術存取PDF檔案內容的關鍵。PDF標記在層次結構或標記樹(tag tree)中排列PDF內容[1]。
這裡的標籤是一種不可見的標籤,它提供關於PDF檔案內容的重要資訊。帶標籤的PDF包含許多不同型別的標籤,但最常用的是文字、替代文字(影象的替代文字)、標題、連結和連結描述[2]。
新增PDF標籤不會改變檔案的視覺外觀,但它提供了一個不可見的層,用於格式化檔案與螢幕閱讀器共同作業工作,這就使得從PDF檔案中提取文字和圖形變得更容易,並幫助螢幕閱讀器以正確的順序顯示檔案內容。[2]
PDF標籤還可以用於將內容傳輸到螢幕較小的裝置,如智慧手機和平板電腦。[2]
本文將要介紹的建立方法是以後端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/
到此這篇關於C#實現建立標籤PDF檔案的範例程式碼的文章就介紹到這了,更多相關C#建立標籤PDF內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45