2017-03-02 58 views
-2

我正在使用ITextSharp和我想要包括CSS到我的PDF。下面是我當前的代碼:C#中使用iTextSharp的Java ByteArrayInputStream XMLWorker

ByteArrayInputStream bis = new ByteArrayInputStream(htmlSource.toString().getBytes()); 
ByteArrayInputStream cis = new ByteArrayInputStream(cssSource.toString().getBytes()); 
XMLWorkerHelper.getInstance().parseXHtml(writer, document, bis, cis); 

但問題是,我缺乏ByteArrayInputStream參考。即使System.IO也無法修復該錯誤。還有其他解決方法嗎?

非常感謝!

+1

該代碼看起來像的iText的Java版本。你確定你需要C#的幫助嗎?如果是這樣,你可以發佈你的C#代碼嗎? –

+0

如果您嘗試將Java樣本移植到.Net,則「ByteArrayInputStream」和「ByteArrayOutputStream」通常變爲「MemoryStream」。 – mkl

+0

@MikeHixson我需要幫助將其轉換爲** C#**,但我是IText的新手。我目前的代碼使用'parseXHtml',但沒有CSS參數,但我意識到我需要**在我的PDF中包含CSS。上面的代碼是我在線看到的唯一一個使用'parseXHtml'合併CSS和HTML的片段。 – JPaulPunzalan

回答

0

簡單,工作示例,讓您開始:

var html = "<h1>H1</h1>"; 
var css = "h1 {font-size: 2em;}"; 

using (var htmlStream = new MemoryStream(Encoding.UTF8.GetBytes(html))) 
{ 
    using (var cssStream = new MemoryStream(Encoding.UTF8.GetBytes(css))) 
    { 
     using (var memoryStream = new MemoryStream()) 
     { 
      using (var document = new Document()) 
      { 
       PdfWriter writer = PdfWriter.GetInstance(
        document, memoryStream 
       ); 
       document.Open(); 
       XMLWorkerHelper.GetInstance().ParseXHtml(
        writer, document, htmlStream, cssStream 
       ); 
      } 
      File.WriteAllBytes(OUTPUT_FILE, memoryStream.ToArray()); 
     } 
    } 
}