2017-11-06 5 views
0

Java로 인쇄 할 때 여백을 변경하는 방법에 대한 여러 가지 해결책을 찾아 왔지만 아무런 효과가없는 것 같습니다. HereHere. 지금까지 IS가 무엇JTextPane의 인쇄 여백 변경

,

TextPane textPane = new JTextPane(); 
StyledDocument doc = textPane.getStyledDocument(); 

// Define a keyword attribute 
SimpleAttributeSet keyWord = new SimpleAttributeSet(); 
StyleConstants.setBold(keyWord, true); 

Style style = doc.addStyle("StyleName", null); 
StyleConstants.setIcon(style, new ImageIcon(qrcode)); 

doc.insertString(0, "Title Here\n", null); 
doc.insertString(doc.getLength(), "Ignored", style); 

textPane.print(); 

여백이 25.4로 기본값으로 설정되어있는 붙박이 인쇄 방법을 사용하여. 인쇄 여백을 가질 수있는 동안이 여백 을 편집 할 수 있기를 바랍니다. 내가 확인 "할 것은"입니다

+0

인쇄 대화 상자가 "페이지 설정"탭을 제공하지 않습니까? – MadProgrammer

+0

@MadProgrammer 예.이 값은 프로그램에서 설정하고 싶습니다. – hahahakebab

답변

1

, 이런 일이

JTextPane textPane = new JTextPane(); 
StyledDocument doc = textPane.getStyledDocument(); 

// Define a keyword attribute 
SimpleAttributeSet keyWord = new SimpleAttributeSet(); 
StyleConstants.setBold(keyWord, true); 

Style style = doc.addStyle("StyleName", null); 
//StyleConstants.setIcon(style, new ImageIcon(qrcode)); 

doc.insertString(0, "Title Here\n", null); 
doc.insertString(doc.getLength(), "Ignored", style); 

Paper paper = new Paper(); 
paper.setSize(fromCMToPPI(21.0), fromCMToPPI(29.7)); // A4 
paper.setImageableArea(fromCMToPPI(5.0), fromCMToPPI(5.0), 
       fromCMToPPI(21.0) - fromCMToPPI(10.0), fromCMToPPI(29.7) - fromCMToPPI(10.0)); 

PageFormat pageFormat = new PageFormat(); 
pageFormat.setPaper(paper); 

PrinterJob pj = PrinterJob.getPrinterJob(); 
pj.setPrintable(textPane.getPrintable(null, null), pageFormat); 
PageFormat pf = pj.pageDialog(pageFormat); 
if (pj.printDialog()) { 
    pj.print(); 
} 

정상 출력 수정 출력 대 출력의 페이지 크기와 여백에 영향을 것입니다

Normal (테두리 변화를 강조 후에 추가)

그리고 대화 방법 Modified ...

protected static double fromCMToPPI(double cm) { 
    return toPPI(cm * 0.393700787); 
} 

protected static double toPPI(double inch) { 
    return inch * 72d; 
} 

내가 확인할 수없는 것은 MacOS에서 페이지 설정 또는 프린터 대화 상자에 값이 표시되는지 확인하는 것입니다./

Windows에서 이전의 경험을 통해 기억할 것 같습니다. 작업

+0

답장을 보내 주셔서 감사합니다.하지만 변수 "pj"는 무엇을 말합니까? – hahahakebab

+1

Opps 죄송합니다. 업데이트 : P – MadProgrammer

+1

@hahahakebab 'PrinterJob pj = PrinterJob.getPrinterJob();', 예제를 업데이트했습니다 – MadProgrammer