7

Flyingsaucer'ı kullanarak PDF'ye dönüştürdüğüm bir xhtml belgesine sahibim. Xhtml, inline base64 kodlu görüntülere sahip çeşitli etiketlere sahiptir. Xhtml'nin kaynağı dinamiktir, bu nedenle görüntü etiketlerinin bulunduğu yer değişebilir.Gömülü görüntüyü html'den Flying-Saucer kullanarak PDF'ye aktar

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAagAAAEuCAYAAADbW4YFAAAgAElEQVR4Aex9CYBdRZ ... 

bir tarayıcıda html bakmak, görüntü belirir doğru, ancak, img eleman nihai PDF render almaz: Bu etiket neye benzediğini bir örnektir. PDF'yi oluşturmak için bunu nasıl oluşturuyorum.

ITextRenderer renderer = new ITextRenderer(); 
renderer.setDocument(builder.parse(source), ""); 
renderer.layout(); 
renderer.createPDF(response.getOutputStream(),true); 

Bunu gerçekleştirebilmek için hangi yaklaşımı uygulamalıyım? this posting'u gördüm, ancak satır içi görüntüleri kullanıyorum, böylece Edd'nin çözümünü kullanarak bunu nasıl başarabileceğimi göremiyorum. peşin

Teşekkür

+0

Özellik özelliği bulunmaktadır resimler için veri-url'i doğrudan Uçan Dairede çalışır: https://code.google.com/p/flying-saucer/issues/detail?id=202 – Thilo

cevap

7

Evet, burada verilen yaklaşımı kullanabilirsiniz: Edd sahiptir Render image from servlet in flyingsaucer generated pdf

:

 InputStream input = null; 
     try { 
      input = ...; 
      byte[] bytes = IOUtils.toByteArray(input); 
      Image image = Image.getInstance(bytes); 
görüntü uzaktaki bir kaynaktan geliyor Edd örneğinde

(o input = ...; ile bu bitin üzerinden atlar. Durumunuzda sadece Base64 kodlu verilerinizden okumak istediğinizde (base64,'dan sonraki metin. İkili veriyi byte[] veya Stream'e almak için ilk önce Base64 decoder kullanın, daha sonra görüntüyü baytlarınızdan oluşturmak için Java ImageIO kullanabilirsiniz. PDF içine görüntü elde etmek için Edd en yaklaşımı takip Kudos Edd burada (kesin upvote!)

+2

Bu yaklaşımı kullanarak çalışmayı başarabildim. Teşekkürler! –

4

uçan daire verileri desteklemektedir:...

: doğal protokol yapmanız gereken tek şey kayıt bir protokol işleyicisi
-Djava.protocol.handler.pkgs=org.xhtmlrenderer.protocols 

Neler için servlet ihtiyaç duyulmamaktadır

+2

Protokol işleyicilerinin nasıl kaydedildiğine dair bir bağlantınız var mı? –

+0

Efsane - teşekkürler! – rodnaph

İlgili konular