Как я могу преобразовать HTML в строку для генерации PDF в JavaScript? - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу преобразовать свой элемент HTML DOM в строку, чтобы я мог использовать его для генерации PDF.

Я попробовал следующий код в JavaScript, но он возвращает элемент HTML.

    function getHtmlString() {
        var element=document.getElementById("pdfdiv"); 
        var str = element.innerHTML;
        console.log(str);
        return str;
    };
<div id="pdfdiv">
    <html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <!--<h3  style="margin-left:150px;"><strong> Patient Details</strong></h3>-->

        <table width="100%" style="padding:0px 105px">
            <thead>
                <tr>
                    <th>
                    </th>
                </tr>
                <tr>
                    <th>
                    </th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>
                        <table style="float:left" width="75%">
                            <thead>
                                <tr>
                                    <th></th>
                                    <th></th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>
                                       "Hi" @order.Id
                                    </td>
                                    <td>
                                        <h2><strong> Patient Order</strong></h2>
                                    </td>

                                </tr>
                            </tbody>
                        </table>
                    </td>
                </tr>
            </tbody>
        </table>
    </body>
</html>
</div>

Возвращает следующее:

<!--!-->
<html><!--!-->
<!--!-->
    <meta charset="utf-8">
    <title></title>

<body><!--!-->


    <table width="100%" style="padding:0px 105px"><!--!-->
        <!--!--><thead>
            <tr>
                <th>
                </th>
            </tr>
            <tr>
                <th>
                </th>
            </tr>
        </thead>
        <tbody><!--!-->
            <tr><!--!-->
                <td><!--!-->
                    <table style="float:left" width="75%"><!--!-->
                        <!--!--><thead>
                            <tr>
                                <th></th>
                                <th></th>
                            </tr>
                        </thead>
                        <tbody><!--!-->
                            <tr><!--!-->
                                <td><!--!-->
                                   "Hi" 4<!--!-->
                                </td><!--!-->
                                <!--!--><td>
                                    <h2><strong> Patient Order</strong></h2>
                                </td>

                            </tr><!--!-->
                        </tbody><!--!-->
                    </table><!--!-->
                </td><!--!-->
            </tr><!--!-->
        </tbody><!--!-->
    </table><!--!-->
</body><!--!-->

Из-за этого я не могу преобразовать в PDF с помощью передавая эту строку PdfDocument document = htmlConverter.Convert(htmlstring);. Выдает исключение Error: Syncfusion.Pdf.PdfException: Html conversion failed. Как я могу преобразовать элемент HTML DOM в строку?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Сообщаемое исключение в конвертере HTML может произойти из-за преобразования строки HTML в метод конвертации URL. Метод convert с одним аргументом предназначен для преобразования URL в PDF. Пожалуйста, обратитесь к приведенному ниже фрагменту кода для преобразования HTML строки в PDF. Пожалуйста, попробуйте преобразование с приведенным ниже фрагментом кода и сообщите нам результат.

//Convert HTML string to PDF  
PdfDocument document = htmlConverter.Convert(htmlText, baseUrl);  

Для получения дополнительной информации см. Ссылки ниже,

UG : https://help.syncfusion.com/file-formats/pdf/convert-html-to-pdf/webkit#html -string-to-pdf

KB : https://www.syncfusion.com/kb/9890/how-to-convert-html-string-to-pdf-using-c-and-net

https://www.syncfusion.com/kb/8174/how-to-preserve-resources-during-html-string-to-pdf-conversion

Примечание : я работаю для Syncfusion.

0 голосов
/ 23 апреля 2020

При настройке JavaScript ваш код на самом деле равен , возвращая строку.

Видно здесь:

var element=document.getElementById("pdfdiv"); 
var str = element.innerHTML;

console.log(str)
console.log("The variable type is...")
console.log(typeof(str))
<div id="pdfdiv">Make me into a string, please!</div>

Скорее всего, решение находится в используемой вами библиотеке: Syncfusion . Согласно документации, функция Convert() принимает URL-адрес в качестве параметра, а не строку HTML. Именно это приводит к тому, что программа выдает ошибку.

Я бы порекомендовал перечислить все библиотеки, которые вы используете в своем коде, для будущих вопросов, задаваемых в StackOverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...