הדפסה של עמוד ב C#

משחזר מידע

משתמש סופר מקצוען
נקודה אחת שהייתי בודק
אולי יש בעיה עם dot net
נסו אולי להסיר/להתקין מחדש/לבדוק גירסה
 

תאו

משתמש פעיל
D I G I T A L
זה גרסה חדשה כך שלא נראה הגיוני שזה בעיה בו ...
ניסיתי לבדוק על האינדקס של הstream לא מצאתי משהו שנראה בעיתי ...
 

תאו

משתמש פעיל
D I G I T A L
הבנתי סופסוף מה הבעיה , שאני לא קוראת לקובץ בשמו הנכון אז הוא לא יודע מאיפה לקחת את הנתונים להדפסה ...
אז אולי משהו יוכל לעזור לי בזה .
איך קוראים לקובץ From1 כשמריצים אותו מה הסיומת שלו ?

streamToPrint = new StreamReader("..\\Form1");
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
הוא אמור להיות בתקיה של Bin/Debug
תסתכלי שם.
 

תאו

משתמש פעיל
D I G I T A L
זה אמור להיות הקובץ bin\\Debug\\דף קליטה.exe

מנסה להדפיס וזה רושם לי את השגיאה הבאה -
Managed Debugging Assistant 'ContextSwitchDeadlock' : 'לא היתה ל- CLR אפשרות לבצע מעבר מהקשר ה- COM ‏0x34e3090 להקשר ה- COM ‏0x34e2fd8 במשך 60 שניות. הליך המשנה שהוא הבעלים של הקשר/apartment היעד מבצע בוודאי המתנה מסוג non pumping או מעבד פעולה האורכת זמן רב, מבלי לבצע pumping של הודעות Windows. למצב זה יש בדרך כלל השפעה שלילית על הביצועים ואף עשוי לגרום לכך שהיישום יפסיק להגיב או שהשימוש בזיכרון יצטבר באופן רציף לאורך זמן. כדי למנוע בעיה זו, על כל הליכי המשנה מסוג threaded apartment (STA)‎ להשתמש בנתונים בסיסיים מסוג pumping wait (כגון CoWaitForMultipleHandles) ולבצע pumping של הודעות באופן שוטף במהלך פעולות האורכות זמן רב.'
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
אולי פשוט צריך לשמור את זה בתור תמונה, ואז לשמור לקובץ PDF
יכול להיות שיש לו בעיה, כי הוא באמצע תהליך.
תנסי לשמור את המסך כתמונה, ואת התמונה להדפיס לקובץ.
 

תאו

משתמש פעיל
D I G I T A L
מה ז"א לשמור כתמונה לכתוב פונקציה שתמיר את הקובץ exe לסיומת של תמונה ואת התמונה הזאת להעביר לפונקציה הזאת שמדפיסה לי לקובץ ?
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
את מנסה להדפיס לקובץ צילום מסך של הטופס?
 

Aharono

משתמש פעיל
D I G I T A L
אני הייתי ממליץ לחלק את הדיבאג לשני חלקים (לקריאת הטקסט מהקובץ והדפסה לקובץ) על מנת שיהיה לך יותר קל להבין היכן מקור הבעיה.

PHP:
        public void PrintFileToEnd()
        {
            StreamReader reader = new StreamReader(@"d:\a.txt");

            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();

                Console.WriteLine(line);
            }
        }

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

ורק לאחר שהחלק הראשון עובד בודאי, הייתי בוחן את עצם ההדפסה לקובץ.

* בכוכבית כי כבר קראתי את הקוד, אני הייתי כותב אותו טיפה אחרת על מנת שהוא יהיה יותר קריא בעין (וגם יותר קל למצוא היכן הבעיה):

PHP:
        public void pd_PrintPage(object sender, PrintPageEventArgs ev)
        {
            float leftMargin = ev.MarginBounds.Left;
        
            float currentHeight = ev.MarginBounds.Top;
            float lineHeight = printFont.GetHeight(ev.Graphics));

            // Calculate the number of lines per page.
            linesPerPage = ev.MarginBounds.Height / lineHeight;


            for (int i = 0; i <linesPerPage; i++)
            {
                if (streamToPrint.EndOfStream)
                {
                    break;
                }

                string line = streamToPrint.ReadLine();

                ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, currentHeight, new StringFormat());


                currentHeight += lineHeight;
            }

            //If the stream has ended, then there is no need to print another page.
            ev.HasMorePages = !streamToPrint.EndOfStream;
        }

מקווה שעזרתי, בהצלחה
 

תאו

משתמש פעיל
D I G I T A L
אני בדקתי הוא לא קורא את הקובץ נכון דוגמא של שורה שהוא קרא:

MZ� ���@� � ��!� L�!This program cannot be run in DOS mode.
$PEL �"[�" 0: �Y ` @ � `� �Y O` � � l

אבל את שאר הפעולות הוא מבצע טוב הוא קורא אח"כ יוצר קובץ ומדפיס את מה שקרא ...
 

Aharono

משתמש פעיל
D I G I T A L
כשאת פותחת את הקובץ הזה בכתבן, מה את רואה?
 

תאו

משתמש פעיל
D I G I T A L
אותו דבר , כבר בתוכנית אני רואה בדיבג שככה הוא קורא את השורות ...
 

Aharono

משתמש פעיל
D I G I T A L
אז הבעיה בקובץ ולא בתוכנה.... הקוד עשוי לקובץ txt..

יש אפשרות להעתיק את הקובץ הזה לקובץ txt?
 

תאו

משתמש פעיל
D I G I T A L
זה מה שאני רוצה לעשות, חיפשתי בגוגל ולא מצאתי משהו
אולי יש ספריות שמצרפים לתוכנה
 

משחזר מידע

משתמש סופר מקצוען
אני בדקתי הוא לא קורא את הקובץ נכון דוגמא של שורה שהוא קרא:

MZ� ���@� � ��!� L�!This program cannot be run in DOS mode.
$PEL �"[�" 0: �Y ` @ � `� �Y O` � � l

אבל את שאר הפעולות הוא מבצע טוב הוא קורא אח"כ יוצר קובץ ומדפיס את מה שקרא ...
למה אתם מנסים להדפיס את הEXE ?
 

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק קיט ר'

קנג רְאֵה עָנְיִי וְחַלְּצֵנִי כִּי תוֹרָתְךָ לֹא שָׁכָחְתִּי:קנד רִיבָה רִיבִי וּגְאָלֵנִי לְאִמְרָתְךָ חַיֵּנִי:קנה רָחוֹק מֵרְשָׁעִים יְשׁוּעָה כִּי חֻקֶּיךָ לֹא דָרָשׁוּ:קנו רַחֲמֶיךָ רַבִּים יְהוָה כְּמִשְׁפָּטֶיךָ חַיֵּנִי:קנז רַבִּים רֹדְפַי וְצָרָי מֵעֵדְוֹתֶיךָ לֹא נָטִיתִי:קנח רָאִיתִי בֹגְדִים וָאֶתְקוֹטָטָה אֲשֶׁר אִמְרָתְךָ לֹא שָׁמָרוּ:קנט רְאֵה כִּי פִקּוּדֶיךָ אָהָבְתִּי יְהוָה כְּחַסְדְּךָ חַיֵּנִי:קס רֹאשׁ דְּבָרְךָ אֱמֶת וּלְעוֹלָם כָּל מִשְׁפַּט צִדְקֶךָ:
נקרא  9  פעמים

לוח מודעות

למעלה