Консолидация CSS с помощью Gulp

У вас есть пара проблем. Если вы получаете сообщение The document has no pages, что означает, что в PDF не было добавлено содержание, что почти наверняка означает, что существует проблема с методом RenderControl и не имеет никакого отношения к iTextSharp. Другая проблема заключается в том, что вы пишете файл Response.OutputStream, а также выводите литеральный документ с помощью Response.Write(pdfDoc). Вам только нужно сделать первое, я не уверен, что произойдет с последним.

Сообщение The document has no pages также может означать, что iTextSharp не смог найти что-либо для создания контента. Таким образом, у вас может быть допустимый HTML, но iTextSharp просто не знает, что с ним делать. Возможно, это не так, но я просто должен был упомянуть об этом.

Я собираюсь разбить код на шаги, чтобы помочь отлаживать вещи. Первые два блока преобразуют элемент управления в HTML, а затем здравомыслие проверяет его, чтобы убедиться, что у нас что-то есть. Вы должны проверить содержимое buf, если у вас возникли проблемы.

Третий блок создает PDF-файл из MemoryStream, а затем выгружает его в массив байтов вместо того, чтобы напрямую писать в Response.OutputStream , Хотя нет ничего неправильного в написании файла Response.OutputStream, вы часто обнаружите, что вы глотаете ошибки, а в целом отладка намного сложнее. После того, как этот блок будет выполнен, вы должны проверить bytes, чтобы убедиться, что у него что-то есть.

Последний блок делает последний щелчок в браузере.

//Convert our control to HTML
string buf;
using (var sw = new StringWriter()) {
    using (var hw = new HtmlTextWriter(sw)) {
        Panel1.RenderControl(hw);
    }
    buf = sw.ToString();
}

//Sanity check
if (String.IsNullOrWhiteSpace(buf)) {
    throw new ApplicationException("No content found");
}

//Create our PDF and get a byte array
byte[] bytes;
using (var ms = new MemoryStream()) {
    using (var pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f)) {
        using (var writer = PdfWriter.GetInstance(pdfDoc, ms)) {
            pdfDoc.Open();
            using (var htmlparser = new HTMLWorker(pdfDoc)) {
                using (var sr = new StringReader(buf)) {
                    htmlparser.Parse(sr);
                }
            }
            pdfDoc.Close();
        }
    }
    bytes = ms.ToArray();
}


//Output the PDF
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=Quote.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.BinaryWrite(bytes);
Response.End();
0
задан Annette 5 March 2019 в 16:16
поделиться

1 ответ

Вы можете использовать модуль gulp, чтобы выяснить, какой CSS не используется

https://www.npmjs.com/package/gulp-purgecss

После того, как ваш CSS приведен в порядок, вы должны объединить все ваши файлы (объединить их для меньшего количества запросов) и минимизировать их (уменьшить количество пробелов и разрывов строк, что делает компьютер менее трудным для интерпретации). должен показать вам лучшие модули и как их реализовать.

0
ответ дан sjw 5 March 2019 в 16:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: