Bilder rauslöschen?

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
kunsti
Beiträge: 64
Registriert: 21.08.2009, 17:36

Bilder rauslöschen?

Beitrag von kunsti » 24.06.2015, 13:25

Hallo,

zur Reduzierung der Dateigröße würde ich gern mein Formular das mit einigen Bildern versehen mit einer Schaltfläche auf Klick um die Bilder reduzieren.

Also nach Betätigen der Schaltfläche werden die Bilder aus dem Dokument quasi gelöscht damit die nachfolgend zu speichernde Datei deutlich kleiner ist.
Gibt es eine solche Möglichkeit?

Danke!

Benutzeravatar
radzmar
Beiträge: 961
Registriert: 26.10.2011, 10:18

Bilder rauslöschen?

Beitrag von radzmar » 24.06.2015, 21:08

Die Bilder können auf 2 Arten in XFA-Formulare eingebunden sein.
1. Wenn "Bilddaten einbetten" für ein Bildfeld aktiviert ist, wird das Bild als Base64-kodierter String direkt in der XML-Quelle gespeichert.
2. Wenn das Häkchen nicht aktiviert ist, wird das Bild als als Stream direkt im PDF gespeichert.

Die 2. Variante führt zu einer wesentlich kleineren Datei, denn der Stream braucht weniger Platz als der Base64-Code und ein mehrfach verwendetes Bild wird nur 1 mal im PDF gespeichert, was bei Variante 1 nicht der Fall ist.

Die verwendeten Bilder sollten vorab schon so klein wie möglich gestaltet werden.
Meist werden utopische Auflösungen verwenden, die dann letztlich nur runterskaliert werden und unnötig Platz brauchen.
Z.B. für ein Bild in der Größe 5 x 4 cm im Formular reicht ein Bild mit 590 x 472 Pixel aus, weil das Bild dann immer noch mit 300 dpi (= 118 Punkte je cm) auflöst.

Naben den Bildern sind aber auch die Fonts Schuld an riesigen Dateien.
Wenn hier z.B. eh nur Arial oder Myriad Pro verwendet wird, muss man die Schriften gar nicht einbetten, weil der Adobe Reader die eh mitbringt.

spadl
Beiträge: 1
Registriert: 15.01.2014, 14:51

Re: Bilder rauslöschen?

Beitrag von spadl » 20.03.2019, 10:03

hallo zusammen,

ich würde das Thema gerne nochmal aufgreifen.
Wenn ich bei einem Bildfeld ein Bild zur Laufzeit einfüge, dann macht es bei der Dateigröße keinen Unterschied, ob ich der Formularerstellung den Haken bei "Bilddaten einbetten" gesetzt habe oder nicht. Die Dateigröße ist exakt die gleiche.
Mache ich da was falsch, oder wird beim Einfügen zur Laufzeit das Bild "automatisch" eingebettet. Wenn ja, wie kann ich das verhindern (oder ändern)?

Hintergrund der Frage ist, ich hab ein Formular mit mehreren Bildfeldern, die zur Laufzeit befüllt werden müssen. Die Dateigröße "explodiert" dabei leider und das Formular ist kaum noch händelbar.

Anbei zwei Beispiele mit den beiden Varianten.

Danke schon mal für eventuelle Rückmeldungen

Christian
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
radzmar
Beiträge: 961
Registriert: 26.10.2011, 10:18

Re: Bilder rauslöschen?

Beitrag von radzmar » 29.04.2019, 21:26

Das Einbetten gilt nur für Bilder des Templates, also der Vorlage, aufgrund derer der PDF-Viewer dann später an Formular erstellt. Bilder die zur Laufzeit in Bildfelder importiert werden, werden immer Base64-codiert unter xfa.dataset.data gespeichert.

In deinem Beispiel ohne Einbetten sieht das in der JavaScript-Konsole dann so aus (die Bilddaten hab ich mal reduziert, wären sonst um die 400 Zeilen:

Code: Alles auswählen

this.xfa.data.saveXML("pretty"); // Dataset abrufen

<?xml version="1.0" encoding="UTF-8"?>
<xfa:data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
   <Formular1>
      <Bildfeld1 xfa:contentType="image/png" href="">iVBORw0KGgoAAAANSUhEUgAABQEAAACPCAIAAADFmoo0AAAAAXNSR0IArs4c6QAAAARnQU1BAACx
…
</Bildfeld1>
   </Formular1>
</xfa:data>
Da Base64 nicht gut komprimiert tragen Bilder generell ganz schön fett auf. Wenn man keine gigantischen Dateien haben will, muss man die Nutzer an die Leine nehmen und die Importgröße der Bilder beschränken. Wie das gehen kann, kann man hier nachlesen: https://thelivecycle.blogspot.com/2009/ ... image.html

Antworten