דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. wkhtmltopdf: שגיאת "שרת לא נמצא"

wkhtmltopdf: שגיאת "שרת לא נמצא"

מתוזמן נעוץ נעול הועבר ארכיון code613m
5 פוסטים 2 כותבים 330 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A מנותק
    A מנותק
    avr416
    כתב ב נערך לאחרונה על ידי
    #1

    טוב, אז אני כבר מיואש..
    אני יורה לכל הכיוונים ומנסה להשתמש בכל מיני אפשרויות כדי להמיר מHTML ל PDF ובשום צורה אני לא מצליח..
    אני כבר יומיים על הסיפור הזה.. ואני מתחיל להתייאש 😢 😢
    ניסיתי שוב עם wkhtml והפעם בעטיפה אחרת :lol: - ע"י הספריה הזאת שהוספתי אותה דרך NuGet, והקוד הוא כזה:

    string fileName = "RecieptNo" + donat.Id + "Date" + DateTime.Now + ".pdf";
                string url = Url.Action("CreateRecieptInHtml", new { id = id });
    
                MemoryStream memory = new MemoryStream();
                PdfDocument document = new PdfDocument() { Url = url };
                PdfOutput output = new PdfOutput() { OutputStream = memory };
    
                PdfConvert.ConvertHtmlToPdf(document, output);
                memory.Position = 0;
    
                return File(memory, "application/pdf", Server.UrlEncode(fileName));
    

    ואני מקבל את השגיאה הזאת: "Exit with code 1 due to network error: HostNotFoundError".
    וביתר הרחבה:

    Html to PDF conversion of '/ManageOrganization/CreateRecieptInHtml/40' failed. Wkhtmltopdf output: 
    Loading pages (1/6)
    [>                                                           ] 0%
    [======>                                                     ] 10%
    Error: Failed loading page http:///ManageOrganization/CreateRecieptInHtml/40 (sometimes it will work just to ignore this error with --load-error-handling ignore)
    Exit with code 1 due to network error: HostNotFoundError
    

    את אותה שגיאה קיבלתי גם כשהשתמשתי בספריה הקודמת שהזכרתי : , אבל חשבתי שאולי הבעיה שזה לא רץ על localhost.. אח"כ חשבתי שאולי הבעיה היא שהוא לא מצליח לטעון את הHTML מהשרת כי אין לו את ההרשאה הדרושה - אז הוספתי [AllowAnonimous] מעל הפונקציה הזאת, אך דבר לא הועיל...

    אשמח לעזרה!!
    תודה רבה רבה!
    אברהם

    פורסם במקור בפורום CODE613 ב16/03/2016 10:33 (+02:00)

    תגובה 1 תגובה אחרונה
    0
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      אתה פונה בשרת לurl של עצמך בשביל לקבל את הhtml? גם אחרי שנפתור את בעייתך כדאי לפשט את המסורבלות הזו.
      אבל השגיאה אצלך ברורה מאוד: שמת בריקפוינט לבדוק מה הurl? הוא יחסי, ונראה ככה: "/CreateRecieptInHtml?id=50". אז בשביל הדפדפן זה כתובת יחסית לדף בו הוא נמצא משא"כ בצד השרת. כתובת מוחלטת אתה יכול להשיג ככה http://stackoverflow.com/a/3066943/1271037.

      אבל כל הסיפור הזה לתשאל את השרת כדי לבל את הhtml מרונדר נראה לי סיבוך. חיפשתי בגוגל איך לגשת לפלט של razor מצד השרת (mvc action get output string) ומצאתי http://stackoverflow.com/a/2759898/1271037. קח את התוצאה השניה, ואז עם הסטרינג (שזה למעשה הhtml שאחרי רנדור הrazor) שים לממיר במקום url ככה:

      PdfDocument document = new PdfDocument() { Html = MyRenderedString };
      

      פורסם במקור בפורום CODE613 ב16/03/2016 13:34 (+02:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      1
      • dovidD מחובר
        dovidD מחובר
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #3

        הרגע אני רואה שבאשכול אחר ידעת מצויין להמיר לסטרינג, רק כנראה לא הצליח לך/לא ידעת לתת לwkhtmltopdf סטרינג במקום url.

        פורסם במקור בפורום CODE613 ב16/03/2016 13:43 (+02:00)

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        1
        • A מנותק
          A מנותק
          avr416
          כתב ב נערך לאחרונה על ידי
          #4

          @דוד ל.ט.

          אבל כל הסיפור הזה לתשאל את השרת כדי לבל את הhtml מרונדר נראה לי סיבוך. חיפשתי בגוגל איך לגשת לפלט של razor מצד השרת (mvc action get output string) ומצאתי http://stackoverflow.com/a/2759898/1271037. קח את התוצאה השניה, ואז עם הסטרינג (שזה למעשה הhtml שאחרי רנדור הrazor) שים לממיר במקום url ככה:

          PdfDocument document = new PdfDocument() { Html = MyRenderedString };
          

          מעולה!! זה אכן עובד עכשיו.
          בהתחלה באמת ניסיתי עם סטרינג וזה לא עבד.. אז חשבתי שאולי אם הוא יגש בצורה עצמאית לשרת זה יעבוד יותר טוב, וניסיתי גם את הדרך הזאת שגם היא לא עבדה...
          גם לאחר ששיניתי זה זרק שגיאה, אבל אז הוספתי את השורה הזאת שמורה לו להתעלם משגיאות: " --load-media-error-handling ignore " של כשל בטעינה של ספריות חיצוניות וזה אכן עובד..
          העניין הוא שלא הצלחתי למצוא איך לשלוח לו את הפרמטר הזה, אז חזרתי לספריה הראשונה שניסיתי () וזה אכן עבד.
          לסיכומו של ענין הנה הקוד המלא - אם זה יעזור למישהו:

          public ActionResult CreateReciept(int? id)
                  {
                      if (id == null)
                      {
                          return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                      }
                      var donat = loadDonationsVM().Where(x => x.Id == id).FirstOrDefault();
                      if (donat == null) { return HttpNotFound(); }            
          
                      string fileName = "RecieptNo" + donat.Id + ".pdf";
                      string html = AVRHelperMethod.RenderViewToString(ControllerContext,
                          "~/Views/ManageOrganization/CreateRecieptInHtml.cshtml",
                          donat, true);
          
                      MemoryStream memory = new MemoryStream();
                      var htmlToPDF = new HtmlToPdfConverter();
                      var pdfBytes = htmlToPDF.GeneratePdf(html);
                      htmlToPDF.CustomWkHtmlArgs = " --load-media-error-handling ignore ";
                      htmlToPDF.GeneratePdf(html, null, memory);
                      memory.Position = 0;
                      return File(memory, "application/pdf", Server.UrlEncode(fileName));
                  }
          

          תודה רבה!

          פורסם במקור בפורום CODE613 ב16/03/2016 15:41 (+02:00)

          תגובה 1 תגובה אחרונה
          1
          • A מנותק
            A מנותק
            avr416
            כתב ב נערך לאחרונה על ידי
            #5

            הנה קובץ לדוגמא:
            RecieptNo42 (4).pdf
            השתמשתי בספריה שהזכרתי ואכן היא עושה את העבודה בצורה מאד פשוטה והיא כוללת גם את התמונות וקבצי הCSS הכלולים בHTML.
            צריך רק שההפניה אליהם תהיה עם URL מוחלט ולא יחסי, וזה עובד יופי.
            רק הבעיה היא שזה לא רץ על AZURE ולכן אני צריך לנסות לעשות זאת עם ITextSharp שזה קצת יותר מסובך..

            תודה לכולם!

            פורסם במקור בפורום CODE613 ב16/03/2016 21:14 (+02:00)

            תגובה 1 תגובה אחרונה
            0

            בא תתחבר לדף היומי!
            • התחברות

            • אין לך חשבון עדיין? הרשמה

            • התחברו או הירשמו כדי לחפש.
            • פוסט ראשון
              פוסט אחרון
            0
            • דף הבית
            • קטגוריות
            • פוסטים אחרונים
            • משתמשים
            • חיפוש
            • חוקי הפורום