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;

public class meshPDF {

	public static void main(String[] args) {
		System.out.println("Hello");
		PDDocument document = new PDDocument();
		PDPage page = new PDPage(PDRectangle.A4);
		document.addPage(page);
		PDDocumentInformation pddi= new PDDocumentInformation() ;
		pddi.setTitle("メッシュテンプレート");
		document.setDocumentInformation(pddi);

		PDFont font=PDType1Font.COURIER;
		int	fontSize=12;
		String FontFileName="/usr/share/fonts/truetype/fonts-japanese-gothic.ttf";
		
		try {
			font= PDType0Font.load(document, new File(FontFileName));
			PDPageContentStream contentStream = new PDPageContentStream(document,page);

			contentStream.setStrokingColor(Color.LIGHT_GRAY);
			contentStream.setLineWidth(1);
			contentStream.setLineDashPattern(new float[]{4,2}, 0);			
			for(int j=0; j<page.getMediaBox().getHeight(); j+=20){
				contentStream.moveTo(0, j);
				contentStream.lineTo(page.getMediaBox().getWidth(), j);
			}
			for(int i=0; i<page.getMediaBox().getWidth(); i+=20){
				contentStream.moveTo(i, 0);
				contentStream.lineTo(i, page.getMediaBox().getHeight());
			}
			contentStream.stroke();
			
			contentStream.setStrokingColor(Color.BLACK);
			contentStream.setLineDashPattern(new float[]{16,0}, 0);			
			for(int j=0; j<page.getMediaBox().getHeight(); j+=100){
				contentStream.moveTo(0, j);
				contentStream.lineTo(page.getMediaBox().getWidth(), j);
			}
			for(int i=0; i<page.getMediaBox().getWidth(); i+=100){
				contentStream.moveTo(i, 0);
				contentStream.lineTo(i, page.getMediaBox().getHeight());
			}
			contentStream.stroke();

			contentStream.setNonStrokingColor(Color.RED);
			contentStream.beginText();
				contentStream.setFont(font, fontSize);
				contentStream.newLineAtOffset(0, 5);
				for(int j=0; j<page.getMediaBox().getHeight(); j+=100){
					contentStream.showText(" "+j   );
					contentStream.newLineAtOffset(0, 100);
				}
				contentStream.newLineAtOffset(100, -900);
				for(int i=100; i<page.getMediaBox().getWidth(); i+=100){
					contentStream.showText(" "+i  );
					contentStream.newLineAtOffset(100, 0);
				}
				contentStream.endText();
			contentStream.close();
			document.save("meshPDF.pdf");
			document.close();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			System.out.println("meshPdf finished.");
		}
	}
}