public static void sendPdfToPrinter(String epsilon)
{
FileInputStream psStream = null;
try {
psStream = new FileInputStream(epsilon);
} catch (FileNotFoundException ffne) {
ffne.printStackTrace();
}
if (psStream == null) {
return;
}
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc myDoc = new SimpleDoc(psStream, psInFormat, null);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset);
// this step is necessary because I have several printers configured
PrintService myPrinter = null;
for (int i = 0; i < services.length; i++)
{
String svcName = services[i].toString();
System.out.println("service found: "+ svcName);
if (svcName.contains("series"))
{
myPrinter = services[i];
System.out.println("my printer found: "+svcName);
break;
}
}
if (myPrinter != null) {
DocPrintJob job = myPrinter.createPrintJob();
try {
job.print(myDoc, aset);
} catch (Exception pe) {pe.printStackTrace();}
} else {
System.out.println("no printer services found");
}
}
public static void main(String[] args) throws IOException
{
//@SuppressWarnings("unused")
//Testing t = new Testing();
String DEST = ("C:/Users/Brian/Desktop/SO046201R-17/TestingAlpha/6FS-2m.pdf");
sendPdfToPrinter(DEST);
}
私は現在、一連のPDFファイルにテキストを書き込み、それをプリンタに送信するプログラムを作成しています。私はPDFパーツへの書き込みを終えましたが、 "sendPdfToPrinter"メソッドにファイルを渡すときはいつでも問題が発生します。これまではHP DeskjetプリンタとCanonインクジェットプリンタをテストしましたが、これは成功しませんでした(以前は "Java Document error"というメッセージが出ていましたが、後者はファイルをキューに追加しませんでした)。私は私の質問がこれにまでこだわると思う:この「プリンタに送る」Javaメソッドを動作させる方法はありますか?
私は使っているコードに問題がありますか?回避策はありますか?
マークの編集を使用する:
public static void sendPdfToPrinter(String epsilon) throws
InvalidPasswordException, IOException
{
FileInputStream psStream = null;
try {
psStream = new FileInputStream(epsilon);
} catch (FileNotFoundException ffne) {
ffne.printStackTrace();
}
if (psStream == null) {
return;
}
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
PDDocument myDoc = PDDocument.load(new File(epsilon));
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrintService[] services =
PrintServiceLookup.lookupPrintServices(psInFormat, aset);
// this step is necessary because I have several printers configured
PrintService myPrinter = null;
for (int i = 0; i < services.length; i++)
{
String svcName = services[i].toString();
System.out.println("service found: "+ svcName);
if (svcName.contains("series"))
{
myPrinter = services[i];
System.out.println("my printer found: "+svcName);
break;
}
}
if (myPrinter != null) {
PrinterJob job = PrinterJob.getPrinterJob();
try {
job.setPrintService(myPrinter);
job.setPageable(new PDFPageable(myDoc));
job.print();
} catch (PrinterException e) {
// Handle the exception.
}
} else {
System.out.println("no printer services found");
}
}
このApacheのPDFライブラリをインストールする方法についての教育ビデオはありますか?私は、iTextPDF用のライブラリをインストールするときにビジュアルが必要でした。 – user3418284
IDEを使用している場合は、ライブラリのjarファイルをプロジェクトのライブラリに追加する必要があります。その方法については、IDEのドキュメントを参照してください。コマンドラインからコンパイルする場合は、 '-cp'スイッチを使ってjarファイルにパスを追加します:javac -cp;;/path/to/library.jar;" MyClass.java' – Mark
これはLinux用ですか?私はWindowsを使用しています。 – user3418284