Воссоздание нового PDF по-прежнему содержит старое изображение с использованием ASP.NET, C # и Winnovative.WnvHtmlConvert.PdfConverter - PullRequest
2 голосов
/ 20 января 2011

Если я создаю PDF (pdf1) с изображением (image1), pdf1 показывает image1, как и ожидалось.

Если я затем заменю image1 на image2 на сайте и создаю новый pdf2, pdf2 показывает старое изображение1, и это моя проблема (кеширование?).

Для получения дополнительной информации:

Если я остановлю свою программу в VS и закрою все свои серверы разработки (локальный ISS?), Снова запустите программу и создайте новый pdf (pdf3), pdf3 показывает image2 (последнее изображение, которое я сделал), которое правильный.

Итак, я полагаю, я не заканчиваю некоторые вещи или кеш слишком много?


Как создать PDF

    public void CreateSingleFrontpage(string url)
    {
        var pdfConverter = new PdfConverter(0);
        PdfConverter.LayoutHtmlTimeoutSec = 500;
        pdfConverter.NavigationTimeout = 5000;

        pdfConverter.LicenseKey = "****************************";

        pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
        pdfConverter.PdfDocumentOptions.PdfCompressionLevel =
PdfCompressionLevel.Normal;
        pdfConverter.PdfDocumentOptions.PdfPageOrientation =
PDFPageOrientation.Portrait;
        pdfConverter.PdfDocumentOptions.ShowHeader = false;
        pdfConverter.PdfDocumentOptions.ShowFooter = false;
        pdfConverter.PdfDocumentOptions.LeftMargin = 80;
        pdfConverter.PdfDocumentOptions.RightMargin = 40;
        byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl(url);

        // send the PDF document as a response to the browser for download
        System.Web.HttpResponse response =
 System.Web.HttpContext.Current.Response;

        response.Clear();
        // response.CacheControl = "no-cache";
        response.AddHeader("Content-Type", "binary/octet-stream");
        response.AddHeader("Content-Disposition", "attachment; 
filename=PDF_Temp.pdf; size=" + pdfBytes.Length);
        response.Flush();
        response.BinaryWrite(pdfBytes);
        response.Flush();
        response.End();
    }


ProcessRequest

public void ProcessRequest(HttpContext context)
    {
        int skemaId = int.Parse((context.Request.QueryString["SkemaId"]));
        int witchImage = int.Parse(context.Request.QueryString["witchImage"]);

        byte[] imageData = new BLL.Handlers.PDFForsideHandlers().GetImage(
witchImage, skemaId);
        if (imageData != null)
        {
            context.Response.ContentType = "image/jpg";
            context.Response.BinaryWrite(imageData);
//                context.Response.Flush();
//                context.Response.Clear();
//                context.Response.Close();
//                context.Response.End();
        }
    }


управление asp.net

Image image = new Image();
image.ImageUrl = url;
image.DataBind();
PlaceHolder1.Controls.Add(image);


Я трачу целый день на это сейчас, любые комментарии будут очень ценными.

Ответы [ 2 ]

2 голосов
/ 01 марта 2014

Winnovative извлекает изображение из кэша в папке C: \ Windows \ Temp \ Temporary Internet Files \ Content.IE5 для IE9. Это «окна», т. Е. Каталог кэша отличается в зависимости от вашей версии IE.

1 голос
/ 26 января 2011

Оказывается, это работало на другом компьютере.Так что, должно быть, мои настройки FF и Chrome или функция, которую браузер должен обрабатывать PDF, не годятся.Если кому-то еще все равно ..

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