Невозможно применить CSS к строке html.

Я пытаюсь интегрировать evoPDF в мое приложение asp.net. Я отправляю часть html из моего html файла onclick через ajax. Все работает до этой части. Теперь, когда я вызываю эти методы из EvoPdf API.

 1. GetPdfBytesFromHtmlStream(Stream, Encoding,urlbase)

 2. SavePdfFromHtmlStringToFile(String html,string filename,urlbase)

Мой html-фрагмент, который я отправляю, похож на

 <ol class = "lol">
         <li> HEY </li>
         <li> Now </li>

  </ol>

Css, который находится во внешнем файле, похож на

 .lol {

      background-color: red;

  }

Согласно документации, третий аргумент должен быть полным URL-адресом исходного Html, в котором вы извлекли фрагмент html. Я загрузил свое приложение в Интернете, так как попытка localhost/3232 не работала. Но я не вижу, чтобы какой-либо CSS применялся в сгенерированном Html. В документации также рекомендуется добавить

       <HEAD> <BASE HREF="full url to your html file"> </HEAD>

И используйте этот метод.

        pdfConverter.GetPdfBytesFromHtmlString(String html);

Ничего, что я пробовал выше, применяет CSS. Любые мысли....

+6
06 авг. '13 в 14:00
источник поделиться
2 ответа

Хотя возможно иметь html во внешнем файле с evoPDF, я не рекомендую его. Вместо этого просто вставьте стили в начало документа. Когда мы создавали PDF-генератор для Careers 2.0, я помню, что URL-адреса должны были быть живыми URL-адресами за веб-сервером, а не только относительной ссылкой в ​​той же структуре каталогов. Существует также тайм-аут в evo pdf, который может привести к потере изображений, если загрузка занимает слишком много времени, что также лучше работает со встроенным всем.

Я также рекомендую передать его полностью верный html, а не только фрагменты, которые вам нужны для создания представления. За кулисами (по крайней мере, в нашей версии evoPDF) он просто поднимает экземпляр браузера и снимает снимок экрана. Они немного отличаются друг от друга в зависимости от типа doctype.

+3
06 авг. '13 в 14:15
источник

Я столкнулся с этой проблемой с EvoPdf. Исправить для меня было ссылаться на baseURL из web.config. Я пытался использовать HttpContext.Current.Request.Url.AbsoluteUri; который работал в двух средах, но не был протестирован на другом сервере.

  <appSettings>
    <add key="baseURL" value="http://your-domain.com/" />
  </appSettings>

Итак, вы настроили его конкретно, и CSS корректно отображается после изменения. Работает с https тоже. Вы можете жестко запрограммировать его для тестирования и не использовать ConfigurationManager.

        TextWriter outTextWriter = new StringWriter();

        Server.Execute("Page1.aspx", outTextWriter);
        Server.Execute("Page2.html", outTextWriter);

        string htmlStringToConvert = outTextWriter.ToString();
        outTextWriter.Close();

        // Use the current page URL as base URL
        string baseUrl = ConfigurationManager.AppSettings["baseURL"].ToString(); //HttpContext.Current.Request.Url.AbsoluteUri;

        // Convert the page HTML string to a PDF document in a memory buffer
        byte[] outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlStringToConvert, baseUrl);
0
16 июн. '17 в 0:15
источник

Посмотрите другие вопросы по меткам или Задайте вопрос