【问题标题】:iText Add Image to PDF in a web applicationiText 在 Web 应用程序中将图像添加到 PDF
【发布时间】:2012-01-31 20:27:58
【问题描述】:

我正在为朋友发布此消息。他无法从工作中访问 Stackoverflow(第三方 Cookie 似乎被禁用):)

好的,到此为止:

他们有一个 Web 应用程序(JSP/Servlets/Custom Framework),他正在尝试动态生成 PDF。现在他想将图像添加到该 PDF 中。但它不起作用。这是一段代码:

Image image = Image.getInstance("../graphics/caution_sign.gif");

图形文件夹位于父项目 (webcontent/graphics/) 上,这是他们在所有其他位置(在 JSP 中)从该文件夹访问图像的方式。

现在我在另一篇文章中读到,我们需要使用真正的绝对路径来访问图像。但这里的问题是这是一个 POJO,并且无法访问此类中的 servletContext。

PDF 生成正常,但图像不显示,错误是:

C:\Program Files\IBM\SDP\runtimes\base_v7\profiles\was70profile1\..\graphics\caution_sign.gif (The system cannot find the path specified.)

它正在尝试在其他位置查找“图形”文件夹,而不是在 webcontent 文件夹中查找。

希望我的问题很清楚,如果有人可以帮助解决这个问题并帮助解决这个问题,我们将不胜感激

非常感谢

哈里什

【问题讨论】:

  • 这个的调用者可以直接传入根文件夹的路径吗?似乎这将是最简单的。我不是 Java 人,但我在这里看到了一些关于如何从 POJO 获取 HTTPServletRequest 的帖子。 stackoverflow.com/questions/6300812/…

标签: image itext web-applications


【解决方案1】:

他能够使用这段代码解决它。希望这对其他人有帮助。

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

String path = classLoader.getResource("/graphics/caution_sign.gif").getPath();

Image image = Image.getInstance(path);

谢谢

哈里什

【讨论】:

    【解决方案2】:

    以下代码可用于访问 java 类中的图像路径。

    URL imageUrl = getClass().getProtectionDomain().getCodeSource().getLocation();
    Image img=Image.getInstance(imageurl+"../../../some/images/pic.gif");    
    

    【讨论】:

      【解决方案3】:

      与之前解决方案的小变化:

      Step1:下面的代码将返回包含类文件名的类路径

      URL classURL = getClass().getProtectionDomain().getCodeSource().getLocation();
      

      Step2:通过移除类名获取基路径

      String basePath = classURL.getPath().replaceAll("<classname>.class","");
      

      Step3:根据您的项目导航到图片位置

      Image headerLogo = Image.getInstance(basePath+"../../../../../../../images/header_logo.gif");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-19
        • 2010-12-22
        • 2014-08-18
        • 1970-01-01
        • 1970-01-01
        • 2019-03-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多