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

C#代碼實現(xiàn)創(chuàng)建帶結(jié)構(gòu)標(biāo)簽的PDF文檔

 更新時間:2026年03月03日 08:23:27   作者:2501_93070778  
帶標(biāo)簽的?PDF(也稱為?PDF/UA)是一種包含結(jié)構(gòu)化標(biāo)簽樹的?PDF?文檔,本文將介紹如何使用?Spire.PDF?for?.NET,在?C#?和?VB.NET?中從零開始創(chuàng)建一個帶標(biāo)簽的?PDF?文檔,有需要的可以了解下

帶標(biāo)簽的 PDF(也稱為 PDF/UA)是一種包含結(jié)構(gòu)化標(biāo)簽樹的 PDF 文檔,其結(jié)構(gòu)類似于 HTML,用于定義文檔的層級和內(nèi)容組織方式。通過這些標(biāo)簽,屏幕閱讀器等輔助工具可以準(zhǔn)確識別文檔結(jié)構(gòu),實現(xiàn)無障礙閱讀,確保信息完整傳達(dá)。

本文將介紹如何使用 Spire.PDF for .NET,在 C# 和 VB.NET 中從零開始創(chuàng)建一個帶標(biāo)簽的 PDF 文檔。

安裝 Spire.PDF for .NET

在開始之前,需要將 Spire.PDF for .NET 包中的 DLL 文件添加為 .NET 項目的引用。您可以通過官方下載鏈接獲取 DLL 文件,或直接通過 NuGet 進(jìn)行安裝。

PM> Install-Package Spire.PDF

創(chuàng)建包含豐富結(jié)構(gòu)元素的帶標(biāo)簽 PDF

在帶標(biāo)簽的 PDF 文檔中添加結(jié)構(gòu)元素時,首先需要創(chuàng)建一個 PdfTaggedContent 類對象。隨后,通過 PdfTaggedContent.StructureTreeRoot.AppendChildElement() 方法向結(jié)構(gòu)樹的根節(jié)點添加元素。

下面以添加“標(biāo)題(heading)”元素為例,介紹使用 Spire.PDF for .NET 創(chuàng)建帶標(biāo)簽 PDF 的具體步驟:

  • 創(chuàng)建 PdfDocument 對象,并使用 PdfDocument.Pages.Add() 方法添加一個頁面。
  • 創(chuàng)建 PdfTaggedContent 類的實例。
  • 調(diào)用 PdfTaggedContent.SetPdfUA1Identification() 方法,使文檔符合 PDF/UA 無障礙標(biāo)準(zhǔn)。
  • 使用 PdfTaggedContent.StructureTreeRoot.AppendChildElement() 方法,在文檔結(jié)構(gòu)樹根節(jié)點下添加一個 “document” 元素。
  • 通過 PdfStructureElement.AppendChildElement() 方法,在 “document” 元素下添加一個 “heading” 元素。
  • 調(diào)用 PdfStructureElement.BeginMarkedContent() 方法添加開始標(biāo)記,用于標(biāo)識標(biāo)題內(nèi)容的起始位置。
  • 使用 PdfPageBase.Canvas.DrawString() 方法在頁面上繪制標(biāo)題文本。
  • 添加結(jié)束標(biāo)記(對應(yīng)標(biāo)題內(nèi)容結(jié)束)。
  • 使用 PdfDocument.SaveToFile() 方法將文檔保存為 PDF 文件。

下面的代碼示例展示了如何在 C# 和 VB.NET 中創(chuàng)建包含多種結(jié)構(gòu)元素(如 document、heading、paragraph、figure 和 table)的帶標(biāo)簽 PDF 文檔。

using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Interchange.TaggedPdf;
using Spire.Pdf.Tables;
using System.Data;
using System.Drawing;

namespace CreatePDFUA
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 PdfDocument 對象
            PdfDocument doc = new PdfDocument();

            // 添加一個頁面
            PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(20));          

            // 設(shè)置 Tab 順序為結(jié)構(gòu)順序
            page.SetTabOrder(TabOrder.Structure);

            // 創(chuàng)建 PdfTaggedContent 類對象
            PdfTaggedContent taggedContent = new PdfTaggedContent(doc);

            // 設(shè)置文檔語言和標(biāo)題
            taggedContent.SetLanguage("en-US");
            taggedContent.SetTitle("test");

            // 設(shè)置 PDF/UA1 標(biāo)識(符合無障礙標(biāo)準(zhǔn))
            taggedContent.SetPdfUA1Identification();

            // 創(chuàng)建字體和畫刷
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman", 14), true);
            PdfSolidBrush brush = new PdfSolidBrush(Color.Black);

            // 添加“document”結(jié)構(gòu)元素
            PdfStructureElement document = taggedContent.StructureTreeRoot.AppendChildElement(PdfStandardStructTypes.Document);

            // 添加“heading”(一級標(biāo)題)元素
            PdfStructureElement heading1 = document.AppendChildElement(PdfStandardStructTypes.HeadingLevel1);
            heading1.BeginMarkedContent(page);      
            string headingText = "What Is a Tagged PDF?";
            page.Canvas.DrawString(headingText, font, brush, new PointF(0, 0));
            heading1.EndMarkedContent(page);

            // 添加“paragraph”(段落)元素
            PdfStructureElement paragraph = document.AppendChildElement(PdfStandardStructTypes.Paragraph);
            paragraph.BeginMarkedContent(page);
            string paragraphText = "“Tagged PDF” doesn't seem like a life-changing term. But for some, it is. For people who are " +
                "blind or have low vision and use assistive technology (such as screen readers and connected Braille displays) to " +
                "access information, an untagged PDF means they are missing out on information contained in the document because assistive " +
                "technology cannot “read” untagged PDFs. Digital accessibility has opened up so many avenues to information that were once " +
                "closed to people with visual disabilities, but PDFs often get left out of the equation.";
            RectangleF rect = new RectangleF(0, 30, page.Canvas.ClientSize.Width, page.Canvas.ClientSize.Height);
            page.Canvas.DrawString(paragraphText, font, brush, rect);
            paragraph.EndMarkedContent(page);

            // 添加“figure”(圖像)元素
            PdfStructureElement figure = document.AppendChildElement(PdfStandardStructTypes.Figure);
            figure.BeginMarkedContent(page);
            PdfImage image = PdfImage.FromFile(@"C:\Users\Administrator\Desktop\pdfua.png");
            page.Canvas.DrawImage(image, new PointF(0, 150));
            figure.EndMarkedContent(page);

            // 添加“table”(表格)元素
            PdfStructureElement table = document.AppendChildElement(PdfStandardStructTypes.Table);
            table.BeginMarkedContent(page);
            PdfTable pdfTable = new PdfTable();
            pdfTable.Style.DefaultStyle.Font = font;

            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("Name");
            dataTable.Columns.Add("Age");
            dataTable.Columns.Add("Sex");
            dataTable.Rows.Add(new string[] { "John", "22", "Male" });
            dataTable.Rows.Add(new string[] { "Katty", "25", "Female" });

            pdfTable.DataSource = dataTable;
            pdfTable.Style.ShowHeader = true;
            pdfTable.Draw(page.Canvas, new PointF(0, 280), 300f);
            table.EndMarkedContent(page);

            // 將文檔保存為文件
            doc.SaveToFile("CreatePDFUA.pdf");
        }
    }
}

方法補(bǔ)充

下面小編為大家整理了其他C#創(chuàng)建帶標(biāo)簽PDF文件的方法,希望對大家有所幫助

C#實現(xiàn)代碼:

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實現(xiàn)代碼

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

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

相關(guān)文章

  • C#中Json字符串的各種應(yīng)用類實例講解

    C#中Json字符串的各種應(yīng)用類實例講解

    這篇文章主要介紹了C#中Json字符串的各種應(yīng)用類實例講解的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • C#用遞歸算法解決八皇后問題

    C#用遞歸算法解決八皇后問題

    在軟件編程中,這種思路確是一種解決問題最簡單的算法,它通過一種類似于蠻干的思路,一步一步地往前走,每走一步都更靠近目標(biāo)結(jié)果一些,直到遇到障礙物,我們才考慮往回走。
    2016-06-06
  • C#中使用IFormattable實現(xiàn)自定義格式化字符串輸出示例

    C#中使用IFormattable實現(xiàn)自定義格式化字符串輸出示例

    這篇文章主要介紹了C#中使用IFormattable實現(xiàn)自定義格式字符串輸出示例,本文直接給出實例代碼,需要的朋友可以參考下
    2015-06-06
  • 簡述C#枚舉高級戰(zhàn)術(shù)

    簡述C#枚舉高級戰(zhàn)術(shù)

    這篇文章主要介紹了簡述C#枚舉高級戰(zhàn)術(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Unity游戲開發(fā)之2048游戲的實現(xiàn)

    Unity游戲開發(fā)之2048游戲的實現(xiàn)

    2048是一款數(shù)字益智游戲,初始數(shù)字則是由2+2組成的基數(shù)4。在操作方面的不同則表現(xiàn)為一步一格的移動,變成更為爽快的一次到底。相同數(shù)字的方?jīng)r在靠攏、相撞時會相加。本文將通過Unity3D實現(xiàn)這一游戲,需要的可以參考一下
    2022-03-03
  • C#中WPF依賴屬性的正確學(xué)習(xí)方法

    C#中WPF依賴屬性的正確學(xué)習(xí)方法

    這篇文章主要介紹了C#中WPF依賴屬性的正確學(xué)習(xí)方法 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 詳解C#中的字符串拼接@ $

    詳解C#中的字符串拼接@ $

    這篇文章主要介紹了C#中的字符串拼接@,$的相關(guān)知識,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Unity3D實現(xiàn)物體排成弧行

    Unity3D實現(xiàn)物體排成弧行

    這篇文章主要為大家詳細(xì)介紹了Unity3D實現(xiàn)物體排成弧行,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C#如何將查詢到的數(shù)據(jù)庫里面的數(shù)據(jù)輸出到textbox控件

    C#如何將查詢到的數(shù)據(jù)庫里面的數(shù)據(jù)輸出到textbox控件

    這篇文章主要介紹了C#如何將查詢到的數(shù)據(jù)庫里面的數(shù)據(jù)輸出到textbox控件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • c#獲取光標(biāo)在屏幕中位置的簡單實例

    c#獲取光標(biāo)在屏幕中位置的簡單實例

    這篇文章主要介紹了c#獲取光標(biāo)在屏幕中位置的簡單實例,有需要的朋友可以參考一下
    2013-12-12

最新評論

余姚市| 灵寿县| 祁东县| 武陟县| 和林格尔县| 中牟县| 湖南省| 松溪县| 永修县| 开鲁县| 黄石市| 广德县| 安仁县| 山阳县| 于都县| 威信县| 交口县| 舒城县| 防城港市| 恭城| 木里| 安康市| 舟山市| 崇礼县| 行唐县| 扎囊县| 文登市| 河西区| 雷州市| 房山区| 田阳县| 铜梁县| 固安县| 拜城县| 清镇市| 大宁县| 昂仁县| 常德市| 祁连县| 根河市| 汉川市|