OBJECT Codeunit 50000 Test PDF Report Background { OBJECT-PROPERTIES { Date=20-03-14; Time=22:35:37; Modified=Yes; Version List=; } PROPERTIES { OnRun=BEGIN SalesInvHeader.FINDFIRST; // Find a Sales Invoice to print SalesInvHeader.SETRECFILTER; // Create the PDF to a temporary file on the NAV server ServerTempFileName := FileMgt.ServerTempFileName('pdf'); REPORT.SAVEASPDF(REPORT::"Sales - Invoice",ServerTempFileName,SalesInvHeader); InputPdfReader := InputPdfReader.PdfReader(ServerTempFileName); // Open the created PDF // Next code is to prove that the background can be saved in a BLOB in the database BackgroundFileName := 'C:\Temp\TestBackground.pdf'; FileMgt.BLOBImportFromServerFile(TempBlob,BackgroundFileName); TempBlob.Blob.CREATEINSTREAM(InStr); // When using a file from disk instead of a BLOB, then replace InStr with BackgroundFileName BackgroundPdfReader := BackgroundPdfReader.PdfReader(InStr); // We use a second temporary file as output for the PDF including the background ServerTempFileName2 := FileMgt.ServerTempFileName('pdf'); FileStream := FileStream.FileStream(ServerTempFileName2, FileMode.Create); // The PdfStamper reads from the inputPdfReader and writes the output in the second temp file PdfStamper := PdfStamper.PdfStamper(InputPdfReader,FileStream); BackgroundPage := PdfStamper.GetImportedPage(BackgroundPdfReader,1); FOR i := 1 TO InputPdfReader.NumberOfPages DO BEGIN Background := PdfStamper.GetUnderContent(i); Background.AddTemplate(BackgroundPage,0,0); END; PdfStamper.Close(); InputPdfReader.Close(); BackgroundPdfReader.Close(); OutputFile := STRSUBSTNO('C:\Temp\Invoice %1.pdf',SalesInvHeader."No."); ClientTempFileName := FileMgt.DownloadTempFile(ServerTempFileName2); FileMgt.MoveFile(ClientTempFileName,OutputFile); HYPERLINK(OutputFile); END; } CODE { VAR SalesInvHeader@1000000017 : Record 112; TempBlob@1000000014 : Record 99008535; FileMgt@1000000000 : Codeunit 419; InputPdfReader@1000000003 : DotNet "'itextsharp, Version=5.5.0.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca'.iTextSharp.text.pdf.PdfReader"; BackgroundPdfReader@1000000004 : DotNet "'itextsharp, Version=5.5.0.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca'.iTextSharp.text.pdf.PdfReader"; PdfStamper@1000000005 : DotNet "'itextsharp, Version=5.5.0.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca'.iTextSharp.text.pdf.PdfStamper"; BackgroundPage@1000000012 : DotNet "'itextsharp, Version=5.5.0.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca'.iTextSharp.text.pdf.PdfImportedPage"; Background@1000000010 : DotNet "'itextsharp, Version=5.5.0.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca'.iTextSharp.text.pdf.PdfContentByte"; FileStream@1000000006 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.FileStream"; FileMode@1000000009 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.FileMode"; ServerTempFileName@1000000001 : Text; ServerTempFileName2@1000000013 : Text; BackgroundFileName@1000000008 : Text; ClientTempFileName@1000000002 : Text; OutputFile@1000000007 : Text; i@1000000011 : Integer; InStr@1000000015 : InStream; BEGIN END. } }