【问题标题】:How to create PDF viewer for android on C# with preview如何在 C# 上使用预览为 android 创建 PDF 查看器
【发布时间】:2019-06-30 07:04:32
【问题描述】:

我想创建或查找在 Android 上使用预览选项读取 PDF 文件的应用程序。所以它把所有页面的缩略图放在1上。

如何使用 C# 在 Xamarin 上执行此操作?

【问题讨论】:

标签: android pdf xamarin thumbnails reader


【解决方案1】:

请按照以下步骤操作。

第 1 步:您必须在 AndroidManifest.xml 中的 application 标签下添加提供程序

<application>
    <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="your package name.provider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
              android:name="android.support.FILE_PROVIDER_PATHS"
              android:resource="@xml/file_paths" />
          </provider>
     </application>

第 2 步:在 PDF 查看器中从 Assets 文件夹中打开文件

  private void OpenPdfInExternalApplication(string filename)
    {
        AssetManager assetManager = Activity.Assets;
        string fileName1 = filename + ".pdf";
        var file = new File(Activity.FilesDir, fileName1);

        Uri uri = null;
        Intent intent = new Intent(Intent.ActionView);
        try
        {
            // Get the input stream
            Stream input = assetManager.Open(fileName1);
            Stream output;
            if (Build.VERSION.SdkInt >= BuildVersionCodes.N)
              {
                output = Activity.OpenFileOutput(file.Name, FileCreationMode.Private);
                uri = FileProvider.GetUriForFile(Activity, Activity.PackageName + ".provider", file);
                 intent.SetDataAndType(uri, "application/pdf");
              }
              else
              {
                   output = Activity.OpenFileOutput(file.Name, FileCreationMode.WorldReadable);
                  intent.SetDataAndType(Uri.Parse("file://" + Activity.FilesDir + "/" + fileName),
                 "application/pdf");
              }
            input.CopyTo(output);
            intent.AddFlags(ActivityFlags.GrantPrefixUriPermission);
            intent.AddFlags(ActivityFlags.GrantReadUriPermission);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        }

        try
        {
            StartActivity(intent);
        }
        catch (ActivityNotFoundException ex)
        {
            Toast.MakeText(Activity, ex.Message, ToastLength.Long).Show();
        }
    }

【讨论】:

  • 非常感谢!我想要的是循环浏览所有页面并为它们获取缩略图并制作一个新的 PDF。这将如何?也许有现成的应用程序?
  • 我认为是这样的:page=PDF.getPage; pic[1]=制作缩略图(页面); createPDF(arrayPages);
猜你喜欢
  • 2011-04-18
  • 2017-10-07
  • 2012-03-11
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
  • 1970-01-01
相关资源
最近更新 更多