質問編集履歴

4

修正

2019/11/21 12:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  下記のようなコードを書いているのですが、safariでpdf出力できる時とできないときがあます。
2
2
 
3
- 調べてみたところ、下記の3つのどれかが原因のようですが、よくわかりません。
3
+ 調べてみたところ、下記の4つのどれかが原因のようですが、よくわかりません。
4
4
 
5
5
  解決方法を教えていただけないでしょうか?
6
6
 

3

追加

2019/11/21 12:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- 1、`safari > preferences > privacy > archive.orgの削除`
9
+ 1、 safari > preferences > privacy > archive.orgの削除
10
10
 
11
11
  2、 safariでのパースエラー
12
12
 

2

追加

2019/11/21 12:52

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- laravelのpdf出力nappyを使っているのですが、pdf出力できる時とできない時があり
1
+ laravelのpdf出力nappyを使っているのですが、iphoneのsafariでkCFErrorDomainCFNetwork error 303がてしまい、出力できません
test CHANGED
@@ -1,10 +1,24 @@
1
- 下記のようなコードを書いているのですが、pdf出力できる時とできないときがあり、原因がわかりせん
1
+ 下記のようなコードを書いているのですが、safariでpdf出力できる時とできないときがあま
2
2
 
3
- 最後のlog出力もできいるのですが、フロントにはエラーが飛でしまいます
3
+ 調べみたところ、下記3つのどれかが原因のようですが、よくわかりません。
4
+
5
+ 解決方法を教えていただけないでしょうか?
6
+
7
+
8
+
9
+ 1、`safari > preferences > privacy > archive.orgの削除`
10
+
11
+ 2、 safariでのパースエラー
12
+
13
+ 3、 chunkでデータを送る際に、EOFの前の空行がない
14
+
15
+ 4、 nginxのhttp2_max_field_sizeが小さい
4
16
 
5
17
 
6
18
 
7
19
 
20
+
21
+ 下記がコードになります。
8
22
 
9
23
  ```
10
24
 
@@ -16,9 +30,23 @@
16
30
 
17
31
  $pdf->setOption('encoding', 'utf-8');
18
32
 
19
- Log::debug('-----hoge-----');
33
+ $res = $pdf->inline();
20
34
 
21
- return $pdf->inline()
35
+ return new Response(
36
+
37
+ $res,
38
+
39
+ 200,
40
+
41
+ array(
42
+
43
+ 'Content-Type' => 'application/pdf',
44
+
45
+ 'Content-Disposition' => 'attachment; filename="file.pdf"'
46
+
47
+ )
48
+
49
+ );
22
50
 
23
51
  ```
24
52
 

1

jsの追加

2019/11/21 12:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -21,3 +21,67 @@
21
21
  return $pdf->inline()
22
22
 
23
23
  ```
24
+
25
+
26
+
27
+ フロントはvueで実装しており、apiと受け取った後の表示コードになります。
28
+
29
+ ```
30
+
31
+ // api
32
+
33
+
34
+
35
+ axios.get('/api/pdf', { responseType: 'arraybuffer' }).then(
36
+
37
+ res => {
38
+
39
+ console.log('get pdf res = ', res)
40
+
41
+ context.commit('setPdf', res.data)
42
+
43
+ }
44
+
45
+ ).catch(
46
+
47
+ async err => {
48
+
49
+ console.log('err get pdf = ', err)
50
+
51
+ context.commit('common/setError', 'PDF出力が失敗しました', { root: true })
52
+
53
+ }
54
+
55
+ )
56
+
57
+ ```
58
+
59
+
60
+
61
+
62
+
63
+ ```
64
+
65
+ // 表示
66
+
67
+
68
+
69
+ const newBlob = new Blob([newVal], {type:'application/pdf'})
70
+
71
+ if(window.navigator.msSaveOrOpenBlob) {
72
+
73
+ console.log('------- in ')
74
+
75
+ window.navigator.msSaveOrOpenBlob(newBlob, 'myself.pdf');
76
+
77
+ }else{
78
+
79
+ console.log('pdf ------- in createObject URL')
80
+
81
+ const url = URL.createObjectURL(newBlob)
82
+
83
+ window.open(url, "_blank");
84
+
85
+ }
86
+
87
+ ```