【问题标题】:Salesforce Visualforce (VFP) Page Renders as PDF but when Downloaded, the data will not show in the tableSalesforce Visualforce (VFP) 页面呈现为 PDF,但下载后,数据不会显示在表格中
【发布时间】:2021-03-31 15:29:38
【问题描述】:

我设置了一个 VFP,它从列表视图中提取可检查的记录列表。它正确呈现并显示记录。但是由于某种原因,当我下载页面并在 Adob​​e 或网络中打开它时,它没有显示表格中的数据。

APEX 代码:

global virtual with sharing class LoadsBatchMill_V2 {
    global List<FR__Load__c> loadList {get;set;}
    global String renderAs { get; set; }
    global ApexPages.StandardSetController standardController;
    global Set<Id> loadIds = new Set<Id>();

    global LoadsBatchMill_V2(ApexPages.StandardSetController standardController){
        this.standardController = standardController;
        loadList = new List<FR__Load__c>();
        for (FR__Load__c load : (List<FR__Load__c>)standardController.getSelected()){ 
        loadIds.add(load.Id);
        }
        loadList = [SELECT Name, Pickup_By__c, Quantity__c, FR__Commodity__c, E_BOL_Link__c FROM FR__Load__c WHERE ID IN: loadIds];}
    }

VISUALFORCE 页面代码:

<apex:page standardController="FR__Load__c" extensions="LoadsBatchMill_V2" recordSetVar="Loads" sidebar="false" applyBodyTag="false" renderAs="PDF">
   <head>
        <style>
        
            body { 
                font-family: 'Arial Unicode MS'; 
            }
            blackline { 
                border: 1px solid #000;
            }
            table { 
                border-collapse: collapse;
                border-spacing: 0;
            }
            td,th{
                <!--border: 1px solid #8f8f8f;-->
                border: 1px solid #c7cdd4;
                padding: 5px;
            }
        </style>
    </head>
    
    <apex:pageBlock >
        <div style="body; font-size: .85em">
            <apex:image url="{!$Resource.FR}" width="120"/> <br /><br /><br />

    <apex:pageBlock rendered="true">
        <apex:pageBlockTable width="100%" align="center" style="border: none; vertical-align: bottom;" value="{!loadList}" var="L">
            <apex:column value="{!L.Name}"/>
            <apex:column value="{!L.Pickup_By__c}"/>
            <apex:column value="{!L.Quantity__c}"/>
            <apex:column value="{!L.FR__Commodity__c}"/>
        </apex:pageBlockTable>
    </apex:pageBlock>
  </apex:page>

【问题讨论】:

    标签: pdf salesforce render visualforce


    【解决方案1】:
    1. 注释掉&lt;apex:image url="{!$Resource.FR}"。静态资源中的图像通常不会在 PDF 中显示得很好,您需要一个带有“外部可用图像”的文档记录。但它不应该导致整个事情失败,只是呈现为损坏的图标。

    2. &lt;apex:pageBlockTable&gt; 在 PDF 中的渲染效果很差,因为它带有一堆无法运行的 JavaScript。请参阅 https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_output_pdf_component_behavior.htm 打印精美的 PDF 是一门艺术,看看您是否可以使用 &lt;apex:repeat&gt; 并手动制作 &lt;table&gt;&lt;tr&gt;&lt;td&gt;...。看看你能不能从我对https://salesforce.stackexchange.com/q/194167/799的回答中窃取一些想法

    3. 为了调试(和更快的渲染),您可以从页面中删除renderAs="PDF",并在您对输出相对满意时添加它。

    【讨论】:

    • 静态资源图片显示正常。问题是数据未显示在 apex:pageblock 中,当从 PDF 预览屏幕下载 PDF 时,最后一列不允许单击超链接。我正在尝试从字段中呈现 PDF 链接,因为这是我知道的唯一方法。公式字段链接为:HYPERLINK('customdomainnamehere.force.com/sol/solWithSignature?id='+Id, "View BOL", "_blank")
    • “数字体验”(以前称为客户/合作伙伴社区)的链接是什么?试试&lt;apex:column headerValue="View"&gt;&lt;a href="https://customdomainnamehere.force.com/sol/solWithSignature?id={!L.Id}"&gt;Link&lt;/a&gt;&lt;/apex:column&gt;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多