日本語 PDF

日本語 PDF の書き出し

1 byte 文字のみの PDF 書き出しはサンプルにあったので、2 byte 文字の書き出しにチャレンジ。 TTC 形式のフォント(TTF ファイルの集合) は読み込めないので、予め BREAKTTC というツールで TTF を作成しておいた。 結局、上手く行かないまま時間切れ。(↓のコードは文字化けした PDF を出力する)。
package jp.in_vitro.codelets.pdfbox;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;import org.pdfbox.exceptions.COSVisitorException;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.pdmodel.PDPage;
import org.pdfbox.pdmodel.edit.PDPageContentStream;
import org.pdfbox.pdmodel.font.PDFont;
import org.pdfbox.pdmodel.font.PDTrueTypeFont;import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;public class Codelet {public Codelet() {super();}public static void main(final String[] args) throws COSVisitorException,IOException {Codelet me = new Codelet();me.createJapanesePDF(new File("c://workspace//japanese.pdf"), new File("c://workspace//MSGOTHIC_FONT00.ttf"));me.convertPDFtoJPEG(new File("c://workspace//english.pdf"));}public void convertPDFtoJPEG(final File target) throws IOException {PDDocument document = null;try {document = PDDocument.load(target);Listpages = document.getDocumentCatalog().getAllPages();int count = 0;for (PDPage page : pages) {BufferedImage image = page.convertToImage();FileOutputStream fos = new FileOutputStream(target.getAbsolutePath()+ "." + count++ + ".jpg");JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);encoder.encode(image);fos.close();}} finally {if (document != null) {document.close();}}}public void createJapanesePDF(final File target, final File fontFile)throws IOException, COSVisitorException {String message = "日本語だよ。";PDDocument document = null;try {PDPage page = new PDPage();document = new PDDocument();document.addPage(page);PDFont font = PDTrueTypeFont.loadTTF(document, fontFile);PDPageContentStream contentStream = new PDPageContentStream(document, page);contentStream.beginText();contentStream.setFont(font, 10);contentStream.moveTextPositionByAmount(50, 50);contentStream.drawString(message);contentStream.endText();contentStream.close();document.save(target.getAbsolutePath());} finally {if (document != null) {document.close();}}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部