Android에서 PDF를 방법하는 방법
내 응용 프로그램에서 바이트 스트림을 수신하고 전화 메모리의 pdf 파일로 변환합니다. 그것을 pdf로 어떻게 처리합니까? 그리고 활동에서 보여줄까요?
Nexus One과 같은 일부 스마트 폰에는 Quickoffice 버전이 사전 설치되어 있으므로 SD 카드에 파일을 저장하고 있습니다.
public class OpenPdf extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.OpenPdfButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
File file = new File("/sdcard/example.pdf");
if (file.exists()) {
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
startActivity(intent);
}
catch (ActivityNotFoundException e) {
Toast.makeText(OpenPdf.this,
"No Application Available to View PDF",
Toast.LENGTH_SHORT).show();
}
}
}
});
}
}
public class MyPdfViewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView mWebView=new WebView(MyPdfViewActivity.this);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url="+LinkTo);
setContentView(mWebView);
}
}
Android-Lollipop (API 21)은 새로운 API를 소개합니다 : PdfRenderer
이 API를 사용하면 PDF 문서의 페이지에서 비트 맵을 만들 수 있습니다.
곧 :
PDF 문서에서 검색 가능한 파일 설명 가져옵니다.
ParcelFileDescriptor fd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
PdfRenderer 만들기
PdfRenderer renderer = new PdfRenderer(fd);
비트 맵 준비
Bitmap bitmap = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ARGB_4444);
렌더링 할 PdfRenderer.Page 가져 오기
PdfRenderer.Page page = renderer.openPage(pageIndex);
준비된 비트 맵에서 페이지
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
이제 비트 맵으로 원하는 작업을 수행 할 수 있습니다.
- 2 개의 null 인수를 사용하면 페이지의 일부를 자르고 클립의 변형 ( Matrix 사용 )을 수행 할 수 있습니다.
- 다른 렌더링 모드가 있습니다. RENDER_MODE_FOR_PRINT . 이 모드가 필요한 경우 올바르게 사용하기위한 몇 가지 지침이 있습니다 . 자세한 내용 은 다음과 같습니다 .
다음은이 새로운 API를 사용하는 방법에 대한 완전한 예입니다.
이 라이브러리는 간단하고 잘 작동합니다 : Android Pdf Viewer https://github.com/barteksc/AndroidPdfViewer
이전 답변 ...
나는 Joan Zapata가 우리에게 더 좋고 간단한 해결책을 제공한다고 생각합니다.
https://github.com/JoanZapata/android-pdfview
나는 그것이 작동한다고 확신합니다!
로컬 pdf 파일의 경우 타사 라이브러리를 통해 렌더링 할 수 있습니다. 예를 들어 MuPDF 라이브러리를 사용합니다. 지원되는 파일 유형에는 PDF, PNG 및 JPEG가 포함됩니다.
MuPDF의 한 가지 단점은 네이티브 라이브러리를 사용하여 목표를 달성하므로 나중에 BlackBerry 플랫폼에 응용 프로그램을 이식하기가 쉽지 않다는 것입니다.
바이트 배열에서 pdf를 열려면을 사용 RadaeePDF
하고 활동에 다음을 수행 할 수 있습니다.
private PDFReader m_vPDF = null;
private Document doc = new Document();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Global.Init(this);
m_vPDF = new PDFReader(this);
doc.Close();
int ret = m_doc.OpenMem(data, password);
switch( ret )
{
case -1://need input password
finish();
break;
case -2://unknown encryption
finish();
break;
case -3://damaged or invalid format
finish();
break;
case -10://access denied or invalid file path
finish();
break;
case 0://succeeded, and continue
break;
default://unknown error
finish();
break;
}
m_vPDF.open(doc);
setContentView( m_vPDF );
}
참고 URL : https://stackoverflow.com/questions/2883355/how-to-render-pdf-in-android
'ProgramingTip' 카테고리의 다른 글
Android 애플리케이션에 사용자 지정 글꼴을 포함 할 수 있습니까? (0) | 2020.10.14 |
---|---|
NUnit.Framework.Assert.IsInstanceOfType ()은 더 이상 사용되지 않습니다. (0) | 2020.10.14 |
iOS : 프로그래밍 방식으로 스크린 샷을 만드는 가장 빠르고 효과적인 방법은 무엇입니까? (0) | 2020.10.14 |
std :: set을 반복하는 방법? (0) | 2020.10.14 |
Android의 Google 클라우드 메시징에서 등록 ID 변경 처리 (0) | 2020.10.14 |