Java fax4j出现意外结果:无法发送传真

Java fax4j出现意外结果:无法发送传真,java,fax,Java,Fax,我试图通过使用fax4j库()用java编程发送传真,但不幸的是,我无法做到这一点 我使用javadoc中提供的示例代码进行了尝试,并最终对其进行了修改,以尝试了解该库 这段代码可以工作,就像在中一样,程序在没有抛出任何异常的情况下完成其执行,但它并没有真正发送传真,这正是我试图实现的 package com.myclasses; import java.io.*; import java.util.Properties; import org.fax4j.FaxClient; import

我试图通过使用fax4j库()用java编程发送传真,但不幸的是,我无法做到这一点

我使用javadoc中提供的示例代码进行了尝试,并最终对其进行了修改,以尝试了解该库

这段代码可以工作,就像在中一样,程序在没有抛出任何异常的情况下完成其执行,但它并没有真正发送传真,这正是我试图实现的

package com.myclasses;

import java.io.*;
import java.util.Properties;

import org.fax4j.FaxClient;
import org.fax4j.FaxClientFactory;
import org.fax4j.FaxJobStatus;
import org.fax4j.FaxJob;
import org.fax4j.FaxJob.FaxJobPriority;

public class MyTestClass
{
    public static void main(String[] args)
    throws InterruptedException, IOException
    {
        File file = new File("Drive:\\Directory\\MyFile.pdf");
        System.out.println("File Opened");

        FaxClient faxClient = FaxClientFactory.createFaxClient();
        System.out.println("Client created");

        System.out.println(faxClient.getProvider().getName());
        System.out.println(faxClient.getProvider().getDescription());

        FaxJob faxJob = faxClient.createFaxJob();
        System.out.println("Job Created");

        faxJob.setFile(file);
        System.out.println("file added");

        faxJob.setPriority(FaxJobPriority.HIGH_PRIORITY);
        System.out.println("priority set");

        faxJob.setTargetAddress(recipient);
        System.out.println("recipient set");

        faxClient.submitFaxJob(faxJob);
        System.out.println("Fax Job Sumbitted: " + faxJob.getID());


        while (faxClient.getFaxJobStatus(faxJob) == FaxJobStatus.PENDING)
        {
            System.out.println("STATUS: "
                + faxClient.getFaxJobStatus(faxJob).toString());

            for (int i = 0; i < 100; i++)
            {
                Thread.sleep(100);
                System.out.print(".");
            }
        }

        System.out.println("STATUS: "
            + faxClient.getFaxJobStatus(faxJob).toString());

    }
}

我看到您使用windows,所以我建议使用windows SPI。 基本上,您只需要确保fax4j.dll和fax4j.exe位于本机路径上(通过java.library.path或windows路径设置)

另外,acrobat在打印方面不是一个好的第三方,并且有很多问题。
转到fax4j官方论坛,您将看到对其他支持更好打印的pdf阅读器的推荐。使用acrobat时,情况不会很好。

您是否尝试过设置发件人详细信息,以查看这是否会产生影响?无可否认,我在这里抓着救命稻草,没有使用这个库的经验,但只是一个想法。@berry120我这么做了,它没有产生任何可见的变化(除了能够使用get方法检索发件人详细信息之外):(
Exception in thread "main" org.fax4j.FaxException: Error while invoking VBS script, error found at line 145: faxJobID=faxDocumentInstance.Send,  script output:
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

[fax4j-vbs][DEBUG] Sending fax

Script error:
C:\Users\8809898B\AppData\Local\Temp\fax4j_1590168650663566246.vbs(145, 1) (null): Données non valides. 


at org.fax4j.spi.vbs.VBSFaxClientSpi.invokeScript(VBSFaxClientSpi.java:722)
at org.fax4j.spi.vbs.VBSFaxClientSpi.submitFaxJobImpl(VBSFaxClientSpi.java:416)
at org.fax4j.spi.AbstractFaxClientSpi.submitFaxJob(AbstractFaxClientSpi.java:204)
at org.fax4j.spi.adapter.AdapterFaxClientSpi.submitFaxJobImpl(AdapterFaxClientSpi.java:505)
at org.fax4j.spi.AbstractFaxClientSpi.submitFaxJob(AbstractFaxClientSpi.java:204)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.fax4j.spi.AbstractFaxClientSpiProxy.invoke(AbstractFaxClientSpiProxy.java:202)
at $Proxy0.submitFaxJob(Unknown Source)
at org.fax4j.FaxClient.submitFaxJob(FaxClient.java:211)
at com.myclasses.MyTestClass.main(MyTestClass.java:43)