4

私はApache PDFBox APIを初めて使用し、Apache PDFBoxで印刷設定プロパティを設定したいと考えています。

ここでは、ページ サイズを に設定し、A4印刷倍率オプションも に設定しますNO SCALING

ここで、読み込み中の準備が整った PDF 入力ストリームがあることに注意してください。org.apache.pdfbox.pdmodel.PDDocumentそのため、印刷前にクラスで印刷プロパティを設定したいと思います。

どうやってやるの ?

編集済み:

これは、PDFファイルを印刷するための私のクラスです。 PDFページサイズをA4に変更し、ページスケーリングをNO SCALINGに設定するコードを追加するTODOマーカーに注意してください。

public class PrintPDF extends Applet{
    private PrintPDF(){
        //static class
    }


    public static void main(String a[]) throws Exception{
        System.out.println("Printing Started...");
        String password = "";
        String pdfFile = "D://TEST//output.pdf";
        boolean silentPrint = true;
        String printerindx = "1";

        PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();            


        if( pdfFile == null )
        {
            usage();
        }

        PDDocument document = null;
        try
        {
            document = PDDocument.load( pdfFile );

            //TODO : ADD CODE TO SET PAPER SIZE TO A4 AND 
            //ADD CODE TO SET PAGE SCALING TO : NO SCALING

            if( document.isEncrypted() )
            {
                document.decrypt( password );
            }
            PrinterJob printJob = PrinterJob.getPrinterJob();

            if(printerindx != null )
            {
                PrintService[] printServices = PrinterJob.lookupPrintServices();

                for(PrintService printService : printServices){
                    if(printService.getName().equals("FG_LASER_PRINTER")){
                        printJob.setPrintService(printService);
                    }
                }
                            }

            if( silentPrint ){
                document.silentPrint( printJob );
            }else{
                document.print( printJob );
            }
        }
        finally{
            if( document != null ){
                document.close();
            }
        }

        System.out.println("Printing Completed...");
    }

    /**
     * This will print the usage requirements and exit.
     */
    private static void usage()
    {
        System.err.println( "Usage: java org.apache.pdfbox.PrintPDF [OPTIONS] <PDF file>\n" +
                "  -password  <password>        Password to decrypt document\n" +
                "  -silentPrint                 Print without prompting for printer info\n"
        );
        System.exit( 1 );
    }
}
4

3 に答える 3

2

これを行うには、PageFormat の Paper を更新します。

pdDocument.getPageFormat().getPaper().setSize(double width, double length);

幅と長さはインチです。A4 サイズは 8.27 × 11.69 インチです。

于 2013-04-22T06:37:48.380 に答える