日本語 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);
            List
  
   pages = 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();
            }
        }

    }
}
来深圳已经有4个多月了,平时手边只有一台公司发的 Macbook Pro,根本不能愉快的游戏 加上之前用树莓派来做 NAS,百兆的网口和 USB 2.0 的速度根本不能满足需求… 所以一开始准备组一个 NAS,本来准备组个 J1900 啥的,结果因为偶尔还想撸撸 World of Warshits,所以干脆还是加钱上了 i3(i3 默秒全) 配置方面的话,用的最辣鸡的 7 代酷睿 i3 7100,默频高达 3.9G,简直就是 excited 啊! 主板方面自然是选得 B250 芯片组,因为个人对技嘉比较有好感,最后选的是 B250M-D3H 这款。一方面由于准备上 Micro-ATX 的机箱,所以只能挑小板;加上之前买的傻多戴 U2417H,最后发现这显示器只有 HDMI 和 DP(含 MiniDP) 两种接口,所以主板方面选了款带 DP / HDMI 输出的先用着。 内存方面在二手东上随便选了个 8G * 2 的套装(结果一直蓝屏,最后发现有一根抽了,联系京东上门换货,不得不说下二手东这个服务…简直了) 机箱的话选了一款铝制的 乔思伯 C3,还有喜闻乐见的大侧透(毕竟主板说他带了灯,感觉不上测透也浪费嘛),这款机箱虽然是 ITX / Micro-ATX 的,却可以使用标准 ATX 电源,这样方便了不少。 电源考虑到加显卡以及带多硬盘的需要,选了安钛克的 Neo ECO 550,毕竟之前也在用,接口够用,关键是不会爆炸。 另外因为主板有 M.2 接口,直接就上了块 256G 的爆炸星 PM961,插到主板上就行,不需要占机箱空间,毕竟现在装机 SSD 还是标配嘛。 最后把树莓派挂的那块 3T 的硬盘接了上去。 用了几个星期之后,偶尔打了把战舰世界,发现即使是低画质帧率也没法看。 唉,没办法,谁叫我们是辣鸡集显呢,于是权衡了下老黄的 1060 和偷电大师 RX
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值