我添加到标题的图像不会出现

时间:2012-12-28 09:01:00

标签: html pdf header itext

我正在尝试使用图片创建标头;标题已添加,但标题中缺少图像。我的应用程序部署在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);
    }

  }

1 个答案:

答案 0 :(得分:1)

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

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

您应该使用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