0
我正在嘗試合併PDF文檔併爲其中一些頁面添加額外的頁面。合併部分工作正常,現在我正試圖弄清楚如何通過將鏈接傳遞給預先存在的PDF頁面來添加額外的頁面。如何將鏈接傳遞到PDF頁面以targetDoc.AddPage(LINK)?使用PDFsharp庫向PDF文檔添加額外頁面
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() - 可以處理文件和流。 –