📜  PDFBox使用字体

📅  最后修改于: 2021-01-07 07:42:01             🧑  作者: Mango

PDFBox使用字体

在PDFBox中,可能需要添加具有不同字体系列和大小的文本。 PDFBox规范指出“在处理PDF文档时,将始终提供标准的14种字体集”。在PDFBox中,这组14种字体在PDType1Font类中定义为常量。使用PDType1Font API从文件加载字体。 PDFBox支持以下字体-

Standard Font Discription
PDType1Font.TIMES_ROMAN Times regular
PDType1Font.TIMES_BOLD Times bold
PDType1Font.TIMES_ITALIC Times italic
PDType1Font.TIMES_BOLD_ITALIC Times bold italic
PDType1Font.HELVETICA Helvetica regular
PDType1Font.HELVETICA_BOLD Helvetica bold
PDType1Font.HELVETICA_OBLIQUE Helvetica italic
PDType1Font.HELVETICA_BOLD_OBLIQUE Helvetica bold italic
PDType1Font.COURIER Courier
PDType1Font.COURIER_BOLD Courier bold
PDType1Font.COURIER_OBLIQUE Courier italic
PDType1Font.COURIER_BOLD_OBLIQUE Courier bold italic
PDType1Font.SYMBOL Symbol Set
PDType1Font.ZAPF_DINGBATS Dingbat Typeface

我们可以使用Content Stream上可用的setFont API为文本配置字体

PDPageContentStream contentStream = new PDPageContentStream(document, page);

contentStream.setFont( PDType1Font.HELVETICA_BOLD, 28 );

本示例创建一个新文档并打印文本“ Hello World !!!”。使用PDF基础Font之一

import java.io.IOException;
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 WorkingWithFont {
    
    public static void main(String[] args)throws IOException {
                
    // Create a document and add a page to it
    PDDocument document = new PDDocument();
    PDPage page = new PDPage();
    document.addPage( page );
        
    // Create a new font object selecting one of the PDF base fonts
    PDFont font = PDType1Font.HELVETICA_BOLD;

    // Start a new content stream which will "hold" the to be created content
     PDPageContentStream contentStream = new PDPageContentStream(document, page);

    // Define a text content stream using the selected font, and print the text
        contentStream.beginText();
        contentStream.setFont( font, 28 );
        contentStream.newLineAtOffset( 100, 700 );
        contentStream.showText( "Hello World !!!!" );
        contentStream.endText();
        
        System.out.println("Text Content is added in the PDF Document.");

        //  closed the content stream class.
        contentStream.close();

        // Save the results and ensure that the document is properly closed.
        document.save( "Hello World.pdf");
        document.close();
    }
}

输出:

成功执行上述程序后,打开显示以下输出的PDF文档。