PDF/A是传统PDF格式规范的一个子集,专门用于需要长期保存的PDF文档,PDF/A规范的宗旨是定义了一个独立的、与设备无关的PDF文档。并且使用PDF/A规范创建的PDF文档在将来相当长点的时间范围内也是可读、可显示和存取的,
DynamicPDF支持下面的PDF/A级别:
- PDF/A-1a
- PDF/A-1b
- PDF/A-2a
- PDF/A-2b
- PDF/A-2u
- PDF/A-3a
- PDF/A-3b
- PDF/A-3u
下面是创建PDF/A规范时必须要使用到的和不能使用到的规则和规范:
- 所有字体必须被嵌入(核心字体不能使用)
- 所有颜色必须与设备无关
- 必须包含XMP元数据
- 不能使用加密
- 可以使用Text, Combo Box, List Box and Signature Form Fields
- 使用OpenType font with postscript outline的表单字段不兼容PDF/A
- 图片不能使用LZW压缩
- 没有嵌入的文件可以被添加
- 不能引用额外的内容
- 不能使用多媒体内容
- 不能使用JavaScript
下面的代码阐释了如何使用
DynamicPDF Generator For .NET来创建兼容PDF/A规范的PDF文档:
Document document = new Document();
document.Title = "PDF/A1 Document";
document.Subject = "Document's Subject";
document.Tag = new TagOptions();
document.Author = "MyAuthor";
XmpMetadata xmp = new XmpMetadata();
// User has to add PDF/A schema with the conformance level.
PdfASchema pdfaschema = new PdfASchema(PdfAStandard.PDF_A_1a_2005);
xmp.AddSchema(pdfaschema);
DublinCoreSchema dc = xmp.DublinCore;
dc.Title.DefaultText = document.Title;
dc.Description.DefaultText = document.Subject;
dc.Creators.Add(document.Author);
dc.Title.AddLang("en-us", "PDF/A1 Document");
document.XmpMetadata = xmp;
// Needs iccprofile file to be embedded.
IccProfile iccProfile = new IccProfile(@"C:\Temp\IccProfile\sRGB_IEC61966-2-1_noBPC.icc");
OutputIntent outputIntents = new OutputIntent("", "IEC 61966-2.1 Default RGB colour space - sRGB 1 ", "http://www.color.org",
"sRGB IEC61966-2.1 1", iccProfile);
outputIntents.Version = OutputIntentVersion.PDF_A;
document.OutputIntents.Add(outputIntents);
OpenTypeFont openTypeFont = new OpenTypeFont("times.ttf");
Label label = new Label(text, 0, 0, 504, 100, openTypeFont, 18, TextAlign.Center, RgbColor.BlueViolet);
Page page = new Page(PageSize.Letter, PageOrientation.Portrait, 54.0f);
page.Elements.Add(label);
document.Pages.Add(page);
document.Draw(@"C:/MyDocument.pdf");