質問編集履歴

4

文章を修正

2021/08/30 04:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,20 @@
1
1
  質問内容 「複数の画像ファイルを一つのpdfファイルにまとめて出力したい。」
2
2
 
3
- たいのですがどうすればいいでしょうか?参考サイトでは二つのpdfファイルを一つのpdfにめてのでちょっとやりたいこととは違いま。またリファレンスサイトは仕様書のようになっておりどうやって見ればいいかわかりません。どうすればいいのでしょうか?
3
+ これやりたいのですが。提示画像コメン部内部のコードなのすが**画像ファイルを読み込んでそれをpageに入れて最後にそれぞれの空のページに画像を焼き付けて一つのpdfファイル保存する**という動作をしたいのですどうればいいかわかりません。
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
4
-
17
+ 参考サイト: https://weblabo.oscasierra.net/java-pdfbox-3/
5
-
6
-
7
-
8
18
 
9
19
  参考サイト: https://pdfbox.apache.org/docs/2.0.8/javadocs/
10
20
 
@@ -24,6 +34,22 @@
24
34
 
25
35
  import java.io.IOException;
26
36
 
37
+ import java.io.File;
38
+
39
+ import javax.imageio.ImageIO;
40
+
41
+ import java.awt.image.BufferedImage;
42
+
43
+
44
+
45
+ import java.util.ArrayList;
46
+
47
+ import java.util.Scanner;
48
+
49
+ import java.util.List;
50
+
51
+
52
+
27
53
 
28
54
 
29
55
  import org.apache.pdfbox.pdmodel.PDDocument;
@@ -44,69 +70,253 @@
44
70
 
45
71
  {
46
72
 
73
+ //画像クラス
74
+
75
+ static class Image
76
+
77
+ {
78
+
79
+ //コンストラクタ
80
+
81
+ public Image(int w,int h,String n)
82
+
83
+ {
84
+
85
+ width = w;
86
+
87
+ height = h;
88
+
89
+ path = n;
90
+
91
+ }
92
+
93
+
94
+
95
+
96
+
97
+ public int width; //横
98
+
99
+ public int height; //縦
100
+
101
+ public String path; //パス
102
+
103
+ }
104
+
105
+
106
+
107
+ //ファイルの画像パスを取得
108
+
109
+ static public void GetDirectory(File dir,List<Image> list)
110
+
111
+ {
112
+
113
+ for(int i = 0; i < dir.listFiles().length; i++)
114
+
115
+ {
116
+
117
+
118
+
119
+ try
120
+
121
+ {
122
+
123
+ BufferedImage b = ImageIO.read(dir.listFiles()[i]);
124
+
125
+ Image img = new Image(b.getWidth(),b.getHeight(),dir.listFiles()[i].getPath());
126
+
127
+
128
+
129
+ list.add(img);
130
+
131
+
132
+
133
+ b = null;
134
+
135
+ }
136
+
137
+ catch (IOException e)
138
+
139
+ {
140
+
141
+ e.printStackTrace();
142
+
143
+ }
144
+
145
+
146
+
147
+
148
+
149
+ System.out.println("###################################");
150
+
151
+ System.out.println("Width: " + list.get(list.size() -1).width);
152
+
153
+ System.out.println("Height: " + list.get(list.size() -1).height);
154
+
155
+ System.out.println("Path: " + list.get(list.size() -1).path);
156
+
157
+ System.out.println("###################################\n");
158
+
159
+ }
160
+
161
+ }
162
+
163
+
164
+
165
+ //PDFファイルを生成
166
+
167
+ static void GeneratePDF(List<Image> list,List<String> pathList)
168
+
169
+ {
170
+
171
+ try
172
+
173
+ {
174
+
175
+ PDDocument document = new PDDocument(); //ドキュメント
176
+
177
+ List<PDPage> page = new ArrayList<>(); //ページ
178
+
179
+
180
+
181
+ for(Image image : list)
182
+
183
+ {
184
+
185
+
186
+
187
+
188
+
189
+ PDRectangle rec = new PDRectangle();
190
+
191
+ rec.setUpperRightX(0);
192
+
193
+ rec.setUpperRightY(0);
194
+
195
+ rec.setLowerLeftX(image.width);
196
+
197
+ rec.setLowerLeftY(image.height);
198
+
199
+
200
+
201
+ page.add(new PDPage(rec));
202
+
203
+ document.addPage(page.get(page.size() -1));
204
+
205
+ }
206
+
207
+
208
+
209
+
210
+
211
+ ////////////////////////////////////////////////////////////////////////////////////////////
212
+
213
+ for(int i = 0; i < list.size(); i++)
214
+
215
+ {
216
+
217
+
218
+
219
+ PDImageXObject xImage = PDImageXObject(document);
220
+
221
+ PDPageContentStream stream = new PDPageContentStream(document,page.get(i));
222
+
223
+ stream.drawImage(xImage, 0,0);
224
+
225
+
226
+
227
+
228
+
229
+ stream.close();
230
+
231
+ }
232
+
233
+ ////////////////////////////////////////////////////////////////////////////////////////////
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+ document.save("test.pdf");
244
+
245
+
246
+
247
+ document.close();
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+ }catch(IOException e)
262
+
263
+ {
264
+
265
+ e.printStackTrace();
266
+
267
+ }
268
+
269
+ }
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+ private static PDImageXObject PDImageXObject(PDDocument document) {
278
+
279
+ // TODO Auto-generated method stub
280
+
281
+ return null;
282
+
283
+ }
284
+
285
+
286
+
47
- public static void main(String args[])
287
+ public static void main(String args[])
48
288
 
49
289
  {
50
290
 
51
- try
52
-
53
- {
54
-
55
- PDDocument document = new PDDocument();
56
-
57
-
58
-
59
- PDRectangle rec = new PDRectangle();
60
-
61
- rec.setUpperRightX(0);
62
-
63
- rec.setUpperRightY(0);
64
-
65
- rec.setLowerLeftX(1000);
66
-
67
- rec.setLowerLeftY(1000);
68
-
69
-
70
-
71
- PDPage page = new PDPage(rec);
291
+ Scanner scanner = new Scanner(System.in);
72
-
73
- document.addPage(page);
292
+
74
-
75
-
76
-
77
- PDImageXObject xImage = PDImageXObject.createFromFile("sample.jpg",document);
78
-
79
- PDPageContentStream stream = new PDPageContentStream(document,page);
293
+ List<Image> imageList = new ArrayList<>();
80
-
81
-
82
-
294
+
295
+
296
+
83
- stream.drawImage(xImage, 100,100);
297
+ File f = new File(scanner.next());
298
+
299
+
300
+
84
-
301
+ GetDirectory(f,imageList); //画像パス読み込み
302
+
303
+
304
+
305
+
306
+
307
+ List<String> fileList = new ArrayList<>();
308
+
309
+ GeneratePDF(imageList,fileList); //PDFファイルを生成
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+
85
- stream.close();
319
+ scanner.close();
86
-
87
- document.save("test.pdf");
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
- }
102
-
103
- catch (IOException e)
104
-
105
- {
106
-
107
- e.printStackTrace();
108
-
109
- }
110
320
 
111
321
  }
112
322
 
@@ -114,8 +324,4 @@
114
324
 
115
325
 
116
326
 
117
-
118
-
119
-
120
-
121
327
  ```

3

文章を修正しました。

2021/08/30 04:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -22,8 +22,6 @@
22
22
 
23
23
 
24
24
 
25
-
26
-
27
25
  import java.io.IOException;
28
26
 
29
27
 
@@ -32,37 +30,79 @@
32
30
 
33
31
  import org.apache.pdfbox.pdmodel.PDPage;
34
32
 
33
+ import org.apache.pdfbox.pdmodel.PDPageContentStream;
35
34
 
35
+ import org.apache.pdfbox.pdmodel.common.PDRectangle;
36
36
 
37
- public class Main {
38
-
39
- public static void main(String args[]) {
37
+ import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
40
-
41
- try {
42
-
43
- // 空のドキュメントオブジェクトを作成します
44
-
45
- PDDocument document = new PDDocument();
46
-
47
- System.out.println("あああ");
48
-
49
- // 新しいページのオブジェクトを作成します
50
-
51
- PDPage page = new PDPage();
52
-
53
- document.addPage(page);
54
38
 
55
39
 
56
40
 
57
- // ドキュメントを保存します
58
41
 
59
- document.save("sample.pdf");
60
42
 
43
+ public class Main
44
+
45
+ {
46
+
47
+ public static void main(String args[])
48
+
49
+ {
50
+
51
+ try
52
+
53
+ {
54
+
55
+ PDDocument document = new PDDocument();
56
+
57
+
58
+
59
+ PDRectangle rec = new PDRectangle();
60
+
61
+ rec.setUpperRightX(0);
62
+
63
+ rec.setUpperRightY(0);
64
+
65
+ rec.setLowerLeftX(1000);
66
+
67
+ rec.setLowerLeftY(1000);
68
+
69
+
70
+
71
+ PDPage page = new PDPage(rec);
72
+
73
+ document.addPage(page);
74
+
75
+
76
+
77
+ PDImageXObject xImage = PDImageXObject.createFromFile("sample.jpg",document);
78
+
79
+ PDPageContentStream stream = new PDPageContentStream(document,page);
80
+
81
+
82
+
83
+ stream.drawImage(xImage, 100,100);
84
+
61
- document.close();
85
+ stream.close();
86
+
87
+ document.save("test.pdf");
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
62
100
 
63
101
  }
64
102
 
65
- catch (IOException e) {
103
+ catch (IOException e)
104
+
105
+ {
66
106
 
67
107
  e.printStackTrace();
68
108
 
@@ -74,4 +114,8 @@
74
114
 
75
115
 
76
116
 
117
+
118
+
119
+
120
+
77
121
  ```

2

文章を修正

2021/08/30 02:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -9,6 +9,10 @@
9
9
  参考サイト: https://pdfbox.apache.org/docs/2.0.8/javadocs/
10
10
 
11
11
  参考サイト: https://gist.github.com/uchicom/bc068b304b5b47b39a8048bc603160ac
12
+
13
+ 参考サイト: https://pdfbox.apache.org/
14
+
15
+
12
16
 
13
17
 
14
18
 

1

文章を修正しました。

2021/08/30 01:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,12 @@
1
1
  質問内容 「複数の画像ファイルを一つのpdfファイルにまとめて出力したい。」
2
2
 
3
- をしたいのですがどうすればいいのでしょうか?参考サイトでは二つのpdfファイルを一つのpdfにまとめているのでちょっとやりたいこととは違います。またリファレンスサイトが出てこっていま。どうすればいいのでしょうか?
3
+ をしたいのですがどうすればいいのでしょうか?参考サイトでは二つのpdfファイルを一つのpdfにまとめているのでちょっとやりたいこととは違います。またリファレンスサイトは仕様書のようにおりどうやって見ればいかわかりせん。どうすればいいのでしょうか?
4
4
 
5
5
 
6
6
 
7
7
 
8
8
 
9
-
9
+ 参考サイト: https://pdfbox.apache.org/docs/2.0.8/javadocs/
10
10
 
11
11
  参考サイト: https://gist.github.com/uchicom/bc068b304b5b47b39a8048bc603160ac
12
12