【问题标题】:How to view particular page of an pdf using HTML in browser?如何在浏览器中使用 HTML 查看 pdf 的特定页面?
【发布时间】:2013-08-19 04:41:13
【问题描述】:

我想打开一个 pdf 文件并在按下按钮时显示特定页面

我在 onclick 监听器中尝试的是:

$("body").prepend("<object id='largePdf' data= '" + sourceFolder + "MyNews/2013/08/16/0/0/A/Content/1/A_ALL.pdf#page=1' type='application/pdf' width='1861' height='3061'>alt : <a href= '" + sourceFolder + "MyNews/2013/08/16/0/0/A/Content/1/A_ALL.pdf#page=1'>pg001.pdf</a></object>")

问题是,它似乎无法引用并仅显示第 1 页,而且 pdf 的大小也没有按预期缩放。例如div 是确切的大小,但内容不是。例如如果我具体size = w:1000,h:2000,背景:w:1000,h:2000,但内容可能是w:800,h:1500。

怎么可能 我解决问题?谢谢

【问题讨论】:

  • 或者我应该使用任何 pdf 查看器插件而不是内置插件?谢谢
  • 转到此处goo.gl/7XXaDB 并查看与下拉菜单关联的代码。我不能给你看,因为我在我的 iPad 上,查看和复制源代码很痛苦
  • 感谢您的帮助,它似乎使用插件,例如。 pdf.js 来更好地控制 pdf 的显示是一个更好的选择
  • 你需要看看它生成的URL格式。例如,打开我在 chrome 中提供的页面,按 F12 并在 HTML 下拉菜单中选择页面时查看 net 选项卡

标签: javascript jquery html pdf adobe


【解决方案1】:

如果您知道要访问的页码,并且您的 PDF 插件是 Adob​​e Acrobat Reader 附带的插件,您可以这样做:

largePdf.setCurrentPage(n);

API 描述为here.

下面是在 AcroPdf.dll 上使用 OleView 获得的 API 的简短列表(插件,“C:\Program Files (x86)\Common Files\Adobe\Acrobat\ActiveX\AcroPDF.dll”在我的 PC 上) .不过看起来好像没有办法找到总页数。

interface IAcroAXDocShim : IDispatch {
    [id(0x00000001), propget, helpstring("property src")]
    HRESULT src([out, retval] BSTR* pVal);
    [id(0x00000001), propput, helpstring("property src")]
    HRESULT src([in] BSTR pVal);
    [id(0x00000002), helpstring("method LoadFile")]
    HRESULT LoadFile(
                    [in] BSTR fileName, 
                    [out, retval] VARIANT_BOOL* ret);
    [id(0x00000003), helpstring("method setShowToolbar")]
    HRESULT setShowToolbar([in] VARIANT_BOOL On);
    [id(0x00000004), helpstring("method gotoFirstPage")]
    HRESULT gotoFirstPage();
    [id(0x00000005), helpstring("method gotoLastPage")]
    HRESULT gotoLastPage();
    [id(0x00000006), helpstring("method gotoNextPage")]
    HRESULT gotoNextPage();
    [id(0x00000007), helpstring("method gotoPreviousPage")]
    HRESULT gotoPreviousPage();
    [id(0x00000008), helpstring("method setCurrentPage")]
    HRESULT setCurrentPage([in] long n);
    [id(0x00000009), helpstring("method goForwardStack")]
    HRESULT goForwardStack();
    [id(0x0000000a), helpstring("method goBackwardStack")]
    HRESULT goBackwardStack();
    [id(0x0000000b), helpstring("method setPageMode")]
    HRESULT setPageMode([in] BSTR pageMode);
    [id(0x0000000c), helpstring("method setLayoutMode")]
    HRESULT setLayoutMode([in] BSTR layoutMode);
    [id(0x0000000d), helpstring("method setNamedDest")]
    HRESULT setNamedDest([in] BSTR namedDest);
    [id(0x0000000e), helpstring("method Print")]
    HRESULT Print();
    [id(0x0000000f), helpstring("method printWithDialog")]
    HRESULT printWithDialog();
    [id(0x00000010), helpstring("method setZoom")]
    HRESULT setZoom([in] single percent);
    [id(0x00000011), helpstring("method setZoomScroll")]
    HRESULT setZoomScroll(
                    [in] single percent, 
                    [in] single left, 
                    [in] single top);
    [id(0x00000012), helpstring("method setView")]
    HRESULT setView([in] BSTR viewMode);
    [id(0x00000013), helpstring("method setViewScroll")]
    HRESULT setViewScroll(
                    [in] BSTR viewMode, 
                    [in] single offset);
    [id(0x00000014), helpstring("method setViewRect")]
    HRESULT setViewRect(
                    [in] single left, 
                    [in] single top, 
                    [in] single width, 
                    [in] single height);
    [id(0x00000015), helpstring("method printPages")]
    HRESULT printPages(
                    [in] long from, 
                    [in] long to);
    [id(0x00000016), helpstring("method printPagesFit")]
    HRESULT printPagesFit(
                    [in] long from, 
                    [in] long to, 
                    [in] VARIANT_BOOL shrinkToFit);
    [id(0x00000017), helpstring("method printAll")]
    HRESULT printAll();
    [id(0x00000018), helpstring("method printAllFit")]
    HRESULT printAllFit([in] VARIANT_BOOL shrinkToFit);
    [id(0x00000019), helpstring("method setShowScrollbars")]
    HRESULT setShowScrollbars([in] VARIANT_BOOL On);
    [id(0x0000001a), helpstring("method GetVersions")]
    HRESULT GetVersions([out, retval] VARIANT* ret);
    [id(0x0000001b), helpstring("method setCurrentHightlight")]
    HRESULT setCurrentHightlight(
                    [in] long a, 
                    [in] long b, 
                    [in] long c, 
                    [in] long d);
    [id(0x0000001c), helpstring("method setCurrentHighlight")]
    HRESULT setCurrentHighlight(
                    [in] long a, 
                    [in] long b, 
                    [in] long c, 
                    [in] long d);
    [id(0x0000001d), helpstring("method postMesage")]
    HRESULT postMessage([in] VARIANT strArray);
    [id(0x0000001e), propget, helpstring("property messageHandler")]
    HRESULT messageHandler([out, retval] VARIANT* pVarOut);
    [id(0x0000001e), propput, helpstring("property messageHandler")]
    HRESULT messageHandler([in] VARIANT pVarOut);
    [id(0x0000001f), helpstring("method execCommand")]
    HRESULT execCommand([in] VARIANT strArray);
};

【讨论】:

  • 谢谢!但我想知道我是否有一个例如 60 页的 PDF。如果我想查看第 25 页,它会在我查看之前下载整个 pdf,还是可以在选择查看时动态下载该页面?我不介意使用任何插件。谢谢
  • 我还没有验证这种行为,但我认为它的工作原理是这样的:它会逐页下载背景中的文档,但如果你这样做setCurrentPage,它会跳转到那里并下载该页面.尝试使用我发布的 API 链接(400 页)并告诉我们:)
  • 只有在服务器支持字节服务时才会发生这种情况
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-13
  • 2017-10-07
  • 1970-01-01
  • 2019-12-09
  • 2011-03-26
  • 1970-01-01
相关资源
最近更新 更多