Я пытаюсь объединить документы PDF и добавить дополнительные страницы в некоторые из них. Часть слияния работает нормально, и теперь я пытаюсь выяснить, как добавить дополнительную страницу, передав ссылку на ранее существовавшую страницу PDF. Как передать ссылку на страницу PDF на targetDoc.AddPage (LINK)?Добавить дополнительную страницу в PDF-документ, используя библиотеку PDFsharp
public static void MergePDFs(string targetPath, DataTable pdfs)
{
try
{
using (PdfSharp.Pdf.PdfDocument targetDoc = new PdfSharp.Pdf.PdfDocument())
{
foreach (DataRow pdf in pdfs.Rows)
{
using (PdfSharp.Pdf.PdfDocument pdfDoc = PdfSharp.Pdf.IO.PdfReader.Open(pdf["link"].ToString(), PdfDocumentOpenMode.Import))
{
for (int i = 0; i < pdfDoc.PageCount; i++)
{
targetDoc.AddPage(pdfDoc.Pages[i]);
}
}
}
targetDoc.Save(targetPath);
}
}
catch(Exception ex)
{
Console.Write(ex);
}
}
Штамповка методу
using (Stream pdfStream = new FileStream(sourceFileName, FileMode.Open))
{
using (Stream newpdfStream = new FileStream(newFileNameWithPath, FileMode.Create, FileAccess.ReadWrite))
{
iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(pdfStream);
PdfStamper pdfStamper = new PdfStamper(pdfReader, newpdfStream);
PdfContentByte pdfContentByte = pdfStamper.GetOverContent(pageNumber);
BaseFont baseFont = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1250, BaseFont.NOT_EMBEDDED);
pdfContentByte.SetColorFill(BaseColor.RED);
pdfContentByte.SetFontAndSize(baseFont, 12);
pdfContentByte.BeginText();
pdfContentByte.ShowTextAligned(PdfContentByte.ALIGN_CENTER, inputText, Convert.ToInt32(xCoordinate), Convert.ToInt32(yCoordinate), 0);
pdfContentByte.EndText();
pdfStamper.Close();
}
}
Я не уверен, если мой ответ то, что вы ищете. Если вы объясните, что означает «передача ссылки на предыдущую страницу pdf», мне, возможно, придется обновить свой ответ. –
Спасибо. Я пытаюсь передать страницу pdf на мой метод штамповки и добавить его обратно после штамповки. Я добавил мой метод штамповки выше – user6934713
. Шаблон использует iTextSharp. Вы можете использовать iTextSharp для сохранения штампованной страницы в поток, открыть ее с помощью PDFsharp и использовать штампованную страницу, как и любую другую страницу. Кажется, что ваш код уже сохраняет PDF с печатью в потоке 'newpdfStream', и вам остается только открыть, что PdfReader.Open() - работает с файлами и потоками. –