【问题标题】:Print pdf in network printer using java使用java在网络打印机中打印pdf
【发布时间】:2014-02-10 20:41:48
【问题描述】:

伙计们,我被困在使用 java 打印 pdf 中。 我写的代码如下:

`

public static void main(String[] args) throws PrinterException, PrintException, IOException{
        DocFlavor docflavor = new DocFlavor.INPUT_STREAM ("application/octet-stream");
    //  DocFlavor docflavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE;
/*      DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.;*/
        PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
        DocFlavor[] docF = printService.getSupportedDocFlavors();
        for(int i = 0; i<docF.length;i++){
            System.out.println(docF[i]);
        }
        FileInputStream fis = new FileInputStream("pathofpdffile");



        Doc pdfDoc = new SimpleDoc(fis, docflavor, null);


        DocPrintJob printJob = printService.createPrintJob();
        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();

        aset.add(new Copies(1));
        aset.add(Sides.ONE_SIDED);
        printJob.print(pdfDoc,aset);

        fis.close();

}`

上面的代码启动了打印活动,但问题是我在打印中只得到了编码字符。我无法获得我的确切文件。

其次,如果我将 DocFlavor 更改为 SERVICE_FORMATTED.PAGEABLE ,则会引发错误

java.lang.IllegalArgumentException: data is not of declared type
at javax.print.SimpleDoc.<init>(Unknown Source)
at com.calculator.main.PrintingTest.main(PrintingTest.java:42)

第三,如果我将 DocFlavor 更改为 INPUT_STREAM.PDF,它会抛出错误

`Exception in thread "main" sun.print.PrintJobFlavorException: invalid flavor
at sun.print.Win32PrintJob.print(Unknown Source)
at com.calculator.main.PrintingTest.main(PrintingTest.java:49)`

我正在网络打印机上尝试所有这些。 任何帮助都会 gr8..

【问题讨论】:

  • 您使用哪个框架来解析和打印 PDF?
  • @RaviH :我不喜欢为此使用任何外部 jar。我也浏览了你发布的链接。任何进一步的帮助!!!
  • @AaronDigulla : 框架我没听懂你.. :( 。这是纯 java 代码。
  • 在不同的打印机上打印是否有效?

标签: java pdf printing


【解决方案1】:

我的第一个猜测是 new DocFlavor.INPUT_STREAM ("application/octet-stream") 不是你想要的。

您可能想尝试此答案中的代码:https://stackoverflow.com/a/18962278/34088

【讨论】:

    【解决方案2】:

    只需更改您的代码以使用 AUTO_SENSE,如下所示。

    InputStream inputStream = new FileInputStream("C://test.pdf");
    Doc doc = new SimpleDoc(inputStream, DocFlavor.INPUT_STREAM.AUTOSENSE,null);
    

    【讨论】:

      猜你喜欢
      • 2013-01-22
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多