【问题标题】:The image I add to a header doesn't appear我添加到标题的图像没有出现
【发布时间】:2012-12-28 09:00:59
【问题描述】:

我正在尝试创建带有图像的标题;标头已添加,但标头中缺少图像。我的应用程序部署在 Oracle Weblogic 服务器上(使用 Java EE 和 Hibernate)。

我正在尝试创建这样的图像。 getImage(seasonalFilter.getPictureFileId()).getAbsolutePath()。图片路径是这样的:/tmp/6461346546165461313_65464.jpg.

请注意,我想在标题中的图像添加文本(对于每个页面)。

public File convertHtmlToPdf(String JSONString, ExportQueryTypeDTO queryType, String htmlText, ExportTypeDTO type) throws VedStatException {
    try {
      File retFile = null;
      FilterDTO filter = null;
      HashMap<Object, Object> properties = new HashMap<Object, Object>(queryType.getHashMap());
      filter = JSONCoder.decodeSeasonalFilterDTO(JSONString);
      DateFormat formatter = new SimpleDateFormat("yyyy_MM_dd__HH_mm");
      //logger.debug("<<<<<<   HTML TEXT: " + htmlText + " >>>>>>>>>>>>>>>>");
      StringBuilder tmpFileName = new StringBuilder();
      tmpFileName.append(formatter.format(new Date()));
      retFile = File.createTempFile(tmpFileName.toString(), type.getSuffix());
      OutputStream out = new FileOutputStream(retFile);
      com.lowagie.text.Document document = new com.lowagie.text.Document(com.lowagie.text.PageSize.LETTER);
      com.lowagie.text.pdf.PdfWriter pdfWriter = com.lowagie.text.pdf.PdfWriter.getInstance(document, out);
      document.open();
      com.lowagie.text.html.simpleparser.HTMLWorker htmlWorker = new com.lowagie.text.html.simpleparser.HTMLWorker(document);
      String str = htmlText.replaceAll("ű", "&ucirc;").replaceAll("ő", "&otilde;").replaceAll("Ő", "&Otilde;").replaceAll("Ű", "&Ucirc;");
      htmlWorker.parse(new StringReader(str));
      if (filter instanceof SeasonalFilterDTO) {
        SeasonalFilterDTO seasonalFilter = (SeasonalFilterDTO) filter;
        if (seasonalFilter.getPictureFileId() != null) {
          logger.debug("Image absolutePath: " + getImage(seasonalFilter.getPictureFileId()).getAbsolutePath());
          Image logo = Image.getInstance(getImage(seasonalFilter.getPictureFileId()).getAbsolutePath());
          logo.setAlignment(Image.MIDDLE);
          logo.setAbsolutePosition(0, 0);
          logo.scalePercent(100);
          Chunk chunk = new Chunk(logo, 0, 0);
          HeaderFooter header = new HeaderFooter(new Phrase(chunk), true);
          header.setBorder(Rectangle.NO_BORDER);
          document.setHeader(header);
        }
      }
      document.close();

      return retFile;
    } catch (Exception e) {
      throw new VedStatException(e);
    }

  }

【问题讨论】:

  • 请考虑添加缺少图像的示例 PDF。由于您使用的是古老的 iText 版本(仍在 com.lowagie 包结构中),因此在当前 iText 环境中运行时,代码可能无法重现该问题。如果您提供了 PDF,我们可以检查图像是否在其中并且只是不可见,或者是否根本没有图像。

标签: html pdf header itext


【解决方案1】:

我真的不喜欢你的虚假指控,即 “每个教程都基于 C:\imagelocation\dsadsa.jpg”

我是两本书和许多关于 iText 的教程的作者,我知道你所说的没有任何意义。看看我的名字:“Bruno Lowagie”。您在代码中使用了 my 名称,所以当我说您完全错误时请相信我。

您应该使用XML Worker,而不是 HTMLWorker。 HTMLWorker 不再受支持,并且可能会在不久的将来从 iText 中删除。

我看到您也在使用 HeaderFooter 类。这个类在几年前就被删除了。请查看较新的示例:http://www.itextpdf.com/themes/keyword.php?id=221

这些示例是用 Java 编写的;如需C#版本,请查找对应的C# examples in the SVN repository

关于图片,您可能想阅读chapter 10 of my book

最后:请阅读http://lowagie.com/itext2

【讨论】:

  • 嗨布鲁诺,我没有下载,没有将你的包导入我们的项目,我们只是继续其他公司的项目,以它结束。我们有 407 MB 的项目(库 + 代码)。在项目中。属性 iText 包含在 JasperReports 库中。我的工作是使用现有库将文本和图像添加到每个页面的标题中。
  • 我看不出这有什么关系。您使用的是过时的 iText 版本。要么升级并遵循文档,要么使用 unsupported 版本自行解决问题。在后一种情况下:请不要责怪文档。我的建议:优秀的程序员编写面向未来的代码。编写未来证明代码不包括使用其作者不再认可的库版本。
猜你喜欢
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 2014-07-21
  • 1970-01-01
相关资源
最近更新 更多