תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    מספר עמודים בPDF קיים

    ארכיון code613m
    2
    4
    270
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגב כנושא
    התחבר בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • נתנאל
      נתנאל נערך לאחרונה על ידי

      אני רוצה למצוא את מספר עמודים בקובץ PDF קיים רק על ידי נתינת הPath.
      לא רציתי להשתמש בספריות אחרות מכמה טעמים [למרות שיתכן שלא תהיה בררה].
      הקוד שמצאתי לזה הוא:

      public static int getNumberOfPdfPages(string pathDocument)
              {
                   using (StreamReader sr = new StreamReader(File.OpenRead(pathDocument)))
                  { int my =  new Regex(@"/Type\s*/Page[^s]").Matches(sr.ReadToEnd()).Count;
                  sr.Dispose();
                  return my;
                  }
      

      שזה בעצם לפתוח את הקובץ לקריאת טקסט, ומחפשים את הביטוי המתאים שמסמן שיש כאן מעבר עמוד, ולפי המנין שלו יודעים כמה דפים יש.
      אבל במבחן המציאות זה לא כל כך עובד באופן חלק. פעמים שהוא מראה מספר שגוי. או שקובץ שהוספתי לו דף אחד פתאום הוא מראה כאילו נוספו לו 300 עמודים. האם זו הדרך או שצריך להוסיף משהו בקוד.
      ועוד שאלה - האם פתיחת הקובץ לקריאה משאירה את הקובץ באותה איכות ויכולות כמו שהיו לו מקודם? כי היה קובץ אחד כזה, שאחרי שעבר דרך הפונקציה לא הסכים למחוק דפים והתנהג בצורה מוזרה ולא אופינית.
      האם בסופו של דבר הדרך היא בספריות צד שלישי?

      פורסם במקור בפורום CODE613 ב29/07/2016 00:58 (+03:00)

      הצטרפות לרשימת התפוצה בעניני תכנות JS , React , Node וכל מיני דברים מענינים כאן :cool:
      https://programing-tips.web.app/

      תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • dovid
        dovid ניהול נערך לאחרונה על ידי

        מאוד פשוט. פתח את הקובץ בעורך טקסט (npp למשל), וחפש את הביטוי הרגלורי הזה.
        כנראה שזה לא נכון לכל PDF.

        השאלה הנוספת, פתיחת הקובץ לקריאה לא משנה אותו במאומה. לא שהיא מחזירה אותו לכפי שהיה אלא שהיא בכלל לא נוגעת בו.

        כעת תורך לפרט מה הבעיה בספריות צד ג'.

        פורסם במקור בפורום CODE613 ב29/07/2016 01:15 (+03:00)

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

        תגובה 1 תגובה אחרונה תגובה ציטוט 2
        • נתנאל
          נתנאל נערך לאחרונה על ידי

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

          פורסם במקור בפורום CODE613 ב29/07/2016 01:29 (+03:00)

          הצטרפות לרשימת התפוצה בעניני תכנות JS , React , Node וכל מיני דברים מענינים כאן :cool:
          https://programing-tips.web.app/

          תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • dovid
            dovid ניהול נערך לאחרונה על ידי

            א. ללמוד, זה יותר קל מהקוד שהבאת פה.
            ב. הטובים בתשלום - רק למשימות רציניות. לכל דבר פשוט בסגנון הזה יש משהו חינמי. לעניין PDF, אז בלי ספק ITextSharp
            דוגמה למה שביקשת במחלקה הזו:

            int PagesCount(string path)
            {
            	using (var pdfReader = new PdfReader(path))
            		return pdfReader.NumberOfPages;
            }
            

            תדביק את הקוד הזה + תוסיף את ITextSharp דרך מנהל החבילות של נוגט (קליק ימני על הפרוייקט > nuget package manager...) וזהו.
            ג. אפשר להטמיע את הספריות בתוך קובץ הרצה יחיד. פשוט מוסיפים את כל הDLL כמשאבים - resource ומחלצים אותם בזמן הרצה. אבל גם לזה כדאי להשתמש בספריה מוכנה: Costura.Fody, גם אותה תתקין דרך נוגט ואתה פטור מכל פעולה אחרת.

            פורסם במקור בפורום CODE613 ב29/07/2016 13:07 (+03:00)

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

            תגובה 1 תגובה אחרונה תגובה ציטוט 4
            • 1 / 1
            • פוסט ראשון
              פוסט אחרון
            בא תתחבר לדף היומי!