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

打印 上一主题 下一主题

主题 909|帖子 909|积分 2727

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
复制代码

 
参考资料: 
—END—
 
相关阅读推荐C# 创建标签PDF文件
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表