Voici une solution intéressante pour fusionner des PDF sous AX Dynamics en utilisant une librairie C# de CodePlex (PDFSharp) : dynamicsaxgyan.wordpress.com/2012/08/15/merge-multiple-pdfs-in-to-single-pdf-report-using-x-in-dynamics-ax-2012/
Attention, il y a une petite coquille dans le code de sreenath qui a été relevé dans un commentaire de son article (cela donne une erreur de dépassement de boucle dans la librarie PDFSharp).
static void SR_MergePDFs(Args _args)
{
PdfSharp.Pdf.PdfDocument outPutPDFDocument = new PdfSharp.Pdf.PdfDocument();
PdfSharp.Pdf.PdfDocument inputPDFDocument = new PdfSharp.Pdf.PdfDocument();
PdfSharp.Pdf.PdfPages pdfPages;
container con = ["c:\\test2.pdf","c:\\test1.pdf"];
// winapi::findfirstfile
int i, j, pageCount;
FileName pdfFile;
InteropPermission permission;
str errorMessage;
;
try
{
permission = new InteropPermission(InteropKind::ClrInterop);
permission.assert();
for (i = 1; i <= conLen(con); i++)
{
pdfFile = conPeek(con,i);
inputPDFDocument = PdfSharp.Pdf.IO.PdfReader::Open(pdfFile, PdfSharp.Pdf.IO.PdfDocumentOpenMode::Import);
outputPDFDocument.set_Version(inputPDFDocument.get_Version());
pageCount = inputPDFDocument.get_PageCount();
pdfPages = inputPDFDocument.get_Pages();
// modification
if (pageCount > 0)
{
for (j = 0 ; j < pageCount; j++)
{
outputPDFDocument.AddPage(pdfPages.get_Item(j));
}
}
}
outputPDFDocument.Save("c\\mergedFile.pdf");
CodeAccessPermission::revertAssert();
}
catch(Exception::CLRError)
{
// Get the CLR error before any other CLR operation
errorMessage = AifUtil::getClrErrorMessage();
CodeAccessPermission::revertAssert();
throw error(errorMessage);
}
}
Thanks to sreenath for this nice solution.
No comments:
Post a Comment