我可以使用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;
}
我在该文件夹中创建了一个图像文件夹,我有我的图像文件。
答案 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
将所有非源文件复制到目标。
希望有所帮助