我有一个按钮可以打开像这样的本地pdf手册
File file = storeFile(is, "user_manual.pdf");
Uri uri = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
这将在安装的Adobe Acrobat Reader中打开文档,我们的设置可确保始终安装Acrobat Reader。
问题是手册有50页。如果用户向下滚动并回击并选择用户手动按钮,它会将我们带回到pdf的中间位置,这通常是好的但我有一个特定的要求,即它必须打开具有索引的第一页。
如何打开文档,使其始终显示pdf的第一页?
我试过了
intent.putExtra("page", 1); // parameter used on desktop Acrobat reader
和
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
和
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
但它总是在用户第一次离开时第二次打开pdf。
答案 0 :(得分:0)
当用户按下后退按钮时,尝试关闭已打开文件.pdf
上的视图:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
//replaces the default 'Back' button action
if(keyCode== KeyEvent.KEYCODE_BACK)
{
Intent intent = new Intent(PDFVIEW.this, MainActivity.class);
startActivity(intent);
finish();
}
return true;
}
答案 1 :(得分:0)
我有两个答案。如果第一个答案有效,那就太好了。如果没有,第二个答案肯定适用于Adobe Reader,但它的工作量更大。
答案1:使用开放参数
Adobe发布了一个名为Parameters for Opening PDF Files的文档,其中确实有一个名为page
的参数。你这样使用它:
intent.putExtra("page", 1);
你试过这个:
intent.putExtra("page", "1");
也许参数需要作为字符串传递(虽然它实际上是一个整数)。
答案2:引入开放行动
open action允许您在文档打开后立即触发操作,例如有人打开你的文档时,你可以执行一些JavaScript。在您的情况下,您想要在第一页打开文档。
向PDF文档添加打开操作需要您更改PDF文档。您需要一些使用此操作更新PDF的软件。有关C#示例,请参阅How to set initial view properties?。这里有一些Java示例:iText 5 example / iText 7 example。
答案 2 :(得分:0)
Mmmh,
我认为你可以使用AR命令行选项,如:
(Adobe Reader的路径)/ A" page = 100" "(PDF文件路径)"
或AR activeX /浏览器控件:
" PDF浏览器控件可通过AxAcroPDFLib.AxAcroPDF接口获得,该接口提供以下用于以编程方式控制PDF文档窗口的方法: ●GoBackwardStack ●GoForwardStack ●GotoFirstPage ●GotoLastPage ....."
HTH,Reinhard