【问题标题】:Java ByteArrayInputStream in C# using iTextSharp XMLWorker在 C# 中使用 iTextSharp XMLWorker 的 Java ByteArrayInputStream
【发布时间】:2017-03-02 04:10:46
【问题描述】:

我正在使用 ITextSharp,我想在我的 PDF 中包含 CSS。以下是我当前的代码:

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

但问题是我缺少ByteArrayInputStream 的参考。即使System.IO 也无法修复错误。还有其他解决方法吗?

非常感谢!

【问题讨论】:

  • 该代码看起来像 Java 版本的 iText。你确定你需要 C# 方面的帮助吗?如果是这样,您可以发布您的 C# 代码吗?
  • 如果您尝试将 java 示例移植到 .Net,ByteArrayInputStreamByteArrayOutputStream 通常会变为 MemoryStream
  • @MikeHixson 我需要将其转换为 C# 的帮助,但我是 IText 的新手。我当前的代码使用 parseXHtml 但没有 CSS 参数,但我意识到我 需要 在我的 PDF 中包含 CSS。上面的代码是我在网上看到的唯一一个使用parseXHtml结合CSS和HTML的sn-p。
  • @mkl 嗨,你能帮我把上面的ByteArrayInputStream 代码转换成C#,包括内存流吗?

标签: c# css itext xmlworker bytearrayinputstream


【解决方案1】:

一个简单、有效的示例让您入门:

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());
        }
    }
}

【讨论】:

    猜你喜欢
    • 2018-05-29
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多