iTextSharp能否将PDF文档转换为PDF/A

iTextSharp能否将PDF文档转换为PDF/A,pdf,itextsharp,pdfa,Pdf,Itextsharp,Pdfa,我无法在FAQ中找到API中是否存在此功能,尽管在一本书中提到它可能是可用的。有人有过实现此功能的经验吗?于(2007年6月)Paulo Soares提供了支持PDF/A的代码。下面是C代码(他还有一个Java示例): 上面的链接包括ICC_概要文件的下载。以下是我解析HTML文件并从中创建PDF/a存档文档的方法,还包括使用样式表嵌入字体(为了避免错误:“必须嵌入所有字体。这不是:Helvetica”) 希望这对某人有帮助 using System; using System.Collecti

我无法在FAQ中找到API中是否存在此功能,尽管在一本书中提到它可能是可用的。有人有过实现此功能的经验吗?

于(2007年6月)Paulo Soares提供了支持PDF/A的代码。下面是C代码(他还有一个Java示例):


上面的链接包括ICC_概要文件的下载。

以下是我解析HTML文件并从中创建PDF/a存档文档的方法,还包括使用样式表嵌入字体(为了避免错误:“必须嵌入所有字体。这不是:Helvetica”)

希望这对某人有帮助

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using iTextSharp.text.pdf;
using iTextSharp.text;
using System.IO;
using iTextSharp.text.html.simpleparser;

namespace SaveAsPDF
{
    class HtmlPdfConverter
    {
        public void RendererWebForm2PDFArchive(string fileName)
        {
            Console.WriteLine("Parsing HTML " + fileName);
            Document document = new Document(PageSize.A4);

            try
            {
                // we create a writer that listens to the document and directs a XML-stream to a file
                PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(fileName + ".pdf", FileMode.Create));

                //set document as arhive
                writer.PDFXConformance = PdfWriter.PDFA1A;
                document.Open();

                //apply stylesheet to change font (and embedd it)
                StyleSheet styles = new StyleSheet();
                FontFactory.Register("c:\\windows\\fonts\\verdana.ttf");
                styles.LoadTagStyle("body", "face", "Verdana");

                //prepare html
                StreamReader sr = new StreamReader(fileName, Encoding.Default);
                string html = sr.ReadToEnd();                                
                html = RemoveTag(html, "<title>", "</title>");                

                //convert string to stream
                byte[] byteArray = Encoding.UTF8.GetBytes(html);
                MemoryStream ms = new MemoryStream(byteArray);

                //parse html
                HTMLWorker htmlWorker = new HTMLWorker(document);
                System.Collections.Generic.List<IElement> elements;

                elements = HTMLWorker.ParseToList(new StreamReader(ms), styles);
                foreach (IElement item in elements)
                {
                    document.Add(item);
                }

                writer.CreateXmpMetadata();
                document.Close();
                Console.WriteLine("Done");
            }
            catch (Exception e)
            {
                Console.Error.WriteLine(e.Message);
                Console.Error.WriteLine(e.StackTrace);
            }
        }**strong text**
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用iTextSharp.text.pdf;
使用iTextSharp.text;
使用System.IO;
使用iTextSharp.text.html.simpleparser;
名称空间SaveAsPDF
{
类HtmlPDF转换器
{
public void renderWebForm2PDFarchive(字符串文件名)
{
WriteLine(“解析HTML”+文件名);
文件=新文件(页面大小为A4);
尝试
{
//我们创建一个编写器,它侦听文档并将XML流定向到文件
PdfWriter writer=PdfWriter.GetInstance(文档,新文件流(fileName+“.pdf”,FileMode.Create));
//将文档设置为配置单元
writer.PDFXConformance=PdfWriter.PDFA1A;
document.Open();
//应用样式表更改字体(并嵌入)
样式表样式=新样式表();
FontFactory.Register(“c:\\windows\\fonts\\verdana.ttf”);
样式。LoadTagStyle(“身体”、“面部”、“Verdana”);
//准备html
StreamReader sr=新的StreamReader(文件名,Encoding.Default);
字符串html=sr.ReadToEnd();
html=RemoveTag(html,“,”);
//将字符串转换为流
byte[]byteArray=Encoding.UTF8.GetBytes(html);
MemoryStream ms=新的MemoryStream(byteArray);
//解析html
HTMLWorker HTMLWorker=新HTMLWorker(文档);
System.Collections.Generic.List元素;
elements=HTMLWorker.parsetList(新的StreamReader(ms),样式);
foreach(元素中的元素项)
{
文件。添加(项目);
}
writer.CreateXmpMetadata();
document.Close();
控制台。写入线(“完成”);
}
捕获(例外e)
{
Console.Error.WriteLine(e.Message);
Console.Error.WriteLine(如StackTrace);
}
}**强文本**

您可以在此处下载配置文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using iTextSharp.text.pdf;
using iTextSharp.text;
using System.IO;
using iTextSharp.text.html.simpleparser;

namespace SaveAsPDF
{
    class HtmlPdfConverter
    {
        public void RendererWebForm2PDFArchive(string fileName)
        {
            Console.WriteLine("Parsing HTML " + fileName);
            Document document = new Document(PageSize.A4);

            try
            {
                // we create a writer that listens to the document and directs a XML-stream to a file
                PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(fileName + ".pdf", FileMode.Create));

                //set document as arhive
                writer.PDFXConformance = PdfWriter.PDFA1A;
                document.Open();

                //apply stylesheet to change font (and embedd it)
                StyleSheet styles = new StyleSheet();
                FontFactory.Register("c:\\windows\\fonts\\verdana.ttf");
                styles.LoadTagStyle("body", "face", "Verdana");

                //prepare html
                StreamReader sr = new StreamReader(fileName, Encoding.Default);
                string html = sr.ReadToEnd();                                
                html = RemoveTag(html, "<title>", "</title>");                

                //convert string to stream
                byte[] byteArray = Encoding.UTF8.GetBytes(html);
                MemoryStream ms = new MemoryStream(byteArray);

                //parse html
                HTMLWorker htmlWorker = new HTMLWorker(document);
                System.Collections.Generic.List<IElement> elements;

                elements = HTMLWorker.ParseToList(new StreamReader(ms), styles);
                foreach (IElement item in elements)
                {
                    document.Add(item);
                }

                writer.CreateXmpMetadata();
                document.Close();
                Console.WriteLine("Done");
            }
            catch (Exception e)
            {
                Console.Error.WriteLine(e.Message);
                Console.Error.WriteLine(e.StackTrace);
            }
        }**strong text**