itextsharp html to pdf with different oriontation

时间:2016-12-09 07:25:03

标签: c# itext

我需要使用少量html页面创建单个pdf。实际上HTML有表格。每个HTML(表)都有不同的列数,因此它必须导出具有不同的oriontations的pdf。

例如:

  • htmlPg1 - > 4栏
  • htmlPg2 - > 15列

根据上面的场景,需要出现第一个带有纵向模式的html页面和带有横向的第二个html页面。

在下面的“代码块02” lst 是一个包含2个属性的列表。 (请参阅'Code Block 01') 如果 lst Oriantation指定为0,则将其视为横向和其他肖像。

代码块01

public class PdfExportDoc
{
    public int Oriantation { get; set; }
    public string Html { get; set; }
}

除方向外,所有工作正常。

代码块02

using (var ms = new MemoryStream())
        {
            using (var doc = new Document())
            {
                using (var writer = PdfWriter.GetInstance(doc, ms))
                {
                    doc.Open();                    

                    foreach (var ele in lst)
                    {
                        using (var srHtml = new StringReader(ele.Html))
                        {
                            if (ele.Oriantation == 0)
                            {
                                doc.SetPageSize(PageSize.A4.Rotate());
                            }
                            else
                            {
                                doc.SetPageSize(PageSize.A4);
                            }
                            XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml);
                            doc.NewPage();                                
                        }
                    }
                    doc.Close();
                }
            }
            bytes = ms.ToArray();
        }

htmlPg1数据拖动2页,htmlPg2只有一个。这就是数据的格式。

Image 01 (Actually Data comes like this. But this is wrong)

但实际上我需要这样的pdf。

enter image description here

请告诉我这样做的方向。

1 个答案:

答案 0 :(得分:0)

这解决了我的问题。 我明白布鲁诺。您已在删除的答案中说过,如果新页面为空白,则不会添加新页面。所以我在创建paraseXHtml之前和之后都添加了doc.NewPage。多亏了你以前的指示。

function checkMojang() {
    var mojangStatus = mojang.status();
    mojangStatus.then(function (message) {
        var response = JSON.parse(message);

        for (i = 0; i < response.length; i++) { // iterate over response array
            var item = response[i];             // get item from array
            var key = Object.keys(item)[0];     // get the key of the item
            var value = item[key];              // get the value of the item

            if (value === 'yellow' || value === 'red') {
                // do something, like adding it to a list
            }
        }
    });
}