От новичка до гуру: Курсы программирования на CyberDuff

Добавление изображения в PDF, Android Studio

Я разрабатываю приложение в Android Studio с помощью iTextG, где вы можете заполнить форму, нажать кнопку и взамен вы получите PDF-файл. В конце документа мне нужно добавить изображение.

После нажатия кнопки приложение вылетает с пометкой "MyApp остановлено". Тем не менее, он создает файл PDF, но он пустой, и я не могу его открыть.

Вот мой код (в функции, отвечающей за создание документа):

Paragraph test = new Paragraph();
test.setAlignment(Element.ALIGN_LEFT);
try {
    URL logoJock = new URL("https", "www.imgur.com", "/a/AsunJH7");
    test.add(new Jpeg(logoJock));
} catch (Exception e) {
    e.notify();
}

Поэтому я проверил использование и один из способов добавления изображения — по URL-адресу, поэтому я загрузил его на imgur.

document.open();
document.add(data);
document.add(test);
document.close();

Я добавляю абзац в документ. Без него мое приложение создает правильный документ со всеми данными, которые я хотел включить. Единственная проблема заключается в добавлении изображения.

Не могли бы вы помочь мне с этой проблемой?


  • Я не думаю, что когда-либо видел, чтобы кто-то создавал такое изображение: new Jpeg(logoJock). Почему вы не использовали Image.getInstance(logoJock)? Кроме того: дизайн, который требует загрузки изображения из Интернета каждый раз, когда создается PDF-файл, является плохим дизайном: он использует слишком много данных. Вы должны кэшировать изображение на устройстве. Ваше приложение аварийно завершает работу, когда вы не задействуете PDF, а загружаете приложение как byte[]? 19.06.2018
  • Да, я признаю, это был плохой дизайн, но это была последняя идея, которую я должен был проверить. Получение экземпляра с помощью image.getInstance(); был очевидным выбором, но он не работал. Проверьте мой комментарий, чтобы увидеть решение. 20.06.2018

Ответы:


1

Задача решена,

Я попробовал это, я попробовал image.getInstance(path), я попробовал другие возможности, и, наконец, это сработало (мне нужно переместить файл моего логотипа в папку с ресурсами):

document.open();
try {
        InputStream ims = getAssets().open("logo.PNG");
        Bitmap bmp = BitmapFactory.decodeStream(ims);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
        Image image = Image.getInstance(stream.toByteArray());
        image.scalePercent(30);
        image.setAlignment(Element.ALIGN_LEFT);
        document.add(image);
    } catch (IOException e) {
        e.printStackTrace();
    }
document.close()
20.06.2018
Новые материалы

Отслеживание состояния с течением времени с дифференцированием снимков
Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

Игра в прятки с данными
Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

«Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

Все о кейсах: Camel, Snake, Kebab & Pascal
В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..

Как работает дистанционное парное программирование и почему оно может изменить вашу жизнь
Серебряная пуля от одиночества и отвлекающих факторов во время обучения программированию Независимо от того, работаете ли вы или учитесь удаленно, велика вероятность, что одиночество и..