• 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#

    1. using Spire.Pdf;
    2. using Spire.Pdf.Graphics;
    3. using Spire.Pdf.Interchange.TaggedPdf;
    4. using System.Drawing;
    5. namespace CreatePDFUAfile
    6. {
    7. class Program
    8. {
    9. static void Main(string[] args)
    10. {
    11. //创建PdfDocument类的对象
    12. PdfDocument doc = new PdfDocument();
    13. //添加一页
    14. doc.Pages.Add();
    15. //设置tab order
    16. doc.Pages[0].SetTabOrder(TabOrder.Structure);
    17. //创建PdfTaggedContent类的对象
    18. PdfTaggedContent taggedContent = new PdfTaggedContent(doc);
    19. taggedContent.SetLanguage("en-US");
    20. taggedContent.SetTitle("test");
    21. //设置PDF/UA1验证
    22. taggedContent.SetPdfUA1Identification();
    23. //创建字体、画刷
    24. PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman", 10), true);
    25. PdfSolidBrush brush = new PdfSolidBrush(Color.Black);
    26. //添加要素
    27. PdfStructureElement article = taggedContent.StructureTreeRoot.AppendChildElement(PdfStandardStructTypes.Document);
    28. PdfStructureElement paragraph1 = article.AppendChildElement(PdfStandardStructTypes.Paragraph);
    29. PdfStructureElement span1 = paragraph1.AppendChildElement(PdfStandardStructTypes.Span);
    30. span1.BeginMarkedContent(doc.Pages[0]);
    31. PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Justify);
    32. doc.Pages[0].Canvas.DrawString("PDF/UA was published as ISO Standard 14289-1 in August 2012" +
    33. " and is by far the first complete definition " +
    34. "of a set of requirements for universally accessible PDF documents.",
    35. font, brush, new Rectangle(40, 80, 450, 80), format);
    36. span1.EndMarkedContent(doc.Pages[0]);
    37. PdfStructureElement paragraph2 = article.AppendChildElement(PdfStandardStructTypes.Paragraph);
    38. paragraph2.BeginMarkedContent(doc.Pages[0]);
    39. doc.Pages[0].Canvas.DrawString("The PDF/UA has some definite requirements at its base that act as the essence of this standard.",
    40. font, brush, new Rectangle(40, 120, 450, 60), format);
    41. paragraph2.EndMarkedContent(doc.Pages[0]);
    42. PdfStructureElement figure1 = article.AppendChildElement(PdfStandardStructTypes.Figure);
    43. //Set Alternate text
    44. figure1.Alt = "replacement text1";
    45. figure1.BeginMarkedContent(doc.Pages[0], null);
    46. PdfImage image = PdfImage.FromFile(@"logo.jpg");
    47. doc.Pages[0].Canvas.DrawImage(image, new PointF(40, 200), new SizeF(100, 100));
    48. figure1.EndMarkedContent(doc.Pages[0]);
    49. PdfStructureElement figure2 = article.AppendChildElement(PdfStandardStructTypes.Figure);
    50. //Set Alternate text
    51. figure2.Alt = "replacement text2";
    52. figure2.BeginMarkedContent(doc.Pages[0], null);
    53. doc.Pages[0].Canvas.DrawRectangle(PdfPens.Black, new Rectangle(300, 200, 100, 100));
    54. figure2.EndMarkedContent(doc.Pages[0]);
    55. //保存文档
    56. doc.SaveToFile("CreatePDFUAFile_result.pdf");
    57. System.Diagnostics.Process.Start("CreatePDFUAFile_result.pdf");
    58. }
    59. }
    60. }

    VB.NET

    1. Imports Spire.Pdf
    2. Imports Spire.Pdf.Graphics
    3. Imports Spire.Pdf.Interchange.TaggedPdf
    4. Imports System.Drawing
    5. Namespace CreatePDFUAfile
    6. Class Program
    7. Private Shared Sub Main(args As String())
    8. '创建PdfDocument类的对象
    9. Dim doc As New PdfDocument()
    10. '添加一页
    11. doc.Pages.Add()
    12. '设置tab order
    13. doc.Pages(0).SetTabOrder(TabOrder.[Structure])
    14. '创建PdfTaggedContent类的对象
    15. Dim taggedContent As New PdfTaggedContent(doc)
    16. taggedContent.SetLanguage("en-US")
    17. taggedContent.SetTitle("test")
    18. '设置PDF/UA1验证
    19. taggedContent.SetPdfUA1Identification()
    20. '创建字体、画刷
    21. Dim font As New PdfTrueTypeFont(New Font("Times New Roman", 10), True)
    22. Dim brush As New PdfSolidBrush(Color.Black)
    23. '添加要素
    24. Dim article As PdfStructureElement = taggedContent.StructureTreeRoot.AppendChildElement(PdfStandardStructTypes.Document)
    25. Dim paragraph1 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Paragraph)
    26. Dim span1 As PdfStructureElement = paragraph1.AppendChildElement(PdfStandardStructTypes.Span)
    27. span1.BeginMarkedContent(doc.Pages(0))
    28. Dim format As New PdfStringFormat(PdfTextAlignment.Justify)
    29. 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)
    30. span1.EndMarkedContent(doc.Pages(0))
    31. Dim paragraph2 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Paragraph)
    32. paragraph2.BeginMarkedContent(doc.Pages(0))
    33. 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)
    34. paragraph2.EndMarkedContent(doc.Pages(0))
    35. Dim figure1 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Figure)
    36. 'Set Alternate text
    37. figure1.Alt = "replacement text1"
    38. figure1.BeginMarkedContent(doc.Pages(0), Nothing)
    39. Dim image As PdfImage = PdfImage.FromFile("logo.jpg")
    40. doc.Pages(0).Canvas.DrawImage(image, New PointF(40, 200), New SizeF(100, 100))
    41. figure1.EndMarkedContent(doc.Pages(0))
    42. Dim figure2 As PdfStructureElement = article.AppendChildElement(PdfStandardStructTypes.Figure)
    43. 'Set Alternate text
    44. figure2.Alt = "replacement text2"
    45. figure2.BeginMarkedContent(doc.Pages(0), Nothing)
    46. doc.Pages(0).Canvas.DrawRectangle(PdfPens.Black, New Rectangle(300, 200, 100, 100))
    47. figure2.EndMarkedContent(doc.Pages(0))
    48. '保存文档
    49. doc.SaveToFile("CreatePDFUAFile_result.pdf")
    50. System.Diagnostics.Process.Start("CreatePDFUAFile_result.pdf")
    51. End Sub
    52. End Class
    53. End Namespace

     

    参考资料:

    1. PDF/UA File Format

    —END—

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

  • 相关阅读:
    12.区块链系列之比特币NFT
    Python语言程序设计 习题2
    903三农问题概论真题10、11、1
    聚合电商API接口平台:让数据成为生产力!
    Qt扩展-KDDockWidgets 简介及配置
    MongoDB索引与查询优化
    降本增效两不误——云原生赋能航空业数字化转型
    LeetCode 1173.即时食物配送
    【微机接口】8254的控制字与编程方法
    Tensorflow 2.1 MNIST 图像分类
  • 原文地址:https://blog.csdn.net/Eiceblue/article/details/126498621