2013-03-14 126 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似乎只是關閉文檔前做,但我不知道這是否是必需的。