Загрузка первой страницы в пользовательском интерфейсе после сканирования - PullRequest
0 голосов
/ 21 января 2019

Я хочу загрузить первую отсканированную страницу (в прикрепленном сканере) в пользовательский интерфейс, но сейчас в этом коде последняя страница загружается в пользовательский интерфейс.Может кто-нибудь проанализировать код и сказать мне, что именно для реструктуризации, чтобы он отображал первую страницу? введите описание изображения здесь

 /// <summary>
    /// Loads the invoice in the UI, with its associated data.
    /// </summary>
    private void ShowImFromPDF()
    {
        IoC.Main.InvoiceCount = IoC.Main.Invoices.Count;

        GlobalVars.WriteLog("Updating image and data");
        if (IoC.Main.InvoiceIndex >= 0 && IoC.Main.InvoiceIndex < IoC.Main.Invoices.Count)
        {
            IoC.Main.LoadInfo = true;
            PdfDocument document = PdfReader.Open(IoC.Main.Invoices[IoC.Main.InvoiceIndex].Path);

            foreach (PdfPage page in document.Pages)
            {
                foreach (System.Drawing.Image image in page.GetImages())
                {
                    pictureBox1.Source = HelperMethods.ToBitMapImage(image);
                }
            }

1 Ответ

0 голосов
/ 22 января 2019

Как я написал в своем комментарии похоже, что цикл foreach переопределяет все изображения, поэтому, если вам кажется, что вы получаете последнее изображение, вы должны использовать что-то вроде page.GetImages().FirstOrDefault() я имею в виду, что вы перебираете все страницы в pdf и все изображения на своих страницах и помещаете каждую из них в одну и ту же pictureBox

Как использовать FirstOrDefault:

это возвращает список пустых целых, что означает, что элемент может быть int или null

 public static void doStuff(List<int?> nullableList)
        {            

            var firstItem = nullableList.FirstOrDefault();
            if (firstItem != null)
                Console.WriteLine(firstItem);
            else
                Console.WriteLine("first item is null");
        }

отправка примера

   List<int?> nullableList = new List<int?>() { 1, null, 2, 3, null };
   doStuff(nullableList);

    List<int?> nullableList1 = new List<int?>() { null, null, 2, 3, null };
    doStuff(nullableList1);

результат

1

"первый элемент нулевой"

зависит от вашей логики, вы должны получить изображение x со страницы y

...