Пятница, 29 Ноября 2024, 11:35

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
iTextSharp и юнити...
killing002Дата: Воскресенье, 06 Сентября 2020, 17:52 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Приветствую. ВОзникла проблема.. буду краток , поэтому сразу к делу.
Код

#using iTextSharp.text;

PdfReader reader = new PdfReader(path);
            ITextExtractionStrategy strategy;

            Rectangle rect = new Rectangle(45, 0, 135, 150);
            RenderFilter filter = new RegionTextRenderFilter(rect);
            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                strategy = new FilteredTextRenderListener(new SimpleTextExtractionStrategy(), filter);
                print(PdfTextExtractor.GetTextFromPage(reader, i, strategy));
                testText.text = PdfTextExtractor.GetTextFromPage(reader, i, strategy);
                q = 5 / (i - 1) ;
            }


Вот код и он не работает. В эдиторе все ок, но при порте на андроид он просто игнорирует этот участок кода, как будто его и нет. Прикол с перменной q я добавил, когда заключил этот участок кода в блок try catch. Прикол в том, что в этом выражении просходит деление на ноль, в итоге этот эксепшин тоже игнорится... я не поонимаю, что делать.

Объясню код:
с помощью сдк(или не сдк) iTextSharp, я считываю информацию с pdf файла(это уже заранее созданный файл). И после чего эту информацию записываю в обычный текст, который позиционируется на экране. При запуске в эдиторе, повторюсь, все ок, но при билде под андроид, как была надпись "new text", так и осталась.. ПОмогите.


123
drcrackДата: Воскресенье, 06 Сентября 2020, 19:21 | Сообщение # 2
старожил
Сейчас нет на сайте
path покажи
killing002Дата: Воскресенье, 06 Сентября 2020, 21:23 | Сообщение # 3
почетный гость
Сейчас нет на сайте
path = System.IO.Path.Combine(Application.streamingAssetsPath, "test.pdf");
path = Application.persistentDataPath + "/" + "test.pdf";
path = System.IO.Path.Combine(Application.temporaryCachePath, "test");

ПРобовал все 3 варианта, пока ничего не происходит..

Добавлено (08 Сентября 2020, 00:46)
---------------------------------------------
Вопрос все еще актуален..


123

Сообщение отредактировал killing002 - Воскресенье, 06 Сентября 2020, 21:56
drcrackДата: Вторник, 08 Сентября 2020, 01:21 | Сообщение # 4
старожил
Сейчас нет на сайте
На андроиде для чтения файла из streamingAssetsPath нужно использовать UnityWebRequest
killing002Дата: Вторник, 08 Сентября 2020, 14:05 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Да, вы правы. На ином ресурсе предложили один рабочий вариант. Если кому интересно, то вот, что в итоге получилось
Код
path = System.IO.Path.Combine(Application.streamingAssetsPath, "test.pdf");

  IEnumerator request()
    {
        UnityWebRequest www = UnityWebRequest.Get(path);
        yield return www.SendWebRequest();
        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            print(www.downloadHandler.data.Length);
            mm = new MemoryStream(www.downloadHandler.data);
            PdfReader reader = new PdfReader(mm);
            ITextExtractionStrategy strategy;
            testText.text = "IN";

            Rectangle rect = new Rectangle(45, 0, 135, 150);
            RenderFilter filter = new RegionTextRenderFilter(rect);
            int q;
            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                strategy = new FilteredTextRenderListener(new SimpleTextExtractionStrategy(), filter);
                print(PdfTextExtractor.GetTextFromPage(reader, i, strategy));
                testText.text = PdfTextExtractor.GetTextFromPage(reader, 1, strategy);

            }
            mm.Close();
        }
    }


123
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг