1

我有创建 Web 应用程序的新任务(我将使用 Asp.net + C#): • 客户每天给我们 X 个 PDF 文件(x 每天都会不同) • 我的应用程序需要获取此 PDF 文件并在每个 PDF 文件的第 3 页(不是每 3 页,就在第 3 页之后)之后插入一个空白页,然后将所有这些 PDF 文件连接成一个大 PDF 文件。我正在考虑使用 Aspose,因为它似乎可以连接 pdf 文件,但我必须检查它是否也可以在 pdf 文件中插入页面。

是否有任何其他插件、Web 服务、背后的代码甚至是您知道的技术?

4

2 回答 2

1

使用Docotic.Pdf 库可以很容易地完成这项任务。

这是合并文件的代码,同时在每个文件的第三页之后添加空白页。

public static void insertBlanksAndMerge()
{
    string[] filesToMerge = { "file1.pdf", "file2.pdf" };
    
    // open first file
    int pagesBefore = 0;
    using (PdfDocument pdf = new PdfDocument(filesToMerge[0]))
    {
        pdf.InsertPage(pagesBefore + 3);

        // append all other documents
        for (int i = 1; i < filesToMerge.Length; i++)
        {
            pagesBefore = pdf.PageCount;

            pdf.Append(filesToMerge[i]);
            pdf.InsertPage(pagesBefore + 3);
        }

        pdf.Save(@"out.pdf");
    }
}

请注意,PdfDocument构造函数和Append方法不仅可以使用文件名,还可以使用流和字节缓冲区。

现场提供更多样品。

免责声明:我是该库的开发人员之一。

于 2013-09-19T18:51:36.213 回答
1

我使用 iTextsharp 来合并 pdf 文件。这是我使用的代码。

string[] lstFiles=new string[3];
    lstFiles[0]=@"C:/pdf/1.pdf";
    lstFiles[1]=@"C:/pdf/2.pdf";
    lstFiles[2]=@"C:/pdf/3.pdf";

    PdfReader reader = null;
    Document sourceDocument = null;
    PdfCopy pdfCopyProvider = null;
    PdfImportedPage importedPage;
    string outputPdfPath=@"C:/pdf/new.pdf";


    sourceDocument = new Document();
    pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));

    //Open the output file
    sourceDocument.Open();

    try
    {
        //Loop through the files list
        for (int f = 0; f < lstFiles.Length-1; f++)
        {
            int pages =get_pageCcount(lstFiles[f]);

            reader = new PdfReader(lstFiles[f]);
            //Add pages of current file
            for (int i = 1; i <= pages; i++)
            {
                importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                pdfCopyProvider.AddPage(importedPage);
            }

            reader.Close();
         }
        //At the end save the output file
        sourceDocument.Close();
    }
    catch (Exception ex)
    {
        throw ex;
    }


private int get_pageCcount(string file)
{
    using (StreamReader sr = new StreamReader(File.OpenRead(file)))
    {
        Regex regex = new Regex(@"/Type\s*/Page[^s]");
        MatchCollection matches = regex.Matches(sr.ReadToEnd());

        return matches.Count;
    }
}

编辑:您需要的参考是

using iTextSharp.text;
using iTextSharp.text.pdf;
于 2014-03-02T02:39:40.503 回答