在Android下链接到远程PDF文件失败

vbopmzt1  于 2023-10-14  发布在  Android
关注(0)|答案(3)|浏览(136)

我使用iText 5生成一个PDF文件,其中包含一个指向远程文件的链接,并使用以下代码:

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;

Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(new File("pdf/TestLink.pdf")));
document.open();
document.add(new Chunk("link").setAnchor("Tunesbook.pdf"));
document.close();

由此产生的PDF在我的Linux桌面上工作正常,点击“链接”打开文件“Tunesbook.pdf”,但当我在Android上使用它时什么也没有发生。如何让它在Android上工作?
我还尝试了使用chunk.setRemoteGotoPdfAction.gotoRemotePage的版本,这些版本都可以在我的桌面上工作,但在Android上失败了。
我使用Android和Linux桌面上的PDF阅读器阅读PDF。

eiee3dmh

eiee3dmh1#

如果你想显示PDF文件,你可以使用下面的结构。

File file = new File("path-to-pdf-file");
Uri uri = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);

也可以使用AndroidPdfViewer

gt0wga4j

gt0wga4j2#

我认为你必须:

  • 将iText依赖项添加到您的应用程序级别gradle文件,例如:实现'com.itextpdf:itextpdf:5.5.13'
  • 为清单文件添加读/写权限,例如:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • 创建一个Document示例,例如Document document = new Document()
  • 获取一个PdfWriter示例,并为它提供文档和输出文件路径,例如:getInstance(document,new FileOutputStream(file))
  • 打开文档并添加内容,例如:document.open(); document.add(new Paragraph(“Hello PDF”))
  • 关闭文档,例如:document.close()

我希望这对你有帮助。

efzxgjgh

efzxgjgh3#

您遇到的问题与用户使用“文件”应用并尝试使用Chrome或其他浏览器显示.html文件时遇到的问题相同,并且html源包含带有相对src路径的img标记。
浏览器将接收一个内容方案uri和读取html文件的权限。
为了读取图像,它会改变最后一个路径段的内容方案,通常代表文件名。
但是对于这个新的uri,它没有读取文件的权限,因此是空白的。
同样的,阅读器。
即使它设法为另一个pdf文件构建了一个漂亮的uri,它也没有读取权限。

相关问题