如何在 C# 上使用预览为 android 创建 PDF 查看器
Posted
技术标签:
【中文标题】如何在 C# 上使用预览为 android 创建 PDF 查看器【英文标题】:How to create PDF viewer for android on C# with preview 【发布时间】:2019-06-30 07:04:32 【问题描述】:我想创建或查找在 android 上使用预览选项读取 PDF 文件的应用程序。所以它把所有页面的缩略图放在1上。
如何使用 C# 在 Xamarin 上执行此操作?
【问题讨论】:
这里有类似的讨论。(***.com/questions/41176549/…) 【参考方案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);以上是关于如何在 C# 上使用预览为 android 创建 PDF 查看器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Studio 上更改布局预览默认设备