2017-10-03 5 views
0

Je peux générer un fichier PDF en utilisant l'adaptateur Java et la bibliothèque «ITEXT», mais je ne peux pas ajouter un logo au fichier PDF généré. Logo est présent dans la structure du dossier de l'adaptateur java tout en essayant de se référer au fichier image que je reçois l'exception Fichier non trouvé. Ci-dessous est le codeCréation d'un fichier PDF à l'aide de l'adaptateur java mobile

@GET 
@OAuthSecurity(enabled=false) 
@Produces("application/pdf") 
@Path("/downloadfile") 
public Response getResourceData() throws IOException, DocumentException, URISyntaxException { 

    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    Document doc = new Document(); 
    PdfWriter.getInstance(doc, baos); 
    doc.open(); 
    Image img = Image.getInstance(Pdf55Resource.class.getResource("/img/wiprologo.jpg")); 
    doc.add(img); 
    doc.add(createFirstTable()); 
    doc.close(); 
    ResponseBuilder response = Response.ok(baos.toByteArray()); 
    response.header("Content-Type", "application/pdf"); 
    response.header("Content-disposition", "attachment; filename="+ "audit.pdf"); 
    response.header("Pragma", "private"); 
    response.header("Access-Control-Allow-Credentials", "true"); 
    response.header("Content-Length", baos.size()); 
    response.header("Access-Control-Allow-Origin", "*"); 
    response.header("Access-Control-Allow-Methods", "*"); 
    response.header("Access-Control-Allow-Headers", "*"); 
    Response result = response.build(); 
    return result; 

} 

J'ai créé un dossier d'image dans ce dossier j'ai mon fichier d'image.

enter image description here

+1

Je vois "wiprologo.jpg". Vous savez que Wipro est un client de iText Software, a un contrat de support et a un accès direct à iText Jira? Bien sûr, Wipro est une grande entreprise avec beaucoup de projets et cela peut ne pas s'appliquer à vous. Vérifiez auprès de la personne de votre entreprise qui est responsable de l'achat d'iText. –

+0

Vous montrez la structure de votre projet. À quoi ressemble la structure du fichier .adapter? Je ferais en sorte que img/wiprologo.jpg soit également là, à la racine du dossier classes. – dbreaux

Répondre

1

Plusieurs choses que vous pouvez essayer:

Assurez-vous que votre pom.xml a une règle pour copier la ressource d'image à la cible de construction. Deuxièmement, je pense que votre fichier devra être dans la structure java classpath pour que java le trouve. Si/img n'est pas dans le classpath, je ne pense pas qu'il le trouvera. Par exemple, je charge le fichier de licence my iText à l'aide de getResourceAsSteam().

InputStream keyFileIS = getClass().getClassLoader().getResourceAsStream(licenseFile); 
LicenseKey.loadLicenseFile(keyFileIS); // LicenseKey version 2 

Je mis le fichier de licence dans le répertoire java de base (src/main/java) de l'adaptateur pour vous assurer qu'il est dans le classpath. J'utilise getClassLoader() car il recherche par rapport à la racine du chemin de classe au lieu de la classe actuelle. Je ne spécifie pas non plus d'informations sur le chemin, juste le nom du fichier. (Voir What is the difference between Class.getResource() and ClassLoader.getResource()?)

Dans la section de construction du pom.xml, j'ai ajouté une règle ressources pour vous assurer qu'il est copié à la (règle après les plugins) cible:

<build> 
    <plugins> 
     <plugin> 
      <groupId>com.ibm.mfp</groupId> 
      <artifactId>adapter-maven-plugin</artifactId> 
      <extensions>true</extensions> 
     </plugin> 
    </plugins> 
    <resources> 
     <resource> 
      <directory>src/main/java</directory> 
      <excludes><exclude>**/*.java</exclude></excludes> 
     </resource> 
    </resources> 
</build> 

Cela copie tout ce qui n'est pas un fichier source sur la cible.

J'espère quelque chose aide