#2074 closed Fehler (wont-fix)
browser handling angebotener Datei "Druck via pdf"
| Erstellt von: | wulf@… | Verantwortlicher: | m.bunkus@… |
|---|---|---|---|
| Priorität: | normal | Meilenstein: | 3.0.0 |
| Komponente: | kivitendo ERP | Version: | 3.0.0 beta |
| Schweregrad: | normal | Stichworte: | |
| Beobachter: |
Beschreibung
Beim Drucken als pdf wird die zum Download angebotene Datei als application/pdf angeboten, troztdem muss man die Aktion im Browser bestaetigen, auch wenn automatisches Handling konfiguriert ist. Beim Download der pdf-dokumention funktioniert es sauber (ungefragtes Ausfuehren der zum Content-Type hinterlegten aktion).
Getestet mit firefox (iceweasel 10.0.10).
Habe mal die beiden Header verglichen, denn damit muss es ja zusammen
haengen, komme aber nicht dahinter. Jemand eine Idee?
HTTP Header beim "drucken auf den Bildschirm -- pdf"
https://demo.kivitendo.de/beta/oe.pl POST /beta/oe.pl HTTP/1.1 Host: demo.kivitendo.de User-Agent: Mozilla/5.0 (X11; Linux i686; rv:10.0.10) Gecko/20100101 Firefox/10.0.10 Iceweasel/10.0.10 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.7,de;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Referer: https://demo.kivitendo.de/beta/oe.pl Cookie: kivitendo_beta_session_id=90b2fe7276f28fb90330d3202bff510a; kivitendo_beta_session_id=90b2fe7276f28fb90330d3202bff510a; maintab=0 Content-Type: application/x-www-form-urlencoded Content-Length: 2618 id=1083&action=dispatcher&type=sales_order&vc=customer&formname=sales_order&media=screen&format=pdf&proforma=0&queued=&printed=&emailed=&title=Auftrag+bearbeiten&creditlimit=1000.00000&creditremaining=1000&tradediscount=0.05&business=Endkunde%2C+Firma&max_dunning_level=&dunning_amount=&shiptoname=&shiptostreet=&shiptozipcode=&shiptocity=&shiptocountry=&shiptocontact=&shiptophone=&shiptofax=&shiptodepartment_1=&shiptodepartment_2=&shiptoemail=&shiptocp_gender=&message=&email=info%40advancd-pc.de&subject=&cc=&bcc=&taxpart=&taxservice=&taxaccounts=1776+&cursor_fokus=&customer_id=418&oldcustomer=Advancd+PC--418&selectcustomer=1&forex=1&exchangerate=1&customer_klass=0&1776_rate=0.19000&1776_description=Umsatzsteuer&convert_from_oe_ids=&follow_up_trans_id_1=1083&follow_up_trans_type_1=sales_order&follow_up_trans_info_1=1004+%28Advancd+PC%29&follow_up_rowcount=1&customer=Advancd+PC--418&cp_id=&taxzone_id=0&department_id=¤cy=EUR&shippingpoint=&shipvia=&transaction_description=&delivered=1&employee_id=376&salesman_id=376&ordnumber=1004&quonumber=&cusordnumber=&transdate=19.11.2012&reqdate=20.11.2012&globalproject_id=&runningnumber_1=1&partnumber_1=test&description_1=test&qty_1=0%2C00&price_factor_id_1=&unit_1=ml&sellprice_1=0%2C00&discount_1=0&unit_old_1=ml&price_new_1=0&orderitems_id_1=&bo_1=&pricegroup_old_1=&price_old_1=0&id_1=1081&inventory_accno_1=3980&bin_1=&partsgroup_1=&partnotes_1=&income_accno_1=8400&expense_accno_1=3400&listprice_1=0%2C00&assembly_1=0&taxaccounts_1=1776&ordnumber_1=1004&transdate_1=19.11.2012&cusordnumber_1=&longdescription_1=&basefactor_1=&marge_absolut_1=0%2C00&marge_percent_1=0%2C00&marge_price_factor_1=&serialnumber_1=&project_id_1=&reqdate_1=&lastcost_1=0%2C00&runningnumber_2=2&partnumber_2=&description_2=&qty_2=0%2C00&price_factor_id_2=&unit_2=ml&sellprice_2=0%2C00&discount_2=0&unit_old_2=&price_new_2=0&orderitems_id_2=&bo_2=&pricegroup_old_2=&price_old_2=0&id_2=&inventory_accno_2=&bin_2=&partsgroup_2=&partnotes_2=&income_accno_2=&expense_accno_2=&listprice_2=&assembly_2=&taxaccounts_2=&ordnumber_2=&transdate_2=&cusordnumber_2=&longdescription_2=&basefactor_2=&marge_absolut_2=0%2C00&marge_percent_2=0%2C00&marge_price_factor_2=&serialnumber_2=&project_id_2=&reqdate_2=¬es=&intnotes=&payment_id=&periodic_invoices_config=&marge_total=0&marge_percent=&taxincluded_changed_by_user=1&oldinvtotal=0&oldtotalpaid=&formname=sales_order&language_id=&format=pdf&media=screen&printer_id=998&copies=3&action_print=Drucken&action=dispatcher&saved_xyznumber=1004&rowcount=2&callback=oe.pl%3Faction%3Dadd%26type%3Dsales_order%26vc%3Dcustomer&customer_discount=0 HTTP/1.1 200 OK Date: Mon, 19 Nov 2012 11:19:53 GMT Server: Apache/2.2.22 (Ubuntu) Content-Disposition: attachment; filename="Auftragsbestaetigung_1004.pdf" Vary: Accept-Encoding Content-Encoding: gzip Content-Type: application/pdf Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Transfer-Encoding: chunked ----------------------------------------------------------
so ist's richtig Beispiel 'Onlinedemo'
https://demo.kivitendo.de/beta/doc/kivitendo-Dokumentation.pdf GET /beta/doc/kivitendo-Dokumentation.pdf HTTP/1.1 Host: demo.kivitendo.de User-Agent: Mozilla/5.0 (X11; Linux i686; rv:10.0.10) Gecko/20100101 Firefox/10.0.10 Iceweasel/10.0.10 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.7,de;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Referer: https://demo.kivitendo.de/beta/oe.pl Cookie: kivitendo_beta_session_id=90b2fe7276f28fb90330d3202bff510a; kivitendo_beta_session_id=90b2fe7276f28fb90330d3202bff510a; maintab=0 HTTP/1.1 200 OK Date: Mon, 19 Nov 2012 11:21:31 GMT Server: Apache/2.2.22 (Ubuntu) Last-Modified: Sun, 18 Nov 2012 22:11:39 GMT Etag: "a04fd-9cd18-4cecc48f08ddb" Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip Content-Type: application/pdf Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Transfer-Encoding: chunked ----------------------------------------------------------
Getestet unter demo.kivitendo.org/beta kivitendo 3.0.0-beta1-1e3c858
Änderungshistorie (6)
comment:1 Geändert vor 2 Jahren durch wulf@…
- Lösung auf wird-nicht-behoben gesetzt
- Status von new nach closed geändert
comment:2 Geändert vor 2 Jahren durch dakon@…
Ich hätte jetzt im ersten Moment gesagt es liegt an "Content-Disposition: attachment...".
comment:3 Geändert vor 2 Jahren durch m.bunkus@…
Und "content-disposition: attachment" ist, ehrlich gesagt, auch das, was man bei einem POST-Request so haben will. Andernfalls hat der Benutzer keine Möglichkeit, zu entscheiden, was er mit dem PDF macht. Außerdem würde man sonst (mal wieder) beim Speichern nur "oe.pl" als Dateinamen für das PDF angeboten bekommen (so war's in grauer Vorzeit in Lx-Office).
Weiterhin kenne ich Browser, denen die content-disposition irgendwo egal ist.
comment:4 Geändert vor 2 Jahren durch dakon@…
Versuch mal "inline" statt "attachment". Ggf. bekommst du dann beides hin.
comment:5 Geändert vor 2 Jahren durch m.bunkus@…
Als Benutzer hat man auch bei "inline" nicht die Wahl, was man machen will (du kannst nicht "Speichern unter..." wählen, weil das bei einem POST-Request-Button nun mal nicht geht). Im Zweifelsfall wird dann immer das integrierte Plugin aufgerufen.
Wie gesagt, wir hatten das schon alles, und es war nicht schön. Und wurde auch damals als Bug angemeckert.
Ja, andere Webseiten machen das anders. Wiederum andere so wie wir. Es gibt hier kein "richtig" und "falsch", weswegen wir es auch nicht mutwillig ändern werden.
comment:6 Geändert vor 2 Jahren durch wulf@…
dakon@… wrote:
Versuch mal "inline" statt "attachment". Ggf. bekommst du dann beides hin.
jup das tut. Taugt zwar nicht fuer die Allgemeinheit, kann ich mir aber hier fuer den konkreten Fall patchen. Danke fuer den Tip.
diff --git a/SL/Form.pm b/SL/Form.pm
index bcad7d2..1379d0d 100644
--- a/SL/Form.pm
+++ b/SL/Form.pm
@@ -1211,7 +1211,7 @@ sub parse_template {
# launch application
print qq|Content-Type: | . $template->get_mime_type() . qq|
-Content-Disposition: attachment; filename="$self->{attachment_filename}"
+Content-Disposition: inline; filename="$self->{attachment_filename}"
Content-Length: $numbytes
|;

ok mosu sagt, ist post vers. get
Kann man nix machen ...