You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework3.5下ITextSharp合并PDF文本仅点击可见问题求助

问题:合并PDF后文本仅点击才显示(.NET Framework 3.5 + iTextSharp 5.5.13.3)

使用.NET Framework 3.5的遗留代码,基于iTextSharp 5.5.13.3合并PDF文件,合并成功后打开文件,文本仅在点击后才显示,推测是页面方向处理存在问题。目前无法升级框架,已知遗留代码的局限性与潜在安全风险。

有问题的合并代码

public static byte[] CombineFilePDF(List<byte[]> prmPDFs)
{
  Document _objDocument = new Document();
  MemoryStream _objMemoryStream = new MemoryStream();

  try
  {
    PdfWriter _objPdfWriter = PdfWriter.GetInstance(_objDocument, _objMemoryStream);
    _objDocument.Open();
    PdfContentByte _objPdfContentByte = _objPdfWriter.DirectContent;

    for (int i = 0; i < prmPDFs.Count; i++)
    {
      PdfReader _objPdfReader = new PdfReader(prmPDFs[i]);
      PdfReader.unethicalreading = true;

      int _numPages = _objPdfReader.NumberOfPages;

      for (int _currentPage = 1; _currentPage <= _numPages; _currentPage++)
      {
        Rectangle _objRectangle = _objPdfReader.GetPageSizeWithRotation(_paginaActual);
        _objDocument.SetPageSize(_objRectangle);
        _objDocument.NewPage();
        PdfImportedPage _objPdfImportedPage = _objPdfWriter.GetImportedPage(_objPdfReader, _currentPage);
        int orientation = _objPdfReader.GetPageRotation(_currentPage);

        if ((orientation == 90) || (orientation == 270))
        {
          _objPdfContentByte.AddTemplate(_objPdfImportedPage, 0, -1f, 1f, 0, 0,
                                    _objPdfReader.GetPageSizeWithRotation(_currentPage).Height);
        }
        else
        {
          _objPdfContentByte.AddTemplate(_objPdfImportedPage, 1f, 0, 0, 1f, 0, 0);
        }
      }
    }
  }
  catch (Exception _objException)
  {
    throw new Exception(String.Format("Error combining PDFs: {0}", _objException.Message), _objException);
  }
  finally
  {
    _objDocument.Close();
  }
  return _objMemoryStream.ToArray();
}

测试可用的合并代码

Document _objDocument = new Document();
MemoryStream _objMemoryStream = new MemoryStream();

try
{
  PdfCopy pdf = new PdfCopy(_objDocument, _objMemoryStream);
  pdf.SetMergeFields();
  _objDocument.Open();

  foreach (var pdfBytes in prmPDFs)
  {
    PdfReader _objPdfReader = new PdfReader(pdfBytes);
    PdfReader.unethicalreading = true;
    pdf.AddDocument(_objPdfReader);
  }
}
catch (Exception ex)
{
  throw new Exception($"Error combining PDFs: {ex.Message}", ex);
}
finally
{
  if (_objDocument != null && _objDocument.IsOpen())
  {
    _objDocument.Close();
  }
  if (_objMemoryStream != null)
  {
    _objMemoryStream.Flush();
  }
}

return _objMemoryStream.ToArray();

特此求助,盼解答。

内容的提问来源于stack exchange,提问作者LuigiDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:14:55