package pdfApplication; import java.awt.Color; import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocumentInformation; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDType0Font; import org.apache.pdfbox.pdmodel.font.PDType1Font; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; /* import org.apache.pdfbox.exceptions.COSVisitorException; */ public class HelloPdf { public static void main(String[] args) { PDDocument document = new PDDocument(); PDPage page = new PDPage(PDRectangle.A4); document.addPage(page); PDDocumentInformation pddi= new PDDocumentInformation() ; pddi.setTitle("HelloPDF 2ページPDF生成"); document.setDocumentInformation(pddi); PDFont font=PDType1Font.COURIER; String FontFileName="/usr/share/fonts/truetype/fonts-japanese-gothic.ttf"; // /usr/share/fonts/truetype/fonts-japanese-gothic.ttf --> /etc/alternatives/fonts-japanese-gothic.ttf --> /usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf try { font= PDType0Font.load(document, new File(FontFileName)); PDPageContentStream contentStream = new PDPageContentStream(document,page); contentStream.setNonStrokingColor(Color.RED); contentStream.addRect(40, 650, 260, 50); contentStream.fill(); contentStream.beginText(); // beginText() .... endText() contentStream.setNonStrokingColor(Color.BLACK); contentStream.setFont(font, 12); //fontSize 12 contentStream.showText("+"); contentStream.newLineAtOffset(0, 700); contentStream.showText("Hello World"); contentStream.newLineAtOffset(50, -20); contentStream.setNonStrokingColor(Color.YELLOW); contentStream.showText("font.getName()= " + font.getName()); contentStream.newLineAtOffset(150, -20); contentStream.setNonStrokingColor(Color.BLACK); contentStream.showText("font.getSubType()= " + font.getSubType()); contentStream.newLineAtOffset(-30, -20); contentStream.showText("font.toString()= " + font.toString()); contentStream.newLineAtOffset(-30, -20); contentStream.showText("こんにちわ"); contentStream.newLineAtOffset(-30, -20); contentStream.showText("AAA"); contentStream.newLineAtOffset(0,-20); contentStream.showText("page.getMediaBox().getWidth() = " + page.getMediaBox().getWidth() ); contentStream.newLineAtOffset(0,-20); contentStream.showText("page.getMediaBox().getHeight() = " + page.getMediaBox().getHeight() ); contentStream.endText(); contentStream.moveTo(100, 100); contentStream.lineTo(250, 150); contentStream.setStrokingColor(Color.GREEN); contentStream.setLineWidth(5); contentStream.setLineDashPattern(new float[]{8,4}, 0); contentStream.stroke(); contentStream.setNonStrokingColor(Color.CYAN); contentStream.addRect(150, 160, 10, 20); contentStream.fill(); contentStream.setStrokingColor(Color.BLUE); contentStream.addRect(0, 0, page.getMediaBox().getWidth(), page.getMediaBox().getHeight()); contentStream.stroke(); // 画像オブジェクトを作成する PDImageXObject image = PDImageXObject.createFromFile("duke.png", document); // PDXObjectImage xImage = new PDJpeg(document, new FileInputStream("hogehoge.jpg")); contentStream.drawImage(image, 150, 200, image.getWidth(), image.getHeight()); contentStream.close(); // 2ページ目 page = new PDPage(PDRectangle.A4); document.addPage(page); contentStream = new PDPageContentStream(document, page); contentStream.beginText(); // beginText() .... endText() contentStream.setNonStrokingColor(Color.BLACK); contentStream.setFont(font, 12); //fontSize 12 ;beginText()の後、showText()の前にsetFontは必須 contentStream.newLineAtOffset(50, 700); contentStream.showText("Hello PDF"); contentStream.newLineAtOffset(0, -20); contentStream.showText("2ページ目"); contentStream.endText(); contentStream.drawImage(image, 150, 200, image.getWidth(), image.getHeight()); contentStream.close(); document.save("HelloPdf.pdf"); document.close(); } catch (IOException e) { e.printStackTrace(); } finally{ System.out.println("HelloPdf finished."); } } }