나는이 똑같은 문제가 있었는데, 나는이 단순한 일을하기가 너무 어려웠던 것처럼 느꼈다. 비록 이상적이지는 않지만 결국 PDFBox 인쇄를 사용하지 않고 다음과 같이 해결했습니다.
다음 코드는 페이지를 한 번에 하나씩 이미지로 변환하고 java2d를 사용하여 크기를 조정하고 인쇄합니다.
PDDocument pdfdoc = PDDocument.load(pdfPane.pdfFile);
@SuppressWarnings("unchecked")
final List<PDPage> pdfPages = pdfdoc.getDocumentCatalog().getAllPages();
PrinterJob pjob = PrinterJob.getPrinterJob();
pjob.setJobName(pdfPane.pdfFile.getName());
pjob.setPrintable(new Printable()
{
@Override
public int print(Graphics g, PageFormat pf, int page) throws PrinterException
{
if (page > pdfPages.size())
return NO_SUCH_PAGE;
try
{
g.drawImage(pdfPages.get(page).convertToImage()
,(int)pf.getImageableX()
,(int)pf.getImageableY()
,(int)pf.getImageableWidth()
,(int)pf.getImageableHeight()
,null);
}
catch (IOException e)
{
LoggerUtil.error(e);
}
return PAGE_EXISTS;
}
});
pjob.print();
pdfdoc.close();
난 ... 그것은하지만 회로 –
@HardikBhalani .. 그물에 더 나은 솔루션을 사용할 수있는 당신에게 대신의이 iText API를 제안하고 싶습니다, – Mirco
당신이 iText를 자사의 솔루션 당신이하는 것보다에 대해 얘기하는 무료입니다 맞아 (몰라) 그렇지 않으면 iText는 자바에서 PDF를위한 오픈 소스 라이브러리이다. –