HTML 형식으로 보고서를 생성하는 애플리케이션 (Android 4.4 - API 20)을 만들고 있습니다. 내 애플 리케이션에서 보고서를 표시하려면 WebView 개체를 사용합니다.Android 4.4 사용자 개입없이 PDF로 인쇄
내가 할 수 있기를 원하는 것은이 WebView를 pdf 문서로 변환하는 것입니다.
나는 PdfDocument를 사용하여 그것을 변환 할 수 있었고, WebView 객체에서 페이지로 .draw를 할 수 있었다. 파일을 저장하면 결과는 단일 페이지 문서입니다. 페이지 나누기가 없습니다.
View content = (View) webView;
PrintAttributes pdfPrintAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME).
setMediaSize(PrintAttributes.MediaSize.NA_LETTER.asLandscape()).
setResolution(new Resolution("zooey", PRINT_SERVICE, 300, 300)).
setMinMargins(PrintAttributes.Margins.NO_MARGINS).
build();
PdfDocument document = new PrintedPdfDocument(mContext,pdfPrintAttrs);
PageInfo pageInfo = new PageInfo.Builder(webView.getMeasuredWidth(), webView.getContentHeight(), 1).create();
Page page = document.startPage(pageInfo);
content.draw(page.getCanvas());
document.finishPage(page);
나는 PrintedPdfDocumet를 사용하고 PageInfo를 지정하지 않도록 내가 그것을 변경하는 경우 I 만 WebView를 객체의 볼 부분을 얻을.
View content = (View) webView;
PrintAttributes pdfPrintAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME).
setMediaSize(PrintAttributes.MediaSize.NA_LETTER.asLandscape()).
setResolution(new Resolution("zooey", PRINT_SERVICE, 300, 300)).
setMinMargins(PrintAttributes.Margins.NO_MARGINS).
build();
PrintedPdfDocument document = new PrintedPdfDocument(mContext,pdfPrintAttrs);
Page page = document.startPage(0);
content.draw(page.getCanvas());
document.finishPage(page);
나는 PrintManager를 사용하고 createPrintDocumentAdapter와 웹보기 개체에서 인쇄 어댑터를 만들 경우에, 나는 "저장 PDF로"옵션을 선택하고 내가의 CSS에서 지정한대로 결과 PDF 파일은 페이지 나누기를 가지고 원래 웹 페이지.
PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
String jobName = getString(R.string.app_name) + " Report "
+ reportName;
PrintAttributes printAttrs = new PrintAttributes.Builder().
setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME).
setMediaSize(PrintAttributes.MediaSize.NA_LETTER.asLandscape()).
setMinMargins(PrintAttributes.Margins.NO_MARGINS).
build();
PrintJob printJob = printManager.print(jobName, printAdapter,
printAttrs);
내 질문은 : 나는 내가 PrintManager는 "PDF로 저장"는을 수행하고 사용자와의 상호 작용이 없도록 이름과 결과 파일의 위치를 제공하도록 지정할 수 있습니다?
또는 WebView 개체를 PDF로 변환하고 페이지 나누기를 허용하는 방법이 있습니까?
되지 않음 대답 정말하지만이이 라이브러리를 보라 http://sourceforge.net/projects/itext/ – Janpan
iText에서 라이센스를 구입해야 사용할 수 있다고 생각했습니다. 그럴까요? – VingInMedina
아니요. 상업적으로 사용하고 앱 등을 판매하려는 경우에만 사용합니다. 사무실에서 나만을위한 프로젝트 중 하나 또는 두 가지에서 사용하고 있습니다. "AGPL 라이센스에 따라 귀하의 응용 프로그램 소스 코드를 공개하지 않고 제품 내에 iText 소프트웨어를 배포하거나 네트워크에 배포하는 등의 활동을 시작하자마자 상용 라이센스를 구입해야합니다." 여기 나머지를 보시라. http://itextpdf.com/agpl – Janpan