Простая настройка размера страницы при печати JTextPane?
В моем приложении есть очень простая функция Print, которая печатает содержимое Jtextpane. Я хочу установить размер страницы по умолчанию на A4, но после поиска я нахожу множество способов, включающих форматирование книг и документов и т. Д., Я хочу сделать это как можно более простым.
Мой код в настоящее время:
public void printy(){
JTextPane jtp = new JTextPane();
jtp.setBackground(Color.white);
try {
// open the file we have just decrypted
File myFile = new File(deletefile + "mx.txt");
FileInputStream fIn = new FileInputStream(myFile);
BufferedReader myReader = new BufferedReader(
new InputStreamReader(fIn));
String aDataRow = "";
String aBuffer = "";
while ((aDataRow = myReader.readLine()) != null) {
aBuffer += aDataRow + "\n";
}
String[] splitdata = aBuffer.split("`"); //recover the file and split it based on `
String lines = "";
for(String line : splitdata){
lines = lines + line + System.getProperty("line.separator") + System.getProperty("line.separator");
}
myReader.close();
System.out.println(Arrays.toString(splitdata));
System.out.println(lines);
jtp.setText(lines);
boolean show = true;
try {
//set the header and footer data here
MessageFormat headerFormat = new MessageFormat("HEADER HERE");
MessageFormat footerFormat = new MessageFormat("FOOTER HERE");
Paper A4 = new Paper();
A4.setSize(595, 842);
A4.setImageableArea(43, 43, 509, 756);
jtp.print(headerFormat, footerFormat, show, null, null, show);
} catch (java.awt.print.PrinterException ex) {
ex.printStackTrace();
}
} catch (Exception ez) {
System.out.println("error in array building");
}
}
}
Я установил размер бумаги A4, но не знаю, как установить его в атрибутах.print для JtextPane.
Спасибо за помощь;
Энди
2 ответа
На самом деле, попробовав ссылку, предоставленную StanislavL, я обнаружил в руководствах оракула, что я считаю лучшим способом решения моей проблемы, код, с которым я работал, был;
public void printy(){
JTextPane jtp = new JTextPane();
jtp.setBackground(Color.white);
try {
// open the file we have just decrypted
File myFile = new File(deletefile + "mx.txt");
FileInputStream fIn = new FileInputStream(myFile);
BufferedReader myReader = new BufferedReader(
new InputStreamReader(fIn));
String aDataRow = "";
String aBuffer = "";
while ((aDataRow = myReader.readLine()) != null) {
aBuffer += aDataRow + "\n";
}
String[] splitdata = aBuffer.split("`"); //recover the file and split it based on `
String lines = "";
for(String line : splitdata){
lines = lines + line + System.getProperty("line.separator") + System.getProperty("line.separator");
}
myReader.close();
System.out.println(Arrays.toString(splitdata));
System.out.println(lines);
jtp.setText(lines);
boolean show = true;
try {
//set the header and footer data here
MessageFormat headerFormat = new MessageFormat("Your header here - {0}"); //sets the page number
MessageFormat footerFormat = new MessageFormat("Your footer here");
PrintRequestAttributeSet attr_set = new HashPrintRequestAttributeSet();
attr_set.add(MediaSizeName.ISO_A4);
attr_set.add(Sides.DUPLEX);
jtp.print(headerFormat, footerFormat, show, null, attr_set, show);
} catch (java.awt.print.PrinterException ex) {
ex.printStackTrace();
}
} catch (Exception ez) {
System.out.println("error in array building");
}
}
}
Надеюсь, что это поможет кому-то еще, не говоря о том, что оно идеально, но работает хорошо и добавляет дуплекс по умолчанию
Вы можете использовать подход http://java-sl.com/JEditorPanePrinter.html
Там вы можете передать нужный формат страницы, где вы можете указать желаемый размер / тип бумаги.