Java로 PDF를 만들었습니다.

8191 단어 pdfBoxblobJava

개시하다


계산서 출력은 어떤 시스템에서도 볼 수 있지만 최근에는 무지화로 종이 출력 자체가 줄어든 것 같다.그럼에도 불구하고 장부상의 물건은 여전히 필요한 상업 습관이다.PDF 데이터를 간단하게 만듭니다.

프로그램 라이브러리


pdfbox-2.0.8
다운로드는 여기서부터 시작합니다.
공식.

일단 파일을 만들어 보도록 하겠습니다.

package pdf;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

public class PdfTest {

    public static void main(String args[]) {
        try {

            // ドキュメントオブジェクトの作成
            PDDocument document = new PDDocument();

            // ページオブジェクトの作成
            PDPage page = new PDPage();
            document.addPage(page);

            // ドキュメントを保存します
            document.save("test.pdf");
            document.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

실행 결과




서류 한 페이지밖에 없는데.

출력 텍스트


다음은 텍스트 출력입니다.
package pdf;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

public class PdfTest {

    public static void main(String args[]) {
        try {

            // ドキュメントオブジェクトの作成
            PDDocument document = new PDDocument();

            // ページオブジェクトの作成
            PDPage page = new PDPage();
            document.addPage(page);

            //文字出力処理
            PDPageContentStream contentStream = new PDPageContentStream(document, page);
            contentStream.beginText();
            //フォント指定
            PDFont font = PDType1Font.TIMES_ITALIC;
            contentStream.setFont(font, 12);
            //出力位置指定
            contentStream.newLineAtOffset(0f, 0f);
            //出力文字列
            contentStream.showText( "HelloWorld" );
            contentStream.endText();
            contentStream.close();

            // ドキュメントを保存します
            document.save("test2.pdf");
            document.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

실행 결과




출력 위치.newLine AtOffset(0f, 0f)으로 맨 왼쪽 아래로 내보냅니다.출력 글씨체도 다양한 종류가 있다.

일본어 출력

package pdf;

import java.io.File;

import org.apache.fontbox.ttf.TrueTypeCollection;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;

public class PdfTest {

    public static void main(String args[]) {
        try {

            // ドキュメントオブジェクトの作成
            PDDocument document = new PDDocument();

            // ページオブジェクトの作成
            PDPage page = new PDPage();
            document.addPage(page);

            //文字出力処理
            PDPageContentStream contentStream = new PDPageContentStream(document, page);
            contentStream.beginText();
            //フォント指定
            File file = new File("C:/Windows/Fonts/msmincho.ttc");
            TrueTypeCollection collection = new TrueTypeCollection(file);
            PDFont font = PDType0Font.load(document, collection.getFontByName("MS-Mincho"), true);

            contentStream.setFont(font, 12);
            //出力位置指定
            contentStream.newLineAtOffset(0f, 755f);
            //出力文字列
            contentStream.showText( "こんにちは世界" );
            contentStream.endText();
            contentStream.close();

            // ドキュメントを保存します
            document.save("test3.pdf");
            document.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

실행 결과




글꼴 파일.ttfttc에서 약간의 변화가 있을 수 있습니다.이번엔?ttc를 사용하고 있습니다.

파일을 만들지 않고 PDF 데이터만 저장합니다.


업무 상황에 따라 실제 파일을 만들지 않고 데이터만 저장하는 필수 조건이 있을 수 있다.문제 없어, 실현할 수 있어.
package pdf;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.fontbox.ttf.TrueTypeCollection;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;

public class PdfTest {

    public static void main(String args[]) {
        try {

            // ドキュメントオブジェクトの作成
            PDDocument document = new PDDocument();

            // ページオブジェクトの作成
            PDPage page = new PDPage();
            document.addPage(page);

            //文字出力処理
            PDPageContentStream contentStream = new PDPageContentStream(document, page);
            contentStream.beginText();
            //フォント指定
            File file = new File("C:/Windows/Fonts/msmincho.ttc");
            TrueTypeCollection collection = new TrueTypeCollection(file);
            PDFont font = PDType0Font.load(document, collection.getFontByName("MS-Mincho"), true);

            contentStream.setFont(font, 12);
            //出力位置指定
            contentStream.newLineAtOffset(0f, 755f);
            //出力文字列
            contentStream.showText( "こんにちは世界。データのみ保存。" );
            contentStream.endText();
            contentStream.close();

            // ドキュメントデータを保存します
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            document.save(out);
            document.close();

            InputStream streamData =new ByteArrayInputStream(out.toByteArray());

            System.out.println("確認------------");
            System.out.println("streamData" + streamData);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}
blocb형 열 등에 직접 저장할 수 있습니다.

제작된 PDF에서 문자열을 추출합니다.

package pdf;

import java.io.File;
import java.io.StringWriter;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

public class GetPdfText {

    public static void main(String args[]) {
        try {

            String pdfFile = "test3.pdf";
            PDDocument document = PDDocument.load(new File(pdfFile));
            StringWriter output = new StringWriter();
            PDFTextStripper stripper = new PDFTextStripper();
            stripper.setStartPage(1);
            stripper.setEndPage(1);
            stripper.setSortByPosition(false);
            stripper.setShouldSeparateByBeads(true);
            stripper.writeText(document, output);
            String content = output.toString();
            System.out.println("---------出力開始-------------");
            System.out.println(content);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

실행 결과


------출력 시작 ------
안녕 세상
다른 것은 이미지 충전과 격선 등 다양한 기능도 있으니 다시 보충할 기회가 있을 것 같습니다.

좋은 웹페이지 즐겨찾기