2017-10-18 15 views
0

SVG 파일을 PDF로 출력하려고합니다. 몇 가지 방법을 시도했지만 문제가 계속 발생합니다. SVG to PDF. 어떻게?

나는 참고로이 소스를 사용 : Convert SVG to PDF 및 시도 다음

// Save this SVG into a file (required by SVG -> PDF transformation process) 
File svgFile = File.createTempFile("graphic-", ".svg"); 
Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
DOMSource source2 = new DOMSource(svgXmlDoc); 
FileOutputStream fOut = new FileOutputStream(svgFile); 
try { transformer.transform(source2, new StreamResult(fOut)); } 
finally { fOut.close(); } 

// Convert the SVG into PDF 
File outputFile = File.createTempFile("result-", ".pdf"); 
SVGConverter converter = new SVGConverter(); 
converter.setDestinationType(DestinationType.PDF); 
converter.setSources(new String[] { svgFile.toString() }); 
converter.setDst(outputFile); 
converter.execute(); 

나는 그것을 나열 할 수 있기 때문에 나는 대부분 정말 이상하다 batik.DOM에 관련된 여러 ClassNotFoundExceptions가, 다 퉜다 외부 라이브러리에서.

다음으로 iTextG를 사용해 보았습니다. 나는 SvgToPdf의 코드를 따랐다 : https://developers.itextpdf.com/examples/itext-action-second-edition/chapter-15

iTextG에는 PdfGraphics2D가 없으므로 그 방법은 필요하다.

내가 어떻게 할 수 있습니까?

답변

0

다음은 어떤 라이브러리를 사용 하느냐에 따라 달라지는 해결책입니다.

웹킷 엔진은 SVG 렌더링 할 수 있습니다, 그래서 당신은 웹보기 내로 SVG를로드 할 수

// Get a PrintManager instance 
PrintManager printManager = (PrintManager) getActivity() 
     .getSystemService(Context.PRINT_SERVICE); 

// Get a print adapter instance 
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter(); 

// Create a print job with name and adapter instance 
String jobName = getString(R.string.app_name) + " Document"; 
PrintJob printJob = printManager.print(jobName, printAdapter, 
     new PrintAttributes.Builder().build()); 
: 그럼 당신이 계속할 수

webView.loadUrl(Uri.fromFile(svgFile).toString()); 

웹보기도 인쇄 할 수있는 기능을 가지고