PdfAWriter不转换无序列表和表

时间:2014-10-20 16:48:54

标签: itextsharp pdfa

我在使用PdfAWriter类将HTML转换为PDF时遇到问题,HTML会正常转换,直到找到表或列表为止。

如果我使用PdfWriter类它可以正常工作,但我需要一个PDF / A版本。

以下是我用来进行转换的代码:

public static byte[] ConverterParaPdf(string html)
{
    MemoryStream ms = new MemoryStream();
    Document document = new iTextSharp.text.Document(PageSize.A4);
    PdfAWriter writer = PdfAWriter.GetInstance(document, ms, PdfAConformanceLevel.PDF_A_1B);
    //PdfWriter writer = PdfWriter.GetInstance(document, ms);
    writer.PdfVersion = PdfWriter.VERSION_1_7;
    writer.SetTagged();
    writer.ViewerPreferences = PdfWriter.DisplayDocTitle;
    writer.CloseStream = false;
    writer.InitialLeading = 12.5f;
    writer.CompressionLevel = PdfStream.BEST_COMPRESSION;
    //writer.SetFullCompression(); //Causa erro no padrão PDF_A_1*

    try
    {
        document.AddLanguage("pt-BR");
        document.AddCreationDate();
        writer.CreateXmpMetadata();
        document.Open();
        ICC_Profile icc = ICC_Profile.GetInstance((byte[])Properties.Mensagens.ResourceManager.GetObject("icc_profile"));
        writer.SetOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc);

        MemoryStream cssStream = new MemoryStream(Encoding.UTF8.GetBytes("html, html * { font-family: Arial, Arial, Arial!important; color: black!important; }"));
        MemoryStream htmlStream = new MemoryStream(Encoding.UTF8.GetBytes(html));
        XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, htmlStream, cssStream);
        document.Close();
        writer.Close();
    }
    catch (Exception ex)
    {
        throw ex;
    }
    byte[] byteArray = ms.ToArray();
    ms.Close();

    return byteArray;
}



<!DOCTYPE html>
<html>
    <head>
    <title></title>
    <style type="text/css">
        .container {
            font-family: Arial;
            font-size: 15px;
            background-color: white;
            margin: 20px;
        }

        .imagem {
            padding-bottom: 15px;
        }

        .titulo {
            font-size: 23px;
            font-weight: bold;
        }

        .barra-tipo-documento {
            background-color: #3B454E;
            width: 4px;
            height: 40px;
            float: left;
        }

        .tipo-documento {
            padding-left: 16px;
            padding-top: 13px;
            float: left;
            font-size: 17px;
            color: #3B454E;
            font-weight: bold;
        }
    </style>
    </head>

    <body>
        <div class="container">
            <table>
                <tr>
                     <td class="imagem">
                            <img src="http://localhost:8090/Resources/img/logomarca-documentos.wmf" height="45" alt="TCE-ES"/>
                     </td>
                </tr>
            <tr>
                <td>
                    <div class="barra-tipo-documento">&nbsp;</div>
                    <div class="tipo-documento">Comunicação Interna</div>
                </td>
            </tr>
            </table>
            <br />
            <br />

            <div><strong>N.º: </strong>00747/2014-7</div>
            <div><strong>Data: </strong>22/10/2014 18:05:10</div>
            <div><strong>Assunto: </strong>teste</div>
            <div><strong>De: </strong>NCD</div>           
            <div><strong>Para: </strong>NCD</div>
            <div></div>
            <div><strong>Anexos: </strong>12252/2014-9, 12253/2014-3</div>

            <br />

            <div><p>&nbsp;gerqg r</p>

<p>g&nbsp;</p>

<ol>
    <li>eqrg geqr</li>
    <li>g er</li>
    <li>g</li>
    <li>qe r</li>
    <li>geqr</li>
</ol>

<p>g eqrgqergqerg</p>

<p>&nbsp;geqr geqrg</p>
</div>
        </div>
    </body>
</html>

图像: http://postimg.org/image/9utepiza1/

我正在使用itextsharp / itextsharp.pdfa / itextsharp.xmlworker / itextsharp.xtra版本5.5.3.0。

如果还有其他方法,请告诉我,我甚至尝试使用过时的HtmlWorker

0 个答案:

没有答案