質問内容 「複数の画像ファイルを一つのpdfファイルにまとめて出力したい。」
これをやりたいのですが。提示画像のコメント部内部のコードなのですが画像ファイルを読み込んでそれをpageに入れて最後にそれぞれの空のページに画像を焼き付けて一つのpdfファイルに保存するという動作をしたいのですがどうすればいいかわかりません。
参考サイト: https://weblabo.oscasierra.net/java-pdfbox-3/
参考サイト: https://pdfbox.apache.org/docs/2.0.8/javadocs/
参考サイト: https://gist.github.com/uchicom/bc068b304b5b47b39a8048bc603160ac
参考サイト: https://pdfbox.apache.org/
java
1package sample; 2 3import java.io.IOException; 4import java.io.File; 5import javax.imageio.ImageIO; 6import java.awt.image.BufferedImage; 7 8import java.util.ArrayList; 9import java.util.Scanner; 10import java.util.List; 11 12 13import org.apache.pdfbox.pdmodel.PDDocument; 14import org.apache.pdfbox.pdmodel.PDPage; 15import org.apache.pdfbox.pdmodel.PDPageContentStream; 16import org.apache.pdfbox.pdmodel.common.PDRectangle; 17import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; 18 19 20public class Main 21{ 22 //画像クラス 23 static class Image 24 { 25 //コンストラクタ 26 public Image(int w,int h,String n) 27 { 28 width = w; 29 height = h; 30 path = n; 31 } 32 33 34 public int width; //横 35 public int height; //縦 36 public String path; //パス 37 } 38 39 //ファイルの画像パスを取得 40 static public void GetDirectory(File dir,List<Image> list) 41 { 42 for(int i = 0; i < dir.listFiles().length; i++) 43 { 44 45 try 46 { 47 BufferedImage b = ImageIO.read(dir.listFiles()[i]); 48 Image img = new Image(b.getWidth(),b.getHeight(),dir.listFiles()[i].getPath()); 49 50 list.add(img); 51 52 b = null; 53 } 54 catch (IOException e) 55 { 56 e.printStackTrace(); 57 } 58 59 60 System.out.println("###################################"); 61 System.out.println("Width: " + list.get(list.size() -1).width); 62 System.out.println("Height: " + list.get(list.size() -1).height); 63 System.out.println("Path: " + list.get(list.size() -1).path); 64 System.out.println("###################################\n"); 65 } 66 } 67 68 //PDFファイルを生成 69 static void GeneratePDF(List<Image> list,List<String> pathList) 70 { 71 try 72 { 73 PDDocument document = new PDDocument(); //ドキュメント 74 List<PDPage> page = new ArrayList<>(); //ページ 75 76 for(Image image : list) 77 { 78 79 80 PDRectangle rec = new PDRectangle(); 81 rec.setUpperRightX(0); 82 rec.setUpperRightY(0); 83 rec.setLowerLeftX(image.width); 84 rec.setLowerLeftY(image.height); 85 86 page.add(new PDPage(rec)); 87 document.addPage(page.get(page.size() -1)); 88 } 89 90 91 //////////////////////////////////////////////////////////////////////////////////////////// 92 for(int i = 0; i < list.size(); i++) 93 { 94 95 PDImageXObject xImage = PDImageXObject(document); 96 PDPageContentStream stream = new PDPageContentStream(document,page.get(i)); 97 stream.drawImage(xImage, 0,0); 98 99 100 stream.close(); 101 } 102 //////////////////////////////////////////////////////////////////////////////////////////// 103 104 105 106 107 document.save("test.pdf"); 108 109 document.close(); 110 111 112 113 114 115 116 }catch(IOException e) 117 { 118 e.printStackTrace(); 119 } 120 } 121 122 123 124 private static PDImageXObject PDImageXObject(PDDocument document) { 125 // TODO Auto-generated method stub 126 return null; 127 } 128 129public static void main(String args[]) 130 { 131 Scanner scanner = new Scanner(System.in); 132 List<Image> imageList = new ArrayList<>(); 133 134 File f = new File(scanner.next()); 135 136 GetDirectory(f,imageList); //画像パス読み込み 137 138 139 List<String> fileList = new ArrayList<>(); 140 GeneratePDF(imageList,fileList); //PDFファイルを生成 141 142 143 144 145 scanner.close(); 146 } 147} 148
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/30 02:34
退会済みユーザー
2021/08/30 02:34
2021/08/30 03:10
退会済みユーザー
2021/08/30 04:08