代码之家  ›  专栏  ›  技术社区  ›  Diego Vinícius

如何使用cfpdf作为源在cfcontent中添加javascript导入

  •  0
  • Diego Vinícius  · 技术社区  · 6 年前

    我决定用 冷融 自己来处理这个使用 函数和外部化二进制 ,效果很好,但我有一个 google分析 C含量

    我通过iframe临时调用cfpdf生成的内容的解决方案,但是 基数64 框架 是通过base64使用的,已经作为一个普通的url使用了,我返回到了在移动设备中不工作的初始问题。

    基本上,我需要将我的分析标签插入到生成的cfcontent的html中,但是我不能手动操作源代码,因为内容来自cfpdf

    <cfhtmlhead text='
        <script async src="https://www.googletagmanager.com/gtag/js?id=#Key#"></script>
        <script> 
            window.dataLayer = window.dataLayer || []; 
            function gtag(){dataLayer.push(arguments);} 
            gtag("js", new Date());     
            gtag("config", "#Key#"); 
        </script>'>
    <cfpdf action="read" name="RawFile" source="#RawUrl#" />
    <cfcontent variable="#toBinary(RawFile)#" type="application/pdf" />
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   Alex    6 年前

    你的 cfcontent 输出二进制数据并告诉浏览器将其视为 application/pdf Content-Type HTTP头)。不能向其中添加HTML或JavaScript,因为这样会破坏PDF文档。我在这里看到两种选择:

    1使用中间页

    open_pdf.cfm

    <cfoutput>
    
        <h1>Please wait while we prepare the PDF document for you...</h1>
    
        <script async src="https://www.googletagmanager.com/gtag/js?id=#Key#"></script>
        <script>
    
            window.dataLayer = window.dataLayer || []; 
            function gtag(){dataLayer.push(arguments);} 
            gtag("js", new Date());     
            gtag("config", "#Key#");
    
            var secondsToWait = 4;
            setTimeout(function() { window.location.href = 'render_pdf.cfm'; }, secondsToWait * 1000);
    
        </script>
    
    </cfoutput>
    

    render_pdf.cfm

    <cfpdf action="read" name="RawFile" source="#RawUrl#" />
    <cfcontent variable="#toBinary(RawFile)#" type="application/pdf" />
    

    打开pdf.cfm

    2在你的PDF中嵌入谷歌分析

    你可以 run JavaScript code in a PDF document . 请注意,由于PDF查看器中的安全限制,这可能有点棘手。即使如此,我还是强烈建议你不要使用这个选项,因为它可能会导致更多的问题,而不是正确的GA印象。

    推荐文章