初めに
pdfBoxを使い、生成したのち、保存しています。
今までは自分の環境で保存できるように組んでいたのですが、ユーザー皆がダウンロードできるよう、保存先を変えようと思いました。
環境
windows10
eclipse
現状
本来は、C:/Users/ユーザー名/Downloads/???.pdf
と、各ユーザーのDownloadsフォルダの中にダウンロードさせたいのですが、環境ごとにユーザー名が変わってしまうため、
Users直下に保存しようとしています。
Java
1try { 2 PDDocument document = new PDDocument(); 3 4 PDPage page = new PDPage(); 5 document.addPage(page); 6 7 File file = new File("C:/Windows/Fonts/msmincho.ttc"); 8 @SuppressWarnings("resource") 9 TrueTypeCollection collection = new TrueTypeCollection(file); 10 PDFont font = PDType0Font.load(document, collection.getFontByName("MS-Mincho"), true); 11 12 PDPageContentStream contentStream = new PDPageContentStream(document, page); 13 contentStream.beginText(); 14 contentStream.setFont(font, 12); 15 contentStream.newLineAtOffset(250, 750); 16 contentStream.setLeading(12); 17 contentStream.showText("貸借証明書"); 18 contentStream.setLeading(12); 19 contentStream.endText(); 20//位置決めをしなおすには、いったんendTextして、またbeginTextしなおせばよい 21 contentStream.beginText(); 22//ページ幅の取得 23 float pagewidth = page.getMediaBox().getWidth(); 24 String text = String.valueOf(cal.get(Calendar.YEAR)) + "/" 25 + String.valueOf(cal.get(Calendar.MONTH) + 1) + "/" + String.valueOf(cal.get(Calendar.DATE)); 26//右寄せ時のテキストx座標計算。この方法だと右端ベタになるので適宜マージンを加える必要あり。 27 contentStream.newLineAtOffset(pagewidth - font.getStringWidth(text)/1000*30, 700); 28 contentStream.showText(text); 29 contentStream.setLeading(12); 30 contentStream.endText(); 31 contentStream.close(); 32 33 document.save("C:/Users/"+try+".pdf"); 34 document.close(); 35 } 36 catch (IOException e) { 37 e.printStackTrace(); 38 }
これを実行すると、
実行結果
java.io.FileNotFoundException: C:\Users\try.pdf (アクセスが拒否されました。)
となってしまいます。
最後に
保存先をUsers直下、またはDownloads直下に置くにはどうすればよいでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。