pdfluent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>com.pdfluent</groupId>
<artifactId>pdfluent</artifactId>
<version>1.0.0</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- ================================================================
Maven Central coordinates: com.pdfluent:pdfluent
================================================================ -->
<groupId>com.pdfluent</groupId>
<artifactId>pdfluent</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>PDFluent Java SDK</name>
<description>
PDF processing library for Java via JNI. Supports text
extraction, page rendering, AcroForm and XFA form processing, annotations,
PDF/A compliance, encryption, merging, and more.
</description>
<url>https://pdfluent.com</url>
<licenses>
<license>
<name>AGPL-3.0-only OR LicenseRef-PDFluent-Commercial</name>
<url>https://pdfluent.com/sdk/pricing</url>
<distribution>repo</distribution>
<comments>
AGPL-3.0 or a commercial licence, at your option. The AGPL is the
default and the complete product: no licence key, no activation
call, no tier, every feature in every build. The commercial
licence lifts the copyleft obligation and is sold yearly and
self-service at https://pdfluent.com/sdk/pricing -- the prices are
published, there is nothing to request and no quote to ask for.
</comments>
</license>
</licenses>
<developers>
<developer>
<id>jasperdew</id>
<name>Jasper de Winter</name>
<email>jasper@pdfluent.com</email>
<organization>PDFluent</organization>
<organizationUrl>https://pdfluent.com</organizationUrl>
<roles>
<role>maintainer</role>
</roles>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/pdfluent/pdfluent-sdk.git</connection>
<developerConnection>scm:git:https://github.com/pdfluent/pdfluent-sdk.git</developerConnection>
<url>https://github.com/pdfluent/pdfluent-sdk</url>
<tag>HEAD</tag>
</scm>
<issueManagement>
<system>GitHub</system>
<url>https://github.com/pdfluent/pdfluent-sdk/issues</url>
</issueManagement>
<!-- ================================================================
Properties
================================================================ -->
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<!-- ================================================================
Dependencies
JNA is required for the libpdf_capi (C ABI) loader path used by
PdfDocument and PdfluentLicensing. The raw-JNI path used by
PdfluentDocument loads libpdfluent_java via System.loadLibrary
and does not require JNA at runtime.
================================================================ -->
<dependencies>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.14.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- ================================================================
Build
================================================================ -->
<build>
<!-- Bundle LICENSE into the jar at META-INF/LICENSE so downstream
consumers always have the commercial-license text available. -->
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>${project.basedir}</directory>
<includes>
<include>LICENSE</include>
<include>LICENSE-COMMERCIAL</include>
</includes>
<targetPath>META-INF</targetPath>
</resource>
<!-- THE THIRD-PARTY NOTICES TRAVEL WITH THE BINARY (#541). The
native libraries this jar loads contain the Foxit Standard 14
faces, the Liberation and Noto substitutes and Adobe's CMap
resources; BSD-3-Clause and OFL 1.1 both ask for their notice
with a redistribution in binary form, and the two files above
provide our terms and none of theirs. Taken from the repository
root rather than copied here, because Maven can read a
directory outside the module and npm and maturin cannot. -->
<resource>
<directory>${project.basedir}/../..</directory>
<includes>
<include>NOTICE</include>
<include>THIRD_PARTY_LICENSES.txt</include>
</includes>
<targetPath>META-INF</targetPath>
</resource>
</resources>
<plugins>
<!-- Compiler: -Werror equivalent via failOnWarning -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>11</source>
<target>11</target>
<compilerArgs>
<arg>-Xlint:all</arg>
<arg>-Xlint:-processing</arg>
<!-- Suppress "system modules path not set" when building
with a JDK newer than 11 but targeting Java 11. -->
<arg>-Xlint:-options</arg>
<!-- NOTE: -Xlint:-restricted is intentionally NOT here.
The "restricted" lint category only exists on JDK 24+;
passing it unconditionally breaks JDK 17/21 builds
(unknown key + -Werror = fatal). It is appended by the
jdk24-plus profile below, which activates only on
JDK [24,). -->
<arg>-Werror</arg>
</compilerArgs>
</configuration>
</plugin>
<!-- Test runner -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
</plugin>
<!-- Sources JAR (required by Maven Central) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Javadoc JAR (required by Maven Central) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.6.3</version>
<configuration>
<failOnWarnings>true</failOnWarnings>
<doclint>all,-missing</doclint>
<source>11</source>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- GPG signing (required by Maven Central).
GPG key must be configured in ~/.m2/settings.xml:
<server>
<id>ossrh</id>
<username>...</username>
<password>...</password>
</server>
and gpg-agent must hold the passphrase.
Activate with: mvn -P release ... -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.2.4</version>
<configuration>
<!-- Skip unless -P release is active -->
<skip>true</skip>
<keyname>${gpg.keyname}</keyname>
<passphraseServerId>${gpg.keyname}</passphraseServerId>
</configuration>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- ================================================================
Release profile — enables signing for Maven Central deployment.
Activate: mvn -P release deploy
Requires: GPG key configured in ~/.m2/settings.xml, OSSRH credentials.
See DISTRIBUTION_SETUP.md for the full publish checklist.
================================================================ -->
<profiles>
<!-- ============================================================
jdk24-plus — JDK 24+ portability profile.
The "restricted" javac lint category (JEP 472, restricting
System.load{,Library} / FFM restricted methods) only exists
on JDK 24+. Building NativeLoader emits that lint, and with
-Werror it would fail the build. We suppress it ONLY when the
build JDK is 24 or newer; on JDK 17/21 the flag is unknown and
must NOT be passed (it would itself trip -Werror).
combine.children="append" merges this arg onto the base
maven-compiler-plugin compilerArgs rather than replacing them.
============================================================ -->
<profile>
<id>jdk24-plus</id>
<activation>
<jdk>[24,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs combine.children="append">
<arg>-Xlint:-restricted</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- Maven Central via the Sonatype Central Publishing Plugin.
Replaces the sunset OSSRH endpoints (s01.oss.sonatype.org went EOL
June 2025). The plugin uses ~/.m2/settings.xml server-id `central`
— that's where the Sonatype Central Portal token + username are
configured. `autoPublish=false` uploads to STAGING only; release
from the Portal UI after operator review.
Activate with: mvn -P release deploy -->
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<configuration>
<skip>false</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.11.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<!-- Staging only — operator releases from Portal UI -->
<autoPublish>false</autoPublish>
<waitUntil>validated</waitUntil>
</configuration>
</plugin>
</plugins>
</build>
<!-- No <distributionManagement>: central-publishing-maven-plugin
handles upload + staging via the Sonatype Central Portal API
(https://central.sonatype.com), not via the deploy:deploy
lifecycle to a Sonatype Nexus repo. -->
</profile>
</profiles>
</project>