2013-03-14 54 views
0

我想使用iTextsharp从HTML创建PDF/A,但很难创建经过验证为PDF /的东西。这是我用来测试功能的代码。需要改变什么来获得我想要的?如何使用iTextSharp从HTML创建PDF/A文件

static void Main(string[] args) 
    { 
     //create stylesheet (used to change font from default Helvetica in order to embed font in PDF/A) 
     var styles = new StyleSheet(); 
     var fontPath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\verdana.ttf"; 
     FontFactory.Register(fontPath); 
     styles.LoadTagStyle("body", "face", "Verdana"); 


     var pdFdocument = new Document(PageSize.A4); 
     const string strPdFpath = @"MyPDF.pdf-PDFX1A2001"; 
     var sr = new StringReader("<html><head></head><body><h1>Dette er en HTML-fil</h1><p>Dette er litt tekst i html-fila</p><br /><p>Dette er enda ett avsnitt. iTextSharp ser ut til å fungere greit...</p></body></html>"); 

     var htmlParser = new HTMLWorker(pdFdocument, null, styles); 
     PdfWriter writer = PdfWriter.GetInstance(pdFdocument, new FileStream(strPdFpath, FileMode.OpenOrCreate)); 
     writer.PDFXConformance = PdfWriter.PDFX1A2001; 
     pdFdocument.Open(); 
     htmlParser.Parse(sr); 
     pdFdocument.Close(); 
    } 
+1

当然你的代码。你需要解释**你想要什么**,你得到的**与你想要的不同**和**你做了什么**。然后我们可以谈论更精细,更详细的变化。 – Shark 2013-03-14 12:50:58

+0

以纯文本格式;我想要一个有效的pdf /一个文件! PdfWriter提供了三种可能的PDFXConformance选项(PDFX1A2001,PDFX32002和PDFXNONE),而非PDF文件的正确验证。 – user2169781 2013-03-14 14:17:46

回答

3

PDFX1A2001需要1.3版PDF或更低,但单独设置PDFXConformance属性不这样做,你必须手动完成:

writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_3); 

此外,你还需要调用CreateXmpMetadata()到“应用“元数据。

writer.CreateXmpMetadata(); 

Mostpeople似乎只是关闭文档前做,但我不知道这是否是必需的。

相关问题