我正在尝试使用图片创建标头;标题已添加,但标题中缺少图像。我的应用程序部署在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("ű", "û").replaceAll("ő", "õ").replaceAll("Ő", "Õ").replaceAll("Ű", "Û");
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);
}
}
答案 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。