感测特定目录中的pdf文件并打印“文件”;。pdf";使用Java的文件

感测特定目录中的pdf文件并打印“文件”;。pdf";使用Java的文件,java,file,pdf,netbeans,printing,Java,File,Pdf,Netbeans,Printing,我正在通过Netbeans使用Java创建一个程序,该程序可以感知特定目录(C:\Users\User\Documents)中的新文件。要感测的文件应仅为“.pdf”文件格式。一旦程序检测到一个新文件,它将输出在特定目录中检测到一个新文件。它应该显示“检测到新文件”。文件检测后,java将自动将新检测到的文件打印到特定的打印机。(仅使用一台打印机)。要打印的文件还应使用特定属性进行打印,例如份数、纸张类型等。打印后,java将通知用户文件已打印 我到处搜索,只找到了打印pdf的基本代码。我想知道

我正在通过Netbeans使用Java创建一个程序,该程序可以感知特定目录(C:\Users\User\Documents)中的新文件。要感测的文件应仅为“.pdf”文件格式。一旦程序检测到一个新文件,它将输出在特定目录中检测到一个新文件。它应该显示“检测到新文件”。文件检测后,java将自动将新检测到的文件打印到特定的打印机。(仅使用一台打印机)。要打印的文件还应使用特定属性进行打印,例如份数、纸张类型等。打印后,java将通知用户文件已打印

我到处搜索,只找到了打印pdf的基本代码。我想知道在下面的代码上做什么和更改什么。我刚刚接触java编程,我发现很难确定要更改什么以及在程序中添加什么。我学习了java的基础知识,但我真的觉得很难:(


谢谢:)

这仅适用于u打印机支持pdf文档的本机打印。几年前市场上可供使用的打印机不多(打印机的低价部分)。否则你应该使用一个类来调用操作系统原生打印对话框newfileinputstream(“GMA trip.pdf”),这是文件“GMA trip.pdf”的相对路径(取决于你应用程序启动的目录)。改为构建pdf文档的完整路径。谢谢:)我想先试试:)我个人更喜欢使用foxit reader打印pdf文件(可以在无头模式下启动foxit reader,而且它确实可以很好地检测pdf文档的方向、填充等)。foxit reader可以接受打印机属性,如页数、灰度、,等等,从数据库?
package printpdf;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.MediaSize;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.Sides;


public class Printpdf {

public static void main(String[] args) {

FileInputStream textStream; 
try { 
    FileInputStream textstream = new FileInputStream("GMA trip.pdf"); 
} catch (FileNotFoundException ffne) { 
} 
        Object textstream = null;
if (textstream == null) { 
        return; 
} 

DocFlavor myFormat = DocFlavor.INPUT_STREAM.PDF;
        Object texttream = null;

Doc myDoc = new SimpleDoc(texttream, myFormat, null); 

PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 
aset.add(new Copies(5)); 
aset.add(MediaSizeName.ISO_A4);
aset.add(Sides.DUPLEX); 

PrintService[] services =
        PrintServiceLookup.lookupPrintServices(myFormat, aset);

if (services.length > 0) { 
        DocPrintJob job = services[0].createPrintJob(); 
        try { 
                job.print(myDoc, aset); 
        } catch (PrintException pe) {} 
} 
    }
}