Импорт itext-7 в Android Gradle

Я пытаюсь добавить itext-7 в Android после добавления следующего в gradle

скомпилировать 'com.itextpdf: root: 7.0.0'

Я до сих пор не могу найти классы itext, например PDFWriter и т. д.

Пожалуйста, дайте мне знать, если есть отдельная версия для itext-7 для Android и как ее добавить.

P.S: я успешно добавил itext-5, но теперь хочу работать с itext-7.


person Ajji    schedule 25.04.2017    source источник


Ответы (4)


Корневой артефакт представляет собой просто родительский pom и вообще не содержит классов iText 7.

Если вы хотите включить все функции iText 7 Core, попробуйте

compile 'com.itextpdf:itext7-core:7.0.2'

Если это не работает из коробки (например, из-за отсутствия классов Java в Android) или если вы просто хотите более компактную установку, обратите внимание, что в отличие от iText 5 более новый iText 7 распространяется не как одна большая банка, а как набор модулей.

Для Maven вы должны использовать следующие зависимости (или, что более вероятно, их подмножество); вы можете легко построить из них операторы gradle compile:

<dependencies>

    <!-- always needed -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>kernel</artifactId>
        <version>7.0.2</version>
    </dependency>

    <!-- always needed -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>io</artifactId>
        <version>7.0.2</version>
    </dependency>

    <!-- always needed -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>layout</artifactId>
        <version>7.0.2</version>
    </dependency>

    <!-- only needed for forms -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>forms</artifactId>
        <version>7.0.2</version>
    </dependency>

    <!-- only needed for PDF/A -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>pdfa</artifactId>
        <version>7.0.2</version>
    </dependency>

    <!-- only needed for digital signatures -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>sign</artifactId>
        <version>7.0.2</version>
    </dependency>

    <!-- only needed for barcodes -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>barcodes</artifactId>
        <version>7.0.2</version>
    </dependency>

    <!-- only needed for Asian fonts -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>font-asian</artifactId>
        <version>7.0.2</version>
    </dependency>

    <!-- only needed for hyphenation -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>hyph</artifactId>
        <version>7.0.2</version>
    </dependency>

</dependencies>

(Начало работы с iText 7 на сайте developer.itextpdf.com)

Что касается Android: в настоящее время iText 7 не совместим с Android, и вы будете получать ошибки компиляции iText 7 работает из коробки при использовании на устройство с Android API уровня 24 или выше (Android Nougat). Если вы хотите поддерживать устройства, работающие на более ранней версии Android, вы можете написать приложение Xamarin, которое будет работать на любой версии Android, но Xamarin означает написание на .NET.

person mkl    schedule 25.04.2017
comment
@hannes, почему ты превратил простое в большее? Это не имеет никакого смысла, не так ли? - person mkl; 24.01.2021

Вам нужно добавить

compile 'com.itextpdf:io:7.0.2'
compile 'com.itextpdf:kernel:7.0.2'
compile 'com.itextpdf:layout:7.0.2'

и, возможно, больше, в зависимости от того, какие компоненты вам могут понадобиться. Полный список см. на http://developers.itextpdf.com/itext-7. в формате Maven XML, но вы должны быть в состоянии адаптироваться к Gradle.

Что касается Android: в настоящее время iText 7 не совместим с Android, и вы будете получать ошибки компиляции iText 7 работает из коробки при использовании на устройство с Android API уровня 24 или выше (Android Nougat). Если вы хотите поддерживать устройства, работающие на более ранней версии Android, вы можете написать приложение Xamarin, которое будет работать на любой версии Android, но Xamarin означает написание на .NET.

person Amedee Van Gasse    schedule 25.04.2017
comment
Упс, ты был быстрее... ;) - person mkl; 25.04.2017
comment
И вы были более многословны. :) - person Amedee Van Gasse; 25.04.2017
comment
@mkl Если вы добавите часть о несовместимости с Android, я удалю свой ответ. Ваш ответ лучше. - person Amedee Van Gasse; 25.04.2017
comment
Большое тебе спасибо. Да, часть, несовместимая с Android, здесь жизненно важна. - person Ajji; 25.04.2017
comment
@AmedeeVanGasse Вы снова были быстрее, я только начал редактирование, когда ваше редактирование прилетело ... - person mkl; 25.04.2017
comment
Во время обеденного перерыва я даже не сижу за своим столом, а делаю это на своем телефоне. - person Amedee Van Gasse; 25.04.2017
comment
Не забывайте есть! - person mkl; 25.04.2017
comment
Пожалуйста, взгляните на мой другой вопрос относительно itext до окончания обеда :) stackoverflow.com/questions/43608506/ - person Ajji; 25.04.2017

Если вы хотите включить все функции iText 7 Core, попробуйте

implementation 'com.itextpdf:itext7-core:7.1.8'
person Hemal Ladani    schedule 07.10.2019
comment
Требуется ли лицензия? - person Real Tech Hacks; 01.07.2021

Поскольку это лучший результат Google, я хочу добавить хитрость, чтобы заставить его работать на Android.

В настоящее время я использую iText 7.1.5 на Android с

minSdkVersion 22
targetSdkVersion 28 

Нет проблем с редактированием PDF-файлов XFA

Хитрость заключается в том, чтобы установить выпуск Gradle И отладить

 buildTypes {
        debug {
            minifyEnabled true
        }
        release {
            minifyEnabled true
        }

Это удалит неиспользуемые классы и в большинстве случаев также удалит код, зависящий от API 24 или API 26, что позволит вашему приложению скомпилироваться.

Следующий трюк — добавить это в ваш app.gradle.

android {
    packagingOptions {
        pickFirst 'com/itextpdf/io/font/*'
        pickFirst 'com/itextpdf/io/font/cmap/*'
    }

для удаления сгенерированных предупреждений.

Очевидно, используйте это с особой осторожностью и обильным количеством тестов перед использованием в производстве.

person RRiVEN    schedule 14.02.2019