【发布时间】:2017-12-20 19:31:52
【问题描述】:
我正在使用 iTextPdf(适用于 Android 的 iTextG)库为我的 Android 应用程序将 Html 转换为 PDF 文档。除了收据上的标志外,一切对我来说都很好。我的 html 包含 <img> 标签和图片的源 http url
<img src="http...."></img>
创建的 pdf 没有图像。在我的 Java 应用程序中运行的相同代码和 html 显示带有创建的 PDF 的徽标(这表明访问图像没有问题)。我想知道此功能是否仅与 Java 兼容而与 Android 不兼容? 我正在使用以下依赖项:
compile 'com.itextpdf:itextg:5.5.10'
compile 'com.itextpdf.tool:xmlworker:5.5.10'
HTML代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="English">
<head>
<title>Title</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
</head>
<body>
<img src="https://image.flaticon.com/teams/slug/google.jpg"></img>
<h1>Fischerstube</h1>
</body>
</html>
主要活动中的功能:
private void htmlToPdf(String html) throws DocumentException, IOException {
try {
File file = new File(Environment.getExternalStorageDirectory() + File.separator + "logo.pdf");
OutputStream fileOutputStream = new FileOutputStream(file);
Document document = new Document();
document.setPageSize(new Rectangle(201,720));
PdfWriter writer = PdfWriter.getInstance(document, fileOutputStream);
document.open();
InputStream is = new ByteArrayInputStream(html.getBytes());
XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);
document.close();
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
它仅呈现<h1> 标签并显示 Fischerstube,但在 ANDROIRD DEVICE 上没有图像。
哪位大神能帮帮我,不胜感激。
【问题讨论】:
-
iTextG 和 XMLWorker 的版本必须相同。
-
@AmedeeVanGasse:我检查了 5.5.10 的 xmlworker 和 itextg 并得到了相同的行为(无图像)。我不应该有问题,因为这种组合在 Java 上运行良好,但在 Android 上运行良好。
-
@AmedeeVanGasse 请检查我刚刚更新了我在 Android 中使用的信息。
-
您的 Android 设备似乎不允许访问外部资源,或者允许访问,但下载图像超时。另外:如果您向他们提供的应用程序会严重增加他们的数据使用费用,您的客户可能会非常生气。