PDFBox不打印文本

时间:2014-07-31 18:37:03

标签: java printing pdfbox docx4j

我正在尝试打印使用docx4j生成的Word文档,我将其转换为PDF并使用PDFBox进行打印。我正在尝试打印的文档只包含一个带有基本英文文本的简单表格。

这是我使用的方法:

    private void printDocument(){
    PrinterJob job = PrinterJob.getPrinterJob();

    try {
        PDDocument document;

        document = PDDocument.load("files\\textDocs\\OITScanSheet.pdf");

        job.setPageable(new PDPageable(document, job));
        job.setJobName("OIT Scan Sheet");
        job.print();

    } catch (NullPointerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (PrinterException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

这就是我要打印的内容: Before print

这是我打印时出来的(抱歉质量很差): After print

表格完整且行数正确,但文本不存在。当我从Adobe Reader打印文档时,它应该打印出来。

我现在正在使用PDFBox 2.0.0快照。我从版本1.8.4切换,因为我遇到了this问题,它正确地打印了表,但所有文本都是垃圾。

我很确定这个问题与幕后的某种字体问题有关,但我不知道如何修复它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果你真的需要printDialog,这是一个随时可用的代码,假设你的类路径中有PDFBox 2.0和字体2.0

  public static void PDFPrintingServices(String filePath) throws IOException, PrinterException {

            PrintRequestAttributeSet attr_set = new HashPrintRequestAttributeSet();
            attr_set.add(MediaSizeName.ISO_A4);
            attr_set.add(Sides.ONE_SIDED);
            PDDocument pdf = PDDocument.load(new File(filePath));
            PDFPageable p = new PDFPageable(pdf);
            PDFPrintable printable = new PDFPrintable(pdf, Scaling.SCALE_TO_FIT);

            PrinterJob job = PrinterJob.getPrinterJob();
            job.setJobName("My Printer");
            job.setPageable(p);
            job.setPrintable(printable);
            if(job.printDialog()) {
                job.print();
                job.print(attr_set);
            }
    }