我的 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
{}
}
您对如何解决这个问题有什么想法吗?
您提供的示例使用 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 内容(进入“文档附件”表)显示在客户列表扩展中。