0

在我的 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();
     }

}    
4

1 回答 1

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); 
于 2014-09-02T08:22:04.543 回答