Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为移动(web开发)网站/使用显示大型PDF的最佳方式_Php_Jquery_Html_Ajax_Pdf - Fatal编程技术网

Php 为移动(web开发)网站/使用显示大型PDF的最佳方式

Php 为移动(web开发)网站/使用显示大型PDF的最佳方式,php,jquery,html,ajax,pdf,Php,Jquery,Html,Ajax,Pdf,我需要显示一个超过100页的PDF(是的,它是巨大的)在一个移动网站。这是行不通的,我需要想出一个替代方案 我使用PHP作为后端,使用jQueryMobile库作为移动框架 我曾考虑将PDF转换为html,但接下来的问题是如何加载每个页面或加载所有页面(就像使用JQM的多页面布局一样) 我想让每个页面都有一个AJAX请求,并以这种方式加载它,但我想对任何替代方法/想法有一个新的看法 我还担心连接速度,因为移动设备不同于Edge、3G、4G、无线等。。。因此,使加载时间尽可能快是必须的 更新: P

我需要显示一个超过100页的PDF(是的,它是巨大的)在一个移动网站。这是行不通的,我需要想出一个替代方案

我使用PHP作为后端,使用jQueryMobile库作为移动框架

我曾考虑将PDF转换为html,但接下来的问题是如何加载每个页面或加载所有页面(就像使用JQM的多页面布局一样)

我想让每个页面都有一个AJAX请求,并以这种方式加载它,但我想对任何替代方法/想法有一个新的看法

我还担心连接速度,因为移动设备不同于Edge、3G、4G、无线等。。。因此,使加载时间尽可能快是必须的

更新: PDF文件大小约为9MB,是的,这不是很多,但对于连接速度较慢的移动浏览器来说,这将需要一些时间来显示,如果不先超时的话


提前感谢。

我会这样做,因为您并不是真的提供PDF(可能需要书签、图形、导航链接和其他复杂内容),只是需要加载大量内容,并确保请求不会太大,以致页面超时

关注事项:

  • 大文件大小和超时
  • 必须履行全部协议
第一步 将每个页面作为自己的原始文本组件。您可以通过为每个页面生成单独的文件,或者让一个PHP脚本提供单独的内容页面来实现这一点。谷歌到处都是将PDF翻译成文本的PHP

出于我们的目的,您有一个PHP文件,用于提供以下方法中的内容:
/agreement.php?page=1

第二步 将内容请求到一个div中,使用递归使其在第一个页面成功加载后加载到下一个页面(而不是在加载之前或之后。异步可能会很混乱)

担心
  • 将其保持为简单文本,在同一渲染中的100页图形数据可能会占用大量内存
  • 您的ajax请求可能会由于多种原因而失败,我输入的错误重试不会覆盖所有原因,并且可能会永远持续下去,例如php脚本崩溃
  • 在协议加载完成之前,用户可能会点击“同意”
  • 风格。在我的示例中,我使用了“幻数”,其中100页是一个硬编码的值,而不是一个常量,在实现此功能时不要这样做

我会这样做,因为您并不是真的提供PDF(可能需要书签、图形、导航链接和其他复杂内容),只是需要加载大量内容,并确保请求不会太大以至于页面超时

关注事项:

  • 大文件大小和超时
  • 必须履行全部协议
第一步 将每个页面作为自己的原始文本组件。您可以通过为每个页面生成单独的文件,或者让一个PHP脚本提供单独的内容页面来实现这一点。谷歌到处都是将PDF翻译成文本的PHP

出于我们的目的,您有一个PHP文件,用于提供以下方法中的内容:
/agreement.php?page=1

第二步 将内容请求到一个div中,使用递归使其在第一个页面成功加载后加载到下一个页面(而不是在加载之前或之后。异步可能会很混乱)

担心
  • 将其保持为简单文本,在同一渲染中的100页图形数据可能会占用大量内存
  • 您的ajax请求可能会由于多种原因而失败,我输入的错误重试不会覆盖所有原因,并且可能会永远持续下去,例如php脚本崩溃
  • 在协议加载完成之前,用户可能会点击“同意”
  • 风格。在我的示例中,我使用了“幻数”,其中100页是一个硬编码的值,而不是一个常量,在实现此功能时不要这样做

是否有真正的商业原因(即,你可以凭经验证明你会赚钱)人们需要100页PDF格式的手机?我怀疑这不是你真正的问题。而且——100页根本不算大。是的,这是一份许可协议,他们必须验证他们是否阅读过。我知道95%的人可能只会接受条款而不阅读,但有些人(希望比我猜测的更多)读了协议书,很搞笑(以一种施虐的方式),100页的许可协议使用该服务?叹息。。。好吧我会想办法的。你应该用wifi超时问题更新你的答案,这是一份许可协议。你可以为此感谢法律团队。这是一个真正的商业原因(即,你可以凭经验证明你会赚钱)人们需要100页PDF格式的选定手机?我怀疑这不是你真正的问题。而且——100页根本不算大。是的,这是一份许可协议,他们必须验证他们是否阅读过。我知道95%的人可能只会接受条款而不阅读,但有些人(希望比我猜测的更多)读了协议书,很搞笑(以一种施虐的方式),100页的许可协议使用该服务?叹息。。。好吧我会想办法的。你应该用wifi超时问题更新你的答案,这是一个许可协议。你可以为此感谢法律团队。这似乎是一个很好的解决方案,只是我想用ajax调用加载每个页面,而不是一次加载。这似乎是一个很好的解决方案,只是我想用ajax调用加载每个页面,而不是一次加载所有页面
//Untested code
function loadPages(n) {
    $.ajax({
        url: './agreement.php',
        data: {'page':n},
        error : function (){ loadPages(n) }, //Try to load again
        success: function (pageData) {
            n++;
            $('#agreementBox').append(pageData);//Puts data into document
            if (n > 100) {return 0;} //Exit recursion on 100th page being appended
            loadPages(n); //Recursive call, loads next page after this one has been loaded
        }
    });
}
loadPages(1); //Call function for the first time.