在c#.net中使用iTextSharp合并多个PDF

好吧,我正在尝试将多个PDF合并为一个。

编译时我没有给出任何错误。我尝试首先合并文档,但由于我正在使用表,因此出现了错误。

这是

if (Button.Equals("PreviewWord")) {

String eventTemplate = Server.MapPath("/ERAS/Badges/Template/EventTemp" + EventName + ".doc");

String SinglePreview = Server.MapPath("/ERAS/Badges/Template/PreviewSingle" + EventName + ".doc");

String PDFPreview = Server.MapPath("/ERAS/Badges/Template/PDFPreviewSingle" + EventName + ".pdf");

String previewPDFs = Server.MapPath("/ERAS/Badges/Template/PreviewPDFs" + EventName + ".pdf");

if (System.IO.File.Exists((String)eventTemplate))

{

if (vulGegevensIn == true)

{

//This creates a Worddocument and fills in names etc from database

CreateWordDocument(vulGegevensIn, eventTemplate, SinglePreview, false);

//This saves the SinglePreview.doc as a PDF @param place of PDFPreview

CreatePDF(SinglePreview, PDFPreview);

//Trying to merge

String[] previewsSmall=new String[1];

previewsSmall[0] = PDFPreview;

PDFMergenITextSharp.MergeFiles(previewPDFs, previewsSmall);

}

// merge PDFs here...........................;

//here

//no here//

//...

} }

公共静态类PDFMergenITextSharp {

public static void MergeFiles(string destinationFile, string[] sourceFiles)

{

try

{

int f = 0;

// we create a reader for a certain document

PdfReader reader = new PdfReader(sourceFiles[f]);

// we retrieve the total number of pages

int n = reader.NumberOfPages;

//Console.WriteLine("There are " + n + " pages in the original file.");

// step 1: creation of a document-object

Document document = new Document(reader.GetPageSizeWithRotation(1));

// step 2: we create a writer that listens to the document

PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(destinationFile, FileMode.Create));

// step 3: we open the document

document.Open();

PdfContentByte cb = writer.DirectContent;

PdfImportedPage page;

int rotation;

// step 4: we add content

while (f < sourceFiles.Length)

{

int i = 0;

while (i < n)

{

i++;

document.SetPageSize(reader.GetPageSizeWithRotation(i));

document.NewPage();

page = writer.GetImportedPage(reader, i);

rotation = reader.GetPageRotation(i);

if (rotation == 90 || rotation == 270)

{

cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(i).Height);

}

else

{

cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);

}

//Console.WriteLine("Processed page " + i);

}

f++;

if (f < sourceFiles.Length)

{

reader = new PdfReader(sourceFiles[f]);

// we retrieve the total number of pages

n = reader.NumberOfPages;

//Console.WriteLine("There are " + n + " pages in the original file.");

}

}

// step 5: we close the document

document.Close();

}

catch (Exception e)

{

string strOb = e.Message;

}

}

public static int CountPageNo(string strFileName)

{

// we create a reader for a certain document

PdfReader reader = new PdfReader(strFileName);

// we retrieve the total number of pages

return reader.NumberOfPages;

}

}

回答:

我找到了答案:

代替第二种方法,将更多文件添加到第一个输入文件数组。

public static void CombineMultiplePDFs(string[] fileNames, string outFile)

{

// step 1: creation of a document-object

Document document = new Document();

//create newFileStream object which will be disposed at the end

using (FileStream newFileStream = new FileStream(outFile, FileMode.Create))

{

// step 2: we create a writer that listens to the document

PdfCopy writer = new PdfCopy(document, newFileStream );

if (writer == null)

{

return;

}

// step 3: we open the document

document.Open();

foreach (string fileName in fileNames)

{

// we create a reader for a certain document

PdfReader reader = new PdfReader(fileName);

reader.ConsolidateNamedDestinations();

// step 4: we add content

for (int i = 1; i <= reader.NumberOfPages; i++)

{

PdfImportedPage page = writer.GetImportedPage(reader, i);

writer.AddPage(page);

}

PRAcroForm form = reader.AcroForm;

if (form != null)

{

writer.CopyAcroForm(reader);

}

reader.Close();

}

// step 5: we close the document and writer

writer.Close();

document.Close();

}//disposes the newFileStream object

}

以上是 在c#.net中使用iTextSharp合并多个PDF 的全部内容, 来源链接: utcz.com/qa/406901.html

回到顶部