使用移动第一个java适配器创建PDF

时间:2017-10-03 06:38:11

标签: itext ibm-mobilefirst

我可以使用java Adapter和“ITEXT”库生成PDF,但无法在生成的pdf中添加徽标。在尝试引用图像文件时,java适配器文件夹结构中存在徽标,我发现文件未找到异常。以下是代码

@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;

}

我在该文件夹中创建了一个图像文件夹,我有我的图像文件。

enter image description here

1 个答案:

答案 0 :(得分:1)

你可以尝试几件事:

确保您的pom.xml具有将图像资源复制到构建目标的规则。其次,我认为你的文件需要在java的java类路径结构中才能找到它。如果/ img不在类路径中,我认为它不会找到它。

例如,我使用getResourceAsSteam()加载我的iText许可证文件。

transform

我将许可证文件放在适配器的基本java目录(src / main / java)中,以确保它位于类路径中。我使用getClassLoader(),因为它相对于类路径根而不是当前类进行搜索。我也没有指定任何路径信息,只是文件名。 (见What is the difference between Class.getResource() and ClassLoader.getResource()?

在pom.xml的构建部分,我添加了资源规则,以确保将其复制到目标(在插件规则之后):

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

将所有非源文件复制到目标。

希望有所帮助