【问题标题】:converting html to pdf through javascript通过javascript将html转换为pdf
【发布时间】:2012-04-12 02:06:21
【问题描述】:

我是 Javascript 和 HTML 的新手,我正在 PhoneGap 中构建一个应用程序,PDF 转换器是我项目的一部分。为此,我参考了this 链接,当我在设备上安装此应用程序并运行它时,我得到一个异常ActivityNotFound 并在logcat 上显示一条错误消息:

03-28 17:41:39.406: E/Cordova(1781): Error loading url data:application/pdf;base64,JVBERi0xLjMKMyAwI.... and so on

我的HTML代码如下:

<!doctype>
<html>
<head>
    <title>jsPDF</title>
    <style type="text/css">
        * { padding: 0; margin: 0; }
        body {
            padding: 30px;
            font-family: Arial, Helvetica, sans-serif;
        }
        h1 {
            margin-bottom: 1em;
            border-bottom: 1px solid #ccc;
        }

        h2 {
            margin-bottom: 1em;
            border-bottom: 1px solid #ccc;
        }

        pre {
            border: 1px dotted #ccc;
            background: #f7f7f7;
            padding: 10px;
            margin-bottom: 1em;
        }

        h1 {
            margin-bottom: 0.7em;
        }

        h2 {
            margin-top: 1em;
        }
    </style>
    <script type="text/javascript" src="libs/base64.js"></script>
    <script type="text/javascript" src="libs/sprintf.js"></script>
    <script type="text/javascript" src="libs/jspdf.js"></script>
</head>

<body>

<h1>jsPDF Demos</h1>

<p>Examples for using jsPDF with Data URIs below. Go <a href="http://jspdf.googlecode.com/">back to project homepage</a>.</p>

<h2>Simple Two-page Text Document</h2>
<pre>var doc = new jsPDF();
doc.text(20, 20, 'Hello world!');
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
doc.addPage();
doc.text(20, 20, 'Do you like that?');

// Output as Data URI
doc.output('datauri');</pre>
<a href="javascript:demo1()">Run Code</a>





<script type="text/javascript">

function demo1() {
    var doc = new jsPDF();
    doc.text(20, 20, 'Hello world!');
    doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
    doc.addPage();
    doc.text(20, 20, 'Do you like that?');

    // Output as Data URI
    doc.output('datauri');
}


</script>


<script type="text/javascript">
// Google Analytics

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-2746979-4");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>

所以ActivityNotFound 例外是因为我的设备上没有 PDF 阅读器,还是我必须在我的代码中编写更多内容? 提前致谢。

【问题讨论】:

  • “所以 ActivityNotFound 异常是因为我没有在我的设备中安装 pdf 阅读器,或者我没有在我的代码中写入更多内容。” 你为什么不安装一个就知道了?
  • 我已经通过在我的设备中安装 pdf 阅读器进行了检查,但它仍然没有打开。在 log cat 中,我发现应用程序正在调用隐式意图 android.intent.action.VIEW 这意味着应用程序正在打开浏览器,据我所知,我知道在 android 中我们无法在浏览器中打开本地文件,所以如何打开生成的 pdf 文件...

标签: javascript html cordova pdf-generation


【解决方案1】:

这是因为您没有可以处理 mime 类型 application/pdf 的 Activity - 换句话说,您是正确的,您需要一个 pdf 阅读器。

【讨论】:

  • 我通过在我的设备中安装 pdf 阅读器进行了检查,但我仍然遇到同样的错误
  • 好的 - 如果可以的话,这段代码在您的桌面上是否可以在哪些浏览器中使用? - 并非所有浏览器都支持数据url,这可能是手机默认浏览器的问题。
  • 是的,这段代码可以在桌面上运行,但只能在 chrome 上运行,它不能在 mozilla 和 Internet Explorer 上运行。那么现在如何在手机默认浏览器中运行它...?
猜你喜欢
  • 2015-08-18
  • 1970-01-01
  • 2016-11-12
  • 2019-05-11
  • 2014-08-21
  • 1970-01-01
  • 2013-08-21
  • 2015-12-30
  • 2017-05-05
相关资源
最近更新 更多