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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. איך להשתמש ב-pdf.js לפתיחת קבצי pdf מהמחשב ב-C#

איך להשתמש ב-pdf.js לפתיחת קבצי pdf מהמחשב ב-C#

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 1 כותבים 254 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • pcinfogmachP מנותק
    pcinfogmachP מנותק
    pcinfogmach
    כתב ב נערך לאחרונה על ידי
    #1

    במהלך חיפושי אחרי ספרייה שימושית להצגת מסמכי PDF, נתקלתי ב-pdf.js — מציג ה-PDF של פיירפוקס, שהוא גם חינמי.

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

    private async void PDFjsViewerWebView_CoreWebView2Initialized(WebView2 sender, CoreWebView2InitializedEventArgs args)
    {
    	string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
    	sender.CoreWebView2.SetVirtualHostNameToFolderMapping("pdfjs", path, CoreWebView2HostResourceAccessKind.DenyCors);
    	PDFjsViewerWebView.Source = new("https://pdfjs/web/viewer.html");
    }
    

    הקוד עובד מצוין והקורא נטען בהצלחה. כעת, אני נתקלתי בבעיה — איך אני טוען מסמך לוקאלי דרך הקורא?

    גמ"ח מידע מחשבים ואופיס

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

      לבינתיים מצאתי פתרון לא מושלם אבל זה עובד:
      יש להעתיק את הקובץ לתוך תיקיית ה-web ומשם אפשר לפתוח אותו (עיין כאן) מצו"ב דוגמא מלאה:
      אני מקווה שאולי מישהו שמבין באמת בנושא יוכל להצביע על הפונציה הנצרכת ברור לי שיש משהו כזה כי יש כפתור שפותח קבצים.

      public partial class MainWindow : Window
      {
          public MainWindow()
          {
              InitializeComponent();
              webView.CoreWebView2InitializationCompleted += Browser_CoreWebView2InitializationCompleted;
              webView.EnsureCoreWebView2Async();
          }
      
          private void Browser_CoreWebView2InitializationCompleted(object? sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
          {
              string appPath = AppDomain.CurrentDomain.BaseDirectory;
              string fullPath = Path.Combine(appPath, "pdfjs");
              webView.CoreWebView2.SetVirtualHostNameToFolderMapping("pdfjs", fullPath, CoreWebView2HostResourceAccessKind.DenyCors);
          }
      
          private void OpenPdfButton_Click(object sender, RoutedEventArgs e)
          {
              var openFileDialog = new Microsoft.Win32.OpenFileDialog
              {
                  Filter = "PDF Files (*.pdf)|*.pdf",
                  Title = "Select a PDF File"
              };
      
              if (openFileDialog.ShowDialog() == true)
              {
                  string filePath = openFileDialog.FileName;
                  string appPath = AppDomain.CurrentDomain.BaseDirectory;
                  string targetPath = Path.Combine(appPath, "pdfjs", "web", Path.GetFileName(filePath));
      
                  try
                  {
                      // Copy the selected PDF file to the pdfjs folder
                      File.Copy(filePath, targetPath, true);
      
                      // Open the copied file in the PDF viewer
                      string fileUri = new Uri($"https://pdfjs/web/viewer.html?file={Path.GetFileName(filePath)}").AbsoluteUri;
                      webView.Source = new Uri(fileUri);;
                  }
                  catch (Exception ex)
                  {
                      MessageBox.Show($"Error copying file: {ex.Message}");
                  }
              }
          }
      }
      

      גמ"ח מידע מחשבים ואופיס

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

        בניתי תוכנה שמדגימה את הימוש בספרייה זו ב-C# למי שמעוניין להלן הקישור לגיט האב
        https://github.com/pcinfogmach/PdfJs2
        התוכנה רק מדגימה שימוש בסיס יש עוד המון אפשרויות להתממשקות דרך js

        גמ"ח מידע מחשבים ואופיס

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

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

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

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