no estoy seguro de que puede hacerlo sin biblioteca adicional.
Este example muestra cómo enviar el archivo a una impresora de red, pero requiere una biblioteca de adobe (basada en J2EE comercial Livecycle ES, por lo que no es una solución "gratuita" genérica ...).
import com.adobe.livecycle.output.client.*;
import java.util.*;
import java.io.File;
import java.io.FileInputStream;
import com.adobe.idp.Document;
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
public class SendToPrinter {
public static void main(String[] args) {
try{
//Set LiveCycle ES service connection properties
Properties ConnectionProps = new Properties();
ConnectionProps.setProperty("DSC_DEFAULT_EJB_ENDPOINT", "jnp://localhost:1099");
ConnectionProps.setProperty("DSC_TRANSPORT_PROTOCOL","EJB");
ConnectionProps.setProperty("DSC_SERVER_TYPE", "JBoss");
ConnectionProps.setProperty("DSC_CREDENTIAL_USERNAME", "administrator");
ConnectionProps.setProperty("DSC_CREDENTIAL_PASSWORD", "password");
//Create a ServiceClientFactory object
ServiceClientFactory myFactory = ServiceClientFactory.createInstance(ConnectionProps);
//Create an OutputClient object
OutputClient outClient = new OutputClient(myFactory);
//Reference XML data that represents form data
FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\\Loan_data.xml");
Document inputXML = new Document(fileInputStream);
//Set print run-time options
PrintedOutputOptionsSpec printOptions = new PrintedOutputOptionsSpec();
printOptions.setPrinterURI("\\\\Printer1\\Printer");
printOptions.setCopies(2);
//Send a PostScript print stream to printer
OutputResult outputDocument = outClient.generatePrintedOutput(
PrintFormat.PostScript,
"Loan.xdp",
"C:\\Adobe",
"C:\\Adobe",
printOptions,
inputXML);
//Write the results of the operation to OutputLog.xml
Document resultData = outputDocument.getStatusDoc();
File myFile = new File("C:\\Adobe\\OutputLog.xml");
resultData.copyToFile(myFile);
}
catch (Exception ee)
{
ee.printStackTrace();
}
}
}
¿Puede bloquear esto en un sistema operativo específico? –
Bueno, estoy desarrollando en Ubuntu e implementando ya sea en Ubuntu o WinXP. Tenía la esperanza de tratar a la impresora como un dispositivo con una dirección IP, evitando así toda la basura específica de O/S. –