最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)創(chuàng)建標(biāo)簽PDF文件的示例代碼

 更新時間:2022年08月16日 11:30:36   作者:E-iceblue  
標(biāo)簽PDF文件包含描述文檔結(jié)構(gòu)和各種文檔元素順序的元數(shù)據(jù),是一種包含后端提供的可訪問標(biāo)記,管理閱讀順序和文檔內(nèi)容表示的邏輯結(jié)構(gòu)的PDF文件。本文將用C#實(shí)現(xiàn)創(chuàng)建標(biāo)簽PDF文件,需要的可以參考一下

關(guān)于“標(biāo)簽PDF文件(Tagged PDF)

標(biāo)簽PDF文件包含描述文檔結(jié)構(gòu)和各種文檔元素順序的元數(shù)據(jù),是一種包含后端提供的可訪問標(biāo)記,管理閱讀順序和文檔內(nèi)容表示的邏輯結(jié)構(gòu)的PDF文件[1]。

關(guān)于“標(biāo)簽(Tag)

PDF標(biāo)簽是通過屏幕閱讀器等支持技術(shù)訪問PDF文檔內(nèi)容的關(guān)鍵。PDF標(biāo)記在層次結(jié)構(gòu)或標(biāo)記樹(tag tree)中排列PDF內(nèi)容[1]。

這里的標(biāo)簽是一種不可見的標(biāo)簽,它提供關(guān)于PDF文檔內(nèi)容的重要信息。帶標(biāo)簽的PDF包含許多不同類型的標(biāo)簽,但最常用的是文本、替代文本(圖像的替代文本)、標(biāo)題、鏈接和鏈接描述[2]。

PDF標(biāo)簽的用處及意義

添加PDF標(biāo)簽不會改變文檔的視覺外觀,但它提供了一個不可見的層,用于格式化文檔與屏幕閱讀器協(xié)作工作,這就使得從PDF文件中提取文本和圖形變得更容易,并幫助屏幕閱讀器以正確的順序顯示文件內(nèi)容。[2]

PDF標(biāo)簽還可以用于將內(nèi)容傳輸?shù)狡聊惠^小的設(shè)備,如智能手機(jī)和平板電腦。[2]

如何創(chuàng)建標(biāo)簽PDF文件

本文將要介紹的創(chuàng)建方法是以后端C#程序代碼的方式來創(chuàng)建標(biāo)簽PDF文件。創(chuàng)建時,通過NuGet安裝引用PDF API-Spire.PDF for .NET,調(diào)用其提供的類及相關(guān)方法來標(biāo)記內(nèi)容、結(jié)構(gòu)元素等。

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)
        {
            //創(chuàng)建PdfDocument類的對象
            PdfDocument pdf = new PdfDocument();

            //添加一頁
            pdf.Pages.Add(PdfPageSize.A4);

            //設(shè)置tab order
            pdf.Pages[0].SetTabOrder(TabOrder.Structure);

            //創(chuàng)建PdfTaggedContent類的對象
            PdfTaggedContent taggedContent = new PdfTaggedContent(pdf);
            taggedContent.SetLanguage("en-US");
            taggedContent.SetTitle("test");

            //創(chuàng)建字體、畫刷、字符串格式
            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]);
            //繪制內(nèi)容到頁面
            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())
            '創(chuàng)建PdfDocument類的對象
            Dim pdf As New PdfDocument()

            '添加一頁
            pdf.Pages.Add(PdfPageSize.A4)

            '設(shè)置tab order
            pdf.Pages(0).SetTabOrder(TabOrder.[Structure])

            '創(chuàng)建PdfTaggedContent類的對象
            Dim taggedContent As New PdfTaggedContent(pdf)
            taggedContent.SetLanguage("en-US")
            taggedContent.SetTitle("test")

            '創(chuàng)建字體、畫刷、字符串格式
            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))
            '繪制內(nèi)容到頁面
            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/

到此這篇關(guān)于C#實(shí)現(xiàn)創(chuàng)建標(biāo)簽PDF文件的示例代碼的文章就介紹到這了,更多相關(guān)C#創(chuàng)建標(biāo)簽PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中l(wèi)ock用法詳解

    C#中l(wèi)ock用法詳解

    這篇文章主要介紹了C#中l(wèi)ock用法,以實(shí)例形式詳細(xì)分析了lock語句的用法及用途,需要的朋友可以參考下
    2014-11-11
  • C#打包部署并把.net framework框架打到安裝包的方法步驟

    C#打包部署并把.net framework框架打到安裝包的方法步驟

    打包c(diǎn)#程序時,有時需要添加.net framework組件到安裝包,本文就來介紹一下C#打包部署并把.net framework框架打到安裝包的方法步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 基于XSLT調(diào)試的相關(guān)問題

    基于XSLT調(diào)試的相關(guān)問題

    本篇文章是對XSLT調(diào)試的相關(guān)問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • unity實(shí)現(xiàn)車方向盤轉(zhuǎn)動效果

    unity實(shí)現(xiàn)車方向盤轉(zhuǎn)動效果

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)車方向盤轉(zhuǎn)動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • c#實(shí)現(xiàn)metro文件壓縮解壓示例

    c#實(shí)現(xiàn)metro文件壓縮解壓示例

    這篇文章主要介紹了c#實(shí)現(xiàn)metro文件壓縮解壓示例,實(shí)現(xiàn)了zip中增加一張新圖片、刪除文件的方法,需要的朋友可以參考下
    2014-03-03
  • C#單例類的實(shí)現(xiàn)方法

    C#單例類的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#單例類的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • C#沉淀之委托的深入講解

    C#沉淀之委托的深入講解

    如果要給方法傳遞一個方法參數(shù)時,就可以使用委托。下面這篇文章主要給大家介紹了關(guān)于C#沉淀之委托的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • C# 線程相關(guān)知識總結(jié)

    C# 線程相關(guān)知識總結(jié)

    這篇文章主要介紹了C# 線程相關(guān)知識,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C# 創(chuàng)建文本文件寫入讀取實(shí)現(xiàn)代碼

    C# 創(chuàng)建文本文件寫入讀取實(shí)現(xiàn)代碼

    C# 創(chuàng)建文本文件寫入讀取,可以用來做系統(tǒng)日志或程序操作日志或者錯誤記錄,需要的朋友可以參考下。
    2011-11-11
  • C#操作LINQ to SQL組件進(jìn)行數(shù)據(jù)庫建模的基本教程

    C#操作LINQ to SQL組件進(jìn)行數(shù)據(jù)庫建模的基本教程

    這篇文章主要介紹了C#操作LINQ to SQL組件進(jìn)行數(shù)據(jù)庫建模的基本教程,LINQ to SQL被集成在.NET框架之中,需要的朋友可以參考下
    2016-03-03

最新評論

邳州市| 双鸭山市| 黄梅县| 许昌县| 襄樊市| 石阡县| 富川| 青州市| 平武县| 泽州县| 安新县| 南木林县| 科尔| 鹤峰县| 绵竹市| 资中县| 白玉县| 大埔区| 安西县| 大同市| 建德市| 八宿县| 奉新县| 全州县| 亳州市| 青田县| 兴国县| 拉萨市| 温泉县| 柳河县| 临泽县| 弥勒县| 龙川县| 芦山县| 惠安县| 云林县| 博爱县| 宜黄县| 舟曲县| 彭水| 南涧|