2017-11-15 7 views
0

현재 텍스트 문서를 pdf로 변환하고 브라우저로 렌더링하므로 글꼴을 유지할 수 없습니다. 글꼴은 택배이지만 pdf로 변환 될 때 다른 것으로 변환됩니다. 기본 글꼴을 유지하는 쉬운 방법이 있습니까? 아니면 적어도 변환 후 설정할 수 있습니까? 여기 코드가 있습니다.PDFBox TextToPdf 글꼴 유지

public void downloadFile(HttpServletResponse response, List<Report> reports) throws IOException{ 
    OutputStream outputStream = response.getOutputStream(); 
    PDFMergerUtility pdfMergerUtility = new PDFMergerUtility(); 
    PDDocument documentToPrint = new PDDocument(); 
    for(Report report : reports){ 
     PDDocument pdDocument = new TextToPDF().createPDFFromText(new InputStreamReader(
       new FileInputStream(fileDirectory + File.separator + report.getFileLocation()), "UTF8") 
     ); 
     pdfMergerUtility.appendDocument(documentToPrint, pdDocument); 
    } 
    pdfMergerUtility.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly()); 

    response.setContentType("application/pdf"); 
    response.addHeader("Content-Disposition", "inline; filename=" + "download.pdf"); 
    documentToPrint.save(outputStream); 
    documentToPrint.close(); 
} 

문서를 추가하기 전에 다음과 같이 설정해 보았습니다.

PDDocumentCatalog documentCatalog = pdDocument.getDocumentCatalog(); 
    PDResources pdResources = documentCatalog.getPages().get(i).getResources(); 
    pdResources.add(PDType1Font.COURIER); 
    documentCatalog.getPages().get(i++).setResources(pdResources); 

하지만 택배로 텍스트 문서의 글꼴을 가지고 있기 때문에 그 중 하나가

+0

"글꼴은 택배입니다"- 아니, 당신은 어떤 글꼴을 설정하지 않습니다. 따라서 기본값 (Helvetical)이 사용됩니다. 택배가 사용 된 이유는 무엇이라고 생각 했습니까? –

+0

나는 택배로 텍스트 문서의 글꼴이 있기 때문에. 그 글꼴을 사용한다고 가정했습니다. 예 현재 코드에서 글꼴을 설정하지 않았습니다. 나는 내가 그것을 설정하려고 할 때 작동하지 않는 것을 시도한 것을 편집 할 것이다. – Justin

+0

내 대답보기. 너의 시도는 의미가 있지만 아무 것도하지 않는다. 자원에 폰트를 넣는 것만으로 지하실에 차를 소유하는 것과 같지만 차를 사용하지 않는 것입니다. 글꼴은 또한 내용 스트림에서 설정되어야합니다. –

답변

1

을 작동하지 않습니다.

아니요, 편집자는 일반적으로 Courier로 표시합니다. 기본값은 Helvetica이므로 설정해야합니다.

변경이이에

PDDocument pdDocument = new TextToPDF().createPDFFromText(new InputStreamReader(.... 

:

TextToPDF textToPDF = new TextToPDF(); 
textToPDF.setFont(PDType1Font.COURIER); 
textToPDF.createPDFFromText(new InputStreamReader(.... 
+0

와우 ..... 어떻게 TextToPDF에 setFont가 보이지 않았습니까? 완벽하게 작동했습니다. 이게 내가 생각했던 것보다 훨씬 쉬웠다 고 생각해 .... – Justin