• C#/VB.NET 创建PDF/UA文件


    1.什么是PDF/UA文件

    PDF/UA,即Universally Accessible PDF,该格式的PDF文件是于2012年8月以ISO标准14289-1发布的、具有普遍可访问的PDF文档标准。为带标签的PDF文档(Tagged PDF Document)和表单的开发人员和作者设定了明确的规则。(PDF/UA-1是作为PDF/UA标准的第一部分,PDF/UA-2作为PDF/UA标准的第二部分)[1]

    2.文件格式要求

    PDF/UA在其基础上有着明确的要求,即该标准都是基于PDF标签,所有PDF/UA文档都必须以PDF标签来正确标记,并且,要求标签在语义上适当,并按逻辑顺序排列。[1]

    3.如何创建PDF/UA文件

    PDF/UA文件作为PDF文件的一种标准格式,要创建该标准的的PDF文档,可使用调用PDF API的方法来创建。下面,是以Spire.PDF for .NET来创建的方法。
    可在Visual Studio 中通过NuGet搜索“Spire.PDF”安装dll到程序中;
    或者下载(hotfix版本)到本地,手动添加本地路径下的Spire.Pdf.dll文件到程序。
    C#
    复制代码
    using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using Spire.Pdf.Interchange.TaggedPdf;
    using System.Drawing;
    namespace CreatePDFUAfile
    {
     class Program
        {
     static void Main(string[] args)
            {
                //创建PdfDocument类的对象
                PdfDocument doc = new PdfDocument();
    
                 //添加一页
                doc.Pages.Add();
    
                 //设置tab order
                doc.Pages[0].SetTabOrder(TabOrder.Structure);
    
                 //创建PdfTaggedContent类的对象
                PdfTaggedContent taggedContent = new PdfTaggedContent(doc);
                taggedContent.SetLanguage("en-US");
                taggedContent.SetTitle("test");
    
                 //设置PDF/UA1验证
                taggedContent.SetPdfUA1Identification();
    
                 //创建字体、画刷
                PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman", 10), true);
                PdfSolidBrush brush = new PdfSolidBrush(Color.Black);
    
                 //添加要素
                PdfStructureElement article = taggedContent.StructureTreeRoot.AppendChildElement(PdfStandardStructTypes.Document);
                PdfStructureElement paragraph1 = article.AppendChildElement(PdfStandardStructTypes.Paragraph);
                PdfStructureElement span1 = paragraph1.AppendChildElement(PdfStandardStructTypes.Span);
                span1.BeginMarkedContent(doc.Pages[0]);
                PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Justify);
                doc.Pages[0].Canvas.DrawString("PDF/UA was published as ISO Standard 14289-1 in August 2012" +
     " and is by far the first complete definition " +
     "of a set of requirements for universally accessible PDF documents.",
                   font, brush, new Rectangle(40, 80, 450, 80), format);
                span1.EndMarkedContent(doc.Pages[0]);
                PdfStructureElement paragraph2 = article.AppendChildElement(PdfStandardStructTypes.Paragraph);
                paragraph2.BeginMarkedContent(doc.Pages[0]);
                doc.Pages[0].Canvas.DrawString("The PDF/UA has some definite requirements at its base that act as the essence of this standard.",
                   font, brush, new Rectangle(40, 120, 450, 60), format);
                paragraph2.EndMarkedContent(doc.Pages[0]);
                PdfStructureElement figure1 = article.AppendChildElement(PdfStandardStructTypes.Figure);
                 //Set Alternate text 
                figure1.Alt = "replacement text1";
                figure1.BeginMarkedContent(doc.Pages[0], null);
                PdfImage image = PdfImage.FromFile(@"logo.jpg");
                doc.Pages[0].Canvas.DrawImage(image, new PointF(40, 200), new SizeF(100, 100));
                figure1.EndMarkedContent(doc.Pages[0]);
                PdfStructureElement figure2 = article.AppendChildElement(PdfStandardStructTypes.Figure);
                 //Set Alternate text
                figure2.Alt = "replacement text2";
                figure2.BeginMarkedContent(doc.Pages[0], null);
                doc.Pages[0].Canvas.DrawRectangle(PdfPens.Black, new Rectangle(300, 200, 100, 100));
                figure2.EndMarkedContent(doc.Pages[0]);
    
                 //保存文档
                doc.SaveToFile("CreatePDFUAFile_result.pdf");
                System.Diagnostics.Process.Start("CreatePDFUAFile_result.pdf");
            }
        }
    }
    复制代码

    VB.NET

    复制代码
    Imports Spire.Pdf
    Imports Spire.Pdf.Graphics
    Imports Spire.Pdf.Interchange.TaggedPdf
    Imports System.Drawing
    
    Namespace CreatePDFUAfile
        Class Program
            Private Shared Sub Main(args As String())
                '创建PdfDocument类的对象
                Dim doc As New PdfDocument()
    
                '添加一页
                doc.Pages.Add()
    
                '设置tab order
                doc.Pages(0).SetTabOrder(TabOrder.[Structure])
    
                '创建PdfTaggedContent类的对象
                Dim taggedContent As New PdfTaggedContent(doc)
                taggedContent.SetLanguage("en-US")
                taggedContent.SetTitle("test")
    
                '设置PDF/UA1验证
                taggedContent.SetPdfUA1Identification()
    
                '创建字体、画刷
                Dim font As New PdfTrueTypeFont(New Font("Times New Roman", 10), True)
                Dim brush As New PdfSolidBrush(Color.Black)
    
                '添加要素
                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(doc.Pages(0))
    
                Dim format As New PdfStringFormat(PdfTextAlignment.Justify)
                doc.Pages(0).Canvas.DrawString("PDF/UA was published as ISO Standard 14289-1 in August 2012" + " and is by far the first complete definition " + "of a set of requirements for universally accessible PDF documents.", font, brush, New Rectangle(40, 80, 450, 80), format)
                span1.EndMarkedContent(doc.Pages(0))
    
                Dim paragraph2 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Paragraph)
                paragraph2.BeginMarkedContent(doc.Pages(0))
                doc.Pages(0).Canvas.DrawString("The PDF/UA has some definite requirements at its base that act as the essence of this standard.", font, brush, New Rectangle(40, 120, 450, 60), format)
                paragraph2.EndMarkedContent(doc.Pages(0))
    
                Dim figure1 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Figure)
                'Set Alternate text 
                figure1.Alt = "replacement text1"
                figure1.BeginMarkedContent(doc.Pages(0), Nothing)
                Dim image As PdfImage = PdfImage.FromFile("logo.jpg")
                doc.Pages(0).Canvas.DrawImage(image, New PointF(40, 200), New SizeF(100, 100))
                figure1.EndMarkedContent(doc.Pages(0))
    
                Dim figure2 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Figure)
                'Set Alternate text
                figure2.Alt = "replacement text2"
                figure2.BeginMarkedContent(doc.Pages(0), Nothing)
                doc.Pages(0).Canvas.DrawRectangle(PdfPens.Black, New Rectangle(300, 200, 100, 100))
                figure2.EndMarkedContent(doc.Pages(0))
    
                '保存文档
                doc.SaveToFile("CreatePDFUAFile_result.pdf")
                System.Diagnostics.Process.Start("CreatePDFUAFile_result.pdf")
            End Sub
        End Class
    End Namespace
    复制代码

     

    参考资料:

     

    —END—

     

    相关阅读推荐C# 创建标签PDF文件

     

  • 相关阅读:
    李宏毅《机器学习》丨7. Conclusion(总结)
    CSS容器查询终于来了
    【ARM-Linux篇】智能家居语音模块配置
    F. Kirei and the Linear Function(思维 + 哈希 + 预处理)
    06【工厂设计模式】
    学籍学籍信息
    react基础
    深度神经网络基础知识
    json、jquery、ajax
    JavaScript 在 HTML 中的应用
  • 原文地址:https://www.cnblogs.com/Yesi/p/16618895.html