>백엔드 개발 >C++ >iTextSharp를 사용하여 동적으로 생성된 여러 PDF를 어떻게 병합할 수 있습니까?

iTextSharp를 사용하여 동적으로 생성된 여러 PDF를 어떻게 병합할 수 있습니까?

DDD
DDD원래의
2024-12-25 19:16:13587검색

How Can I Merge Multiple Dynamically Generated PDFs Using iTextSharp?

동적으로 생성된 여러 PDF 파일 병합: iTextSharp 접근 방식

컨텍스트:
이 질문은 병합과 관련이 있습니다. 실시간으로 동적으로 생성되는 여러 PDF 파일. 목표는 인쇄 목적으로 이러한 파일을 병합하는 것입니다.

해결책:
iTextSharp를 사용하여 여러 PDF 파일을 병합하려면 두 가지 기본 접근 방식이 있습니다.

1. PdfCopy 클래스
내용과 대화형 주석을 유지하면서 페이지를 원래 형식으로 병합하는 것이 목표라면 PdfCopy 클래스를 사용해야 합니다. PdfCopy를 사용한 샘플은 아래와 같습니다.

// Assuming pdf is a List<byte[]> containing in-memory PDF documents
using (MemoryStream ms = new MemoryStream())
{
    using (Document document = new Document())
    {
        using (PdfCopy copy = new PdfCopy(document, ms))
        {
            document.Open();
            for (int i = 0; i < pdf.Count; ++i)
            {
                PdfReader reader = new PdfReader(pdf[i]);
                int n = reader.NumberOfPages;
                for (int page = 0; page < n; )
                {
                    copy.AddPage(copy.GetImportedPage(reader, ++page));
                }
            }
        }
    }
    mergedPdf = ms.ToArray();
}

2. PdfWriter 클래스
또는 소스 문서의 페이지를 새 문서에 통합하고 일반 형식을 사용자 정의하고 대화형 주석을 무시하는 것이 목표라면 PdfWriter 클래스를 활용해야 합니다. 이 클래스는 다른 PDF 문서에서 페이지를 가져오지만 해당 문서의 대화형 기능을 삭제합니다.

추가 고려 사항:

  • PdfCopyFields: 이 클래스는 사용됩니다. 다양한 양식의 필드를 병합합니다. 특히 다음을 사용하여 양식을 연결할 때 발생하는 양식 필드 관련 문제를 방지합니다. PDFCopy. 메모리 요구 사항이 더 높습니다.
  • PdfSmartCopy: PdfCopy와 유사하지만 중복된 콘텐츠를 감지할 수 있지만 더 많은 메모리와 CPU 리소스가 필요합니다.

해결책은 다음과 같습니다. 프로젝트의 특정 요구 사항에 따라 선택됩니다.

위 내용은 iTextSharp를 사용하여 동적으로 생성된 여러 PDF를 어떻게 병합할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.