页面 PDF Viewer 上的控件 PDFViewer 上的控件插件尚未实例化

问题描述 投票:0回答:1

我的 pdf 预览控件有问题, 当我在没有 pdf 预览的页面上编辑某些内容时,它会显示一条错误消息“页面 PDF 查看器上的控件 PDFViewer 上的控件加载项尚未实例化。”。我在两页预览下面的列表中的 pdf 预览只有其设置和触发器

pageextension 80003 IllegalMonitoringPDFViewer extends " Illegal Monitoring "
{
    layout
    {
        addfirst(factboxes)
        {
            part(PDFViewerMatrix; "PDFV PDF Viewer Factbox")
            {
                ApplicationArea = All;
                Visible = VisiblePDF;
            }
        }
    }
    var
        VisiblePDF: Boolean;

    trigger OnAfterGetRecord()
    var
        DocumentAttachment: Record "Document Attachment";
        RecId: Integer;
        RecRef: RecordRef;
    begin
        VisiblePDF := false;
        RecRef.Open(Database::"illegal trade ");
        RecId := RecRef.Number();
        DocumentAttachment.Reset();
        DocumentAttachment.SetFilter("Table ID", Format(RecId));
        DocumentAttachment.SetFilter("No.", Rec."No.");
        if DocumentAttachment.FindLast() then
            VisiblePDF := true
        else
            VisiblePDF := false;
    end;

    trigger OnAfterGetCurrRecord()
    var
        DocumentAttachment: Record "Document Attachment";
        RecId: Integer;
        RecRef: RecordRef;
    begin
        VisiblePDF := false;
        RecRef.Open(Database::"illegal trade ");
        RecId := RecRef.Number();
        DocumentAttachment.Reset();
        DocumentAttachment.SetFilter("Table ID", Format(RecId));
        DocumentAttachment.SetFilter("No.", Rec."No.");
        if DocumentAttachment.FindLast() then begin
            VisiblePDF := true;
            CurrPage.PDFViewerMatrix.Page.setrecord(DocumentAttachment);
        end else
            VisiblePDF := false;

    end;


}

变量 pdfText 中有对附件的引用

page 80001 "PDFV PDF Viewer Factbox"
{

    Caption = 'PDF Viewer';
    PageType = CardPart;
    SourceTable = "Document Attachment";
    DeleteAllowed = false;
    InsertAllowed = false;
    LinksAllowed = false;


    layout
    {
        area(content)
        {
            group(General)
            {
                ShowCaption = false;
                usercontrol(PDFViewer; "PDFV PDF Viewer")
                {
                    ApplicationArea = All;

                    trigger ControlAddinReady()
                    begin
                        SetPDFDocument(Rec);
                    end;
                }
            }
        }
    }
    procedure setrecord(var DocumentAtt: Record "Document Attachment")
    begin

        SetPDFDocument(DocumentAtt);
        CurrPage.Update(false);
    end;

    local procedure SetPDFDocument(var DocumentAttachment: Record "Document Attachment")
    var
        PDFAsTxt: Text;
    begin
        CurrPage.PDFViewer.LoadPDF(PDFAsTxt, true);
    end;
}

编辑此页面时,无论我编辑什么都会出现问题


page 50016 "Illegal announcement form"
{
    Caption = 'Announcement form';
    PageType = Card;
    SourceTable = "illegal trade ";
    RefreshOnActivate = false;
    layout
    {}
}

您对如何解决这个问题有什么想法吗?

javascript dynamic-programming dynamics-al
1个回答
0
投票

您提供的示例使用 Volodymyr Dvernytskyi 的 GitHub 存储库的 PDFViewer:https://github.com/Drakonian/bc-pdf-viewer 如果我没有记错的话。 (向弗拉基米尔大声喊叫!)

在提到的存储库中,使用自定义表来存储 PDF。 我们现在正在尝试用“文档附件”表替换自定义表,对吗?

从第 80004 页“PDFV PDFViewerDocAttachament”复制SetPDFDocument() 过程可能是一个很好的起点:

local procedure SetPDFDocument()
var
    Base64Convert: Codeunit "Base64 Convert";
    TempBlob: Codeunit "Temp Blob";
    InStreamVar: InStream;
    OutStreamVar: OutStream;
    PDFAsTxt: Text;
begin
    CurrPage.PDFViewer.SetVisible(Rec."Document Reference ID".HasValue());
    if not Rec."Document Reference ID".HasValue() then
        exit;

    TempBlob.CreateInStream(InStreamVar);
    TempBlob.CreateOutStream(OutStreamVar);
    Rec."Document Reference ID".ExportStream(OutStreamVar);

    PDFAsTxt := Base64Convert.ToBase64(InStreamVar);

    CurrPage.PDFViewer.LoadPDF(PDFAsTxt, true);
end;

Rec 基于 SourceTable =“文档附件”。我们有责任改变这个程序以满足我们自己的需要。请注意,“文档附件”表的 PK 由 5 个表字段组合而成:表 ID、编号、附件文档类型、行号和 ID。

专注于您的pageextension 80003 IllegalMonitoringPDFViewer,行CurrPage.PDFViewerMatrix.Page.setrecord(DocumentAttachment);默认情况下不会在该存储库中工作,因为“PDFV PDF Viewer Matrix”中的底层逻辑使用自定义pdf存储桌子。我假设你已经改变了这一点,这留下了为什么它不起作用的问题。

使用上述存储库的 PDFViewer 在 v24.3 w1 bc 容器中为我工作。未收到错误消息:“PDF 查看器页面上的控件 PDFViewer 上的控件加载项尚未实例化。”相反,上传的 PDF 内容(进入“文档附件”表)显示在客户列表扩展中。

© www.soinside.com 2019 - 2024. All rights reserved.