私は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 );
}
}