2013-07-12 11 views
1

Изображение не отображается корректно в моем PDF (iText), когда я получаю доступ к моему Java-коду. Отображается частично с первой половиной изображения, отображаемым правильно, а оставшаяся половина отображается с большим количеством строк поверх изображения. (изображения, кажется, загружаются очень медленно, когда другой текст появляется быстро).iText Изображение в формате PDF частично отображено

Я использую jar-файл версии iTextPdf версии 5.4.0, и я получаю доступ к изображению через URL-адрес (получить URL-адрес изображения) в своем java-коде.

Пожалуйста, дайте мне знать, почему это происходит. Если вам нужна дополнительная информация, сообщите мне, и я могу предоставить.

Заранее благодарим за любую помощь.

+1

Как знать, почему это происходит? Вы не применяли исходный код, ни один образец PDF, ничего не нужно. – mkl

+0

Мы решили аналогичную проблему с GIF в 5.4.1: http://itextpdf.com/history/?branch=54&node=541 См. 'GifImage': исправлена ​​удаленная загрузка изображений. GIF, хранящиеся на удаленном сервере, не всегда были полностью загружены (конечно: если вы не говорите об изображении GIF, трудно догадаться, что не так). –

+0

Спасибо. Попробуй это. Но когда я пытаюсь загрузить образец, PDF Stackoverflow говорит, что мне нужно как минимум 10 репутации для отправки изображений. Как загрузить образец PDF? – user1650179

ответ

0

Я также столкнулся с той же проблемой, позже мы решили. Пожалуйста, найдите приведенный ниже код, надейтесь, что это поможет вам.

HTML FILE


<html> 
<body> 
<font color="green">Test</font><br/> 
<table> 
<tr><td><img src="Desert.jpg" height="300" width="300"/></td></tr> 
</table> 
</body> 
</html> 

Java Файл


class PageWithRectangle extends PdfPageEventHelper 
{ 
     public void onEndPage(PdfWriter writer, Document document) 
     { 
      PdfContentByte cb = writer.getDirectContent(); 
      Rectangle pageSize = writer.getPageSize(); 
      cb.rectangle(pageSize.getLeft() + 3, pageSize.getBottom() + 3, 
      pageSize.getWidth() - 6, pageSize.getHeight() - 6); 
      cb.stroke(); 
     } 
} 
public class pdfTest { 
    private static String getUrlSource(String url) throws IOException { 
     URL webpage = new URL(url); 
     URLConnection yc = webpage.openConnection(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(
       yc.getInputStream(), "UTF-8")); 
     String inputLine; 

     StringBuilder a = new StringBuilder(); 
     while ((inputLine = in.readLine()) != null) 
     { 
      a.append(inputLine); 
      System.out.println(inputLine); 
      } 
     in.close(); 
     return a.toString(); 
    } 
    public static void main(String[] args) { 
     try { 
      File baseDir = new File("."); 
      File outDir = new File(baseDir, "out"); 
      outDir.mkdirs(); 
      String k = getUrlSource("file:\\C:\\test.html"); 
      OutputStream file = new FileOutputStream(new File(outDir+"/Test.pdf")); 
      Document document = new Document(); 
      PdfWriter writer = PdfWriter.getInstance(document, file); 
      writer.setPageEvent(new PageWithRectangle()); 
      document.open(); 
      HTMLWorker htmlWorker = new HTMLWorker(document); 
      htmlWorker.parse(new StringReader(k)); 
      document.close(); 
      file.close(); 
      System.out.println("\nSuccess"); 
     } catch (Exception e) { 

      e.printStackTrace(); 
     } 
    } 

    } 

My Old HTML код (Дал неправильно PDF, а генерировать через Java)

<html> 
<body> 
<font color="green">Test</font><br/> 
<img src="Desert.jpg" height="300" width="300"/> 
</body> 
</html> 

Решение: дать тег изображения под тег таблицы

С уважением, Praveen

0

Я также испытал это проблемы с использованием IText 5.5.5 и найденные проблемы, затрагивающей GIF с набором альфа-каналом , Удалите альфа или попробуйте сохранить как jpg. Это сработало для меня.

Смежные вопросы