>백엔드 개발 >C++ >인쇄를 위해 iTextSharp에서 런타임으로 생성된 PDF 파일을 병합하는 방법은 무엇입니까?

인쇄를 위해 iTextSharp에서 런타임으로 생성된 PDF 파일을 병합하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-25 20:26:10649검색

How to Merge Runtime-Generated PDF Files in iTextSharp for Printing?

런타임에 생성된 여러 PDF 파일 병합

질문:

여러 PDF 파일을 어떻게 병합합니까? 인쇄용 iTextSharp를 사용하여 런타임에 생성된 PDF 파일 목적이 무엇입니까?

답변:

iText(Sharp)에서 소스 문서를 병합하는 경우 두 가지 상황이 발생합니다.

  1. 보존 원본 레이아웃:
    변경되지 않은 페이지, 주석 및 문서가 포함된 문서를 병합하려면 콘텐츠가 있는 경우 Pdf*Copy* 클래스 제품군을 기반으로 하는 솔루션을 사용하십시오. 이렇게 하면 원본 문서의 대화형 기능의 무결성이 보장됩니다.
  2. 새 문서 만들기:
    전체 형식을 제어하고 대화형 기능을 삭제하면서 페이지를 통합하려면 PdfWriter 클래스 사용을 고려하세요. . 소스 문서에서 페이지를 가져와서 프레젠테이션을 관리할 수 있습니다.

PdfCopy를 사용한 구현:

byte[] mergedPdf = null;
using (MemoryStream ms = new MemoryStream())
{
    using (Document document = new Document())
    {
        using (PdfCopy copy = new PdfCopy(document, ms))
        {
            document.Open();
            // Iterate over the PDF byte arrays and add pages to the merged document
            for (int i = 0; i < pdf.Count; ++i)
            {
                PdfReader reader = new PdfReader(pdf[i]);
                // Extract pages from the reader and add them to the merged document
                int n = reader.NumberOfPages;
                for (int page = 0; page < n; )
                {
                    copy.AddPage(copy.GetImportedPage(reader, ++page));
                }
            }
        }
    }
    mergedPdf = ms.ToArray();
}

제공된 코드에서 pdf는 다음의 배열입니다. 각각 생성된 PDF 문서를 나타내는 바이트 배열. 결과 mergedPdf 바이트 배열에는 인쇄용으로 준비된 결합된 PDF 콘텐츠가 포함됩니다.

클래스 요약:

  • PdfCopy: 페이지를 중복 없이 복사합니다. 감지하지만 어려움을 겪을 수 있습니다. form.
  • PdfCopyFields: 필드와 양식을 병합하지만 과도한 메모리를 소비할 수 있습니다.
  • PdfSmartCopy: 중복을 효율적으로 감지하지만 더 많은 메모리가 필요합니다. resources.
  • PdfWriter: 페이지를 가져오지만 가져온 페이지의 대화형 기능은 희생됩니다.

위 내용은 인쇄를 위해 iTextSharp에서 런타임으로 생성된 PDF 파일을 병합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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