Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在特定页面或位置合并PDF文件ASP.NET_Asp.net_Pdf_Merge - Fatal编程技术网

在特定页面或位置合并PDF文件ASP.NET

在特定页面或位置合并PDF文件ASP.NET,asp.net,pdf,merge,Asp.net,Pdf,Merge,我们有一个ASP.NET应用程序,我正在尝试合并两个PDF文件,我们目前正在使用BCL easyPDF7库。我试图在特定位置或页面合并新文件(例如在主文档的第三页之后),但我发现此库中的合并只是在最后附加文件 我们决定使用新的工具PDF4NET,我从PDF4NET的示例代码中观察到,它们还提供合并功能,最终附加到文档中 我们有没有办法做到这一点?(通过PDF4NET或BCL easyPDF7)请分享您的观点。我以前使用过iTextSharp,基本上创建了一个新的输出pdf,然后读入新文档并循环浏

我们有一个ASP.NET应用程序,我正在尝试合并两个PDF文件,我们目前正在使用BCL easyPDF7库。我试图在特定位置或页面合并新文件(例如在主文档的第三页之后),但我发现此库中的合并只是在最后附加文件

我们决定使用新的工具PDF4NET,我从PDF4NET的示例代码中观察到,它们还提供合并功能,最终附加到文档中


我们有没有办法做到这一点?(通过PDF4NET或BCL easyPDF7)请分享您的观点。

我以前使用过iTextSharp,基本上创建了一个新的输出pdf,然后读入新文档并循环浏览页面,将页面添加到新的输出文档中。这甚至可以维护每个页面的页面大小和方向信息

以下是将pdf添加到输出的代码:

    int pc = pdfReader.NumberOfPages;
    int p, rotation;
    Rectangle box;
    PdfImportedPage page;

    for (p = 0; p < pc; p++) {
        pageNo++;

        page = pdfWriter.GetImportedPage(pdfReader, p + 1);
        rotation = pdfReader.GetPageRotation(p + 1);
        box = pdfReader.GetPageSizeWithRotation(p + 1);

        outputDoc.SetPageSize(box);
        outputDoc.NewPage();

        if ((rotation == 90) || (rotation == 270)) {
            pdfContentByte.AddTemplate(page, 0, -1.0f, 1.0f, 0, 0, box.Height);
        } else {
            pdfContentByte.AddTemplate(page, 1.0f, 0, 0, 1.0f, 0, 0);
        }
    }

    pdfReader.Close();
int pc=pdfReader.NumberOfPages;
int p,旋转;
矩形盒;
PDF导入页面;
对于(p=0;p
在本例中,pdfReader是引用要添加的源pdf的pdfReader类的实例。这可以是文件、流或字节数组。pdfWriter是作为输出内容的pdfWriter类的新实例


我知道它没有使用PDF4NET或BCL easyPDF7,但希望它能有所帮助。

我通过提取页面和创建新文件使它工作起来。我将主文件中的页面提取到索引,索引是我要插入第二个文件的页码

希望它能帮助那些处理PDF4NET并希望在特定页码处合并文件的人

 private string MergeFiles(string mainfile, string attachment, string path, int index)
 {
        var newFile = @"C:\Test\PDF\NewInsertedAt2.pdf";

      int mainFilePages, attachFilePages, i, j, k;

      PDFFile mainFile = PDFFile.FromFile(mainfile);
      PDFFile attachFile = PDFFile.FromFile(attachment);

      PDFImportedPage ip = null;
      PDFDocument doc = new PDFDocument();

      mainFilePages = mainFile.PagesCount;
      attachFilePages = attachFile.PagesCount;


                        for (i = 0; i < index; i++)
                        {
                            ip = mainFile.ExtractPage(i);
                            doc.Pages.Add(ip);
                        }
                        for (j = 0; j < attachFilePages; j++)
                        {
                            ip = attachFile.ExtractPage(j);
                            doc.Pages.Add(ip);
                        }
                        for (k = i; k < mainFilePages; k++)
                        {
                            ip = mainFile.ExtractPage(k);
                            doc.Pages.Add(ip);
                        }

                        doc.Save(newFile);


  mainFile.Close();
 attachFile.Close();

 return newFile;
}
私有字符串合并文件(字符串主文件、字符串附件、字符串路径、int索引)
{
var newFile=@“C:\Test\PDF\NewInsertedAt2.PDF”;
int mainFilePages,attachFilePages,i,j,k;
PDFFile mainFile=PDFFile.FromFile(mainFile);
PDFFile attachFile=PDFFile.FromFile(附件);
PDFImportedPage ip=null;
PDFDocument doc=新PDFDocument();
mainFilePages=mainFile.pagesont;
attachFilePages=attachFile.PageScont;
对于(i=0;i
谢谢分享,这肯定会有帮助。但我们的重点是使用PDF4NET或BCL easyPDF7。我相信iTextSharp确实让这看起来很容易。