在Android中使用只读权限创建PDF

时间:2014-09-02 07:17:59

标签: android pdf pdf-generation android-droidtext

在我的Android应用程序中,如果我点击“生成PDF”按钮,然后在SD卡中创建pdf。如果我打开这个pdf,我可以复制文本,但我不会这样。我的意思是只读 用那个生成的pdf文件。

以下是代码,

public void createPDF()
{
    Document doc = new Document();


     try {
            String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/droidText";

            File dir = new File(path);
                if(!dir.exists())
                    dir.mkdirs();

            Log.d("PDFCreator", "PDF Path: " + path);
            System.out.println("PDF Path:    "+ path);

            File file = new File(dir, "sample.pdf");
            FileOutputStream fOut = new FileOutputStream(file);

            PdfWriter.getInstance(doc, fOut);

            //open the document
            doc.open();


            Paragraph p1 = new Paragraph("Hi! I am generating my first PDF using DroidText");
            Font paraFont= new Font(Font.COURIER);
            p1.setAlignment(Paragraph.ALIGN_CENTER);
            p1.setFont(paraFont);

             //add paragraph to document    
             doc.add(p1);


     } catch (DocumentException de) {
             Log.e("PDFCreator", "DocumentException:" + de);
     } catch (IOException e) {
             Log.e("PDFCreator", "ioException:" + e);
     } 
     finally
     {
             doc.close();
     }

}    

1 个答案:

答案 0 :(得分:0)

您无法阻止用户更改存储在外部存储上的数据,只要他们找到愿意为此提供帮助的应用程序 - 例如,随时可用的文件管理器应用程序。

只要安全模型保持不变,存储在应用程序私有存储区域中的数据就可以保护写入,也可以保护其他应用程序的写入和读取。

然而,某些应用程序不愿意尝试访问Intent指向的文件(如果它位于不同应用程序的专用存储区域中),即使已设置文件和目录权限位以使Android系统允许它们至。 (例如,至少某些版本的GMail拒绝附加不在外部存储上的文件,但如果文件是世界可读的,可以欺骗它们。)

因此,将文件保存到内部存储器中并打开给定代码的文件

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url="+LinkToPDF);
setContentView(mWebView);