Czemu nie mogę otworzyć pdf stworzonego przez ten kod? Adobe Reader wyświetla komunikat: "adobe reader nie może otworzyć pliku ponieważ nie jest to obsługiwany typ pliku lub jest uszkodzony". Chciałbym przetestować drukowanie używając Microsofr PDF Printer. Program zwraca 0. Nie chcę używać funkcji pytających użytkownika o parametry wydruku, wszystko ma być w kodzie. Czemu nie mogę otworzyć pliku? Jest źle tworzony? Czy niemożliwość odczytu uniemożliwi drukowanie pliku?
import java.awt.*;
import java.awt.event.*;
import javax.print.*;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.*;
import javax.swing.*;
import java.awt.print.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class Main implements Printable, ActionListener {
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if (page > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
g.drawString("Hello world!", 100, 100);
return PAGE_EXISTS;
}
public void actionPerformed(ActionEvent e) {
FileInputStream textStream = null;
File file = new File("C:\\Users\\admin\\Desktop\\kio.txt");
try
{
textStream = new FileInputStream(file);
String encoding = "UTF-8";
BufferedReader br = new BufferedReader( new InputStreamReader(textStream, encoding ));
StringBuilder sb = new StringBuilder();
String line;
while(( line = br.readLine()) != null )
{
sb.append( line );
sb.append( '\n' );
}
System.out.println(sb.toString());
}
catch (Exception df)
{
System.out.println(df.getMessage());
}
DocFlavor myFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc myDoc = new SimpleDoc(textStream, myFormat, null);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(1));
aset.add(Sides.ONE_SIDED);
aset.add(MediaSizeName.ISO_A4);
aset.add(new PrinterResolution(300, 300, PrinterResolution.DPI));
aset.add(new MediaPrintableArea(2, 2, 210 - 4, 297 - 4, MediaPrintableArea.MM));
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
System.out.println("Printing to default printer: " + printService.getName());
DocPrintJob job = printService.createPrintJob();
try
{
job.print(myDoc, aset);
System.out.println("Druk");
}
catch (PrintException ex)
{
System.out.println(ex.getMessage());
}
}
public static void main(String[] args) {
UIManager.put("swing.boldMetal", Boolean.FALSE);
JFrame f = new JFrame("Hello World Printer");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
});
JButton printButton = new JButton("Print Hello World");
printButton.addActionListener(new Main());
f.add("Center", printButton);
f.pack();
f.setVisible(true);
}
}