:warning: NOTE: This has been deprecated by https://github.com/dbmdz/iiif-apis :warning:
These Java libraries implement the IIIF Presentation API and provide Manifest generation (see http://iiif.io/api/presentation/2.0/):
"The IIIF Presentation API specifies a web service that returns JSON-LD structured documents that together describe the structure and layout of a digitized object or other collection of images and related content. Many different styles of viewer can be implemented that consume the information to enable a rich and dynamic user experience, consuming content from across collections and hosting institutions."
Depending on what library you want use, these are the dependency definitions for all modules:
<dependency>
<groupId>de.digitalcollections</groupId>
<artifactId>iiif-presentation-backend-api</artifactId>
<version>${version.iiif-presentation}</version>
</dependency>
<dependency>
<groupId>de.digitalcollections</groupId>
<artifactId>iiif-presentation-backend-impl</artifactId>
<version>${version.iiif-presentation}</version>
</dependency>
<dependency>
<groupId>de.digitalcollections</groupId>
<artifactId>iiif-presentation-business-api</artifactId>
<version>${version.iiif-presentation}</version>
</dependency>
<dependency>
<groupId>de.digitalcollections</groupId>
<artifactId>iiif-presentation-business-impl</artifactId>
<version>${version.iiif-presentation}</version>
</dependency>
<dependency>
<groupId>de.digitalcollections</groupId>
<artifactId>iiif-presentation-model-api</artifactId>
<version>${version.iiif-presentation}</version>
</dependency>
<dependency>
<groupId>de.digitalcollections</groupId>
<artifactId>iiif-presentation-model-impl</artifactId>
<version>${version.iiif-presentation}</version>
</dependency>
<dependency>
<groupId>de.digitalcollections</groupId>
<artifactId>iiif-presentation-frontend-impl-client-rest</artifactId>
<version>${version.iiif-presentation}</version>
</dependency>
<dependency>
<groupId>de.digitalcollections</groupId>
<artifactId>iiif-presentation-frontend-impl-springmvc</artifactId>
<version>${version.iiif-presentation}</version>
</dependency>
<dependency>
<groupId>de.digitalcollections</groupId>
<artifactId>iiif-presentation-frontend-impl-commandline</artifactId>
<version>${version.iiif-presentation}</version>
</dependency>
Create your IIIF-Manifest by using IIIF-Resources like Manifest, Sequence, Canvas, Image, ImageResource, etc. (see classes in package de.digitalcollections.iiif.presentation.model.impl.v2).
import de.digitalcollections.iiif.presentation.model.api.v2.Manifest;
import de.digitalcollections.iiif.presentation.model.impl.v2.ManifestImpl;
Manifest myManifest = new ManifestImpl(myId, myLabel);
...
Generate JSON-representation of your Manifest by calling
import de.digitalcollections.iiif.presentation.frontend.impl.commandline.v2.ManifestGenerator;
ManifestGenerator mg = new ManifestGenerator();
String json = mg.generateJson(myManifest);
...
Additionally a command line tool (ManifestGenerator) is provided, which generates a manifest by reading all images (e.g. of a book) in a directory.
<dependency>
<groupId>de.digitalcollections</groupId>
<artifactId>iiif-presentation-frontend-impl-springmvc</artifactId>
<version>2.0.0</version>
</dependency>
@Configuration
@ComponentScan(basePackages = {
"de.digitalcollections.iiif.presentation.config"
}) // scans all frontend, business and backend configs of Presentation API
...
public class SpringConfig implements EnvironmentAware {
...
}
...
[2016-07-14 10:15:23,662 INFO ] [...] RequestMappingHandlerMapping (main ) > Mapped "{[/presentation/v2/{identifier}/manifest],methods=[GET],produces=[application/json]}" onto public de.digitalcollections.iiif.presentation.model.api.v2.Manifest de.digitalcollections.iiif.presentation.frontend.impl.springmvc.controller.v2.IIIFPresentationApiController.getManifest(java.lang.String) throws de.digitalcollections.iiif.presentation.frontend.impl.springmvc.exception.NotFoundException
...
In the configuration file de.digitalcollections.iiif.presentation.config.SpringConfigClientRest-local.properties
(resp. -DEV
or -PROD
) set your IIIF server URL:
presentation.iiifRepositoryURL=https://localhost/presentation
After including the configuration bean SpringConfigClientRest
in your java config component scan you can autowire the REST client:
public class Test {
@Autowired
private IIIFRepository iiif;
public void fetch(String id) {
Manifest manifest = iiif.manifest(id);
// ... do something with manifest
}
}
Clone project and build it:
$ mvn clean install
Q: The JSON output for IIIF Presentation API is not correct.
A: Be sure that Jackson object mapping is configured correctly. The SpringConfigFrontendPresentation overrides the method "configureMessageConverters(...)" and configures the MappingJackson2HttpMessageConverter's ObjectMapper properly. But if you override the method in your Spring MVC configuration class, the SpringConfigFrontendPresentation message converters configuration is ignored (the root configuration rules...).
Solution: Add proper ObjectMapper configuration to your config. For IIIF this is needed:
import de.digitalcollections.iiif.presentation.model.impl.jackson.v2.IiifPresentationApiObjectMapper;
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new IiifPresentationApiObjectMapper();
return objectMapper;
}