Examples / collections / csharp

Collections

A complete, runnable csharp program — 59 lines, shipped in your download.

Demonstrates Core SDK

Same example, other languages: activex_cpp c cpp cpp_linux python vbnet

examples/csharp/collections/collections.cs 59 lines
//  collections -- C# port of examples\Vb6\collections\collections.bas
//  Imports a cover page, creates a PDF portfolio (collection) and attaches
//  three files to it.
using System;
using System.IO;
using LumasPdfSdk;

class Collections
{
    static TErrorProc _err = ErrProc;
    static int ErrProc(IntPtr Data, int ErrCode, string ErrMessage, int ErrType)
    {
        Console.WriteLine(ErrMessage);
        return 0;
    }

    static string Rel(string rel)
    {
        return Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, rel));
    }

    static void Main()
    {
        int ef;
        IntPtr pdf = LumasPdf.pdfNewPDF();
        LumasPdf.pdfCreateNewPDFW(pdf, "");          // The output file is opened later
        LumasPdf.pdfSetOnErrorProc(pdf, IntPtr.Zero, _err);

        LumasPdf.pdfSetImportFlags(pdf, LumasPdfConsts.ifImportAll | LumasPdfConsts.ifImportAsPage);
        if (LumasPdf.pdfOpenImportFileW(pdf, Rel("../../test_files/collection_en.pdf"), (int)LumasPdfConsts.ptOpen, "") < 0)
        {
            LumasPdf.pdfDeletePDF(pdf);
            Console.WriteLine("Input file \"../../test_files/collection_en.pdf\" not found!");
            return;
        }
        LumasPdf.pdfImportPDFFile(pdf, 1, 1.0, 1.0);
        LumasPdf.pdfCloseImportFile(pdf);
        LumasPdf.pdfCreateCollection(pdf, (int)TColView.civTile);

        ef = LumasPdf.pdfAttachFileW(pdf, Rel("../../test_files/taxform.pdf"), "A PDF file...", true);
        LumasPdf.pdfSetColDefFile(pdf, (uint)ef);     // Opened when viewing in Acrobat 8 or later
        LumasPdf.pdfAttachFileW(pdf, Rel("../../test_files/fulltest.emf"), "An EMF file...", true);
        LumasPdf.pdfAttachFileW(pdf, Rel("../../test_files/sample.txt"), "A text file...", true);

        string outFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "out.pdf");
        if (LumasPdf.pdfHaveOpenDoc(pdf))
        {
            if (!LumasPdf.pdfOpenOutputFileW(pdf, outFile))
            {
                LumasPdf.pdfDeletePDF(pdf);
                return;
            }
        }
        LumasPdf.pdfCloseFile(pdf);
        Console.WriteLine("PDF Collection \"" + outFile + "\" successfully created!");
        LumasPdf.pdfDeletePDF(pdf);
    }
}

This file is in the SDK at examples/csharp/collections/collections.cs. The build fails if this page and that file ever differ.