【问题标题】:How to print multiple documents in one pdf using itextsharp如何使用 itextsharp 在一个 pdf 中打印多个文档
【发布时间】:2017-04-28 15:00:36
【问题描述】:

我想在一个 pdf 文件中打印多个文档。

 private bool CreateBatchDetails(string path, string PDFFilename, List<BatchDetails> _bd)
{
    bool chk = false;
    DataSet ds = new DataSet();
    try
    {
        foreach (var item in _bd)
        {
            var _IsSpecialPullID = (...................
                                    select new
                                    {
                                        m.PullId,
                                        m.RentalOrderId
                                    }).FirstOrDefault();

            if ((_IsSpecialPullID.RentalOrderId == null) || (_IsSpecialPullID.RentalOrderId.Value.ToString() == string.Empty))
            {

                ds = SqlHelper.ExecuteDataset(ConnectionString, "Stored Procedure1", _IsSpecialPullID.PullId);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    chk = CreatePullSheetPdf(PDFFilename, ConfigurationManager.AppSettings["SitePath"].ToString() + @"images\nemc-pdf-logo.gif", ds);
                }
            }
            else
            {
                ds = SqlHelper.ExecuteDataset(ConnectionString, "Stored Procedure2", _IsSpecialPullID.PullId);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    tbl ro = XYZDb.tbl.Where(t => t.OrderId == _IsSpecialPullID.RentalOrderId).FirstOrDefault();
                    chk = PDFGeneration.CreatePullSheetPdfSpecialOrder(PDFFilename, ConfigurationManager.AppSettings["SitePath"].ToString() + @"images\nemc-pdf-logo.gif", ds, RentalOrder, Server.HtmlDecode(ds.Tables[0].Rows[0]["Comments"].ToString()));
                }
            }
        }
        return chk;
    }
    catch (Exception ex)
    {
        return chk = false;
    }

CreatePullSheetPdfPDFGeneration.CreatePullSheetPdfSpecialOrder 都在创建 itextsharp 文档,并返回布尔值。

我只想将所有文档打成一个文件。我怎样才能做到这一点?

调用CreateBatchDetails的主程序如下:

 PdfCreated = CreateBatchDetails(path, PDFFilename, _bd);
     try
      {
        if (PdfCreated)
        {
            try
            {

                FileInfo file = new FileInfo(PDFFilename);
                file.AppendText();

              if (file.Exists)
                {

                    Response.Cache.SetCacheability(HttpCacheability.NoCache);
                    Response.Cache.SetExpires(DateTime.Now);
                    Response.Cache.SetNoServerCaching();
                    Response.Cache.SetNoStore();

                    HttpContext.Current.Response.ContentType = "application/pdf";
                    HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + file.Name);
                    HttpContext.Current.Response.TransmitFile(PDFFilename);


                }
                string filename = PDFFilename;
                    return true;
            }
            catch (Exception ex)
            {
                HttpContext.Current.Response.TransmitFile(PDFFilename);
                if (File.Exists(PDFFilename) == true)
                {
                    File.Delete(PDFFilename);
                }

                LogGeneration.GenerateLog(LogType.UserErrorLog, Common.GetIpAddress(), string.Empty,
                    "nemcadmin/App_code/PDFGeneration.cs[Method:private public static bool CreatePackaginglistPdf(string RentalContractId, int pastDue, out string message, out string PDFFilename) - Cannot generate pdf file]:- \n"
                    + ex.Message.ToString() + " " + ex.StackTrace, "error", SeverityLevel.Critical);
                message = "Cannot generate pdf file";
                 return false;
            }

任何形式的帮助将不胜感激....感谢任何提前...欢迎所有查询

请帮忙

【问题讨论】:

    标签: c# pdf itext pdf-generation


    【解决方案1】:

    创建一个新的 PDF 文件。

    Document newPDF = new Document();
    PdfCopy mergedPDFs = new PdfCopy(newPDF, new FileStream(pdfPath, FileMode.Create));
    document.Open();
    

    循环播放您要合并的 PDF 并阅读它们。

    foreach (string pdfFile in ListOfPDFsToMergePaths)
    {
        PdfReader reader = new PdfReader(pdfFile);
        for (int i = 0; i < reader.NumberOfPages; i++)
        {
            mergedPDFs.AddPage(mergedPDFs.GetImportedPage(reader, i));
        }
    }
    
    mergedPDFs.Close();
    newPDF.Close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-07
      • 2014-01-15
      • 2012-04-25
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      相关资源
      最近更新 更多