>백엔드 개발 >C++ >인쇄용 ITextSharp를 사용하여 즉시 메모리 내 PDF를 효율적으로 병합하는 방법은 무엇입니까?

인쇄용 ITextSharp를 사용하여 즉시 메모리 내 PDF를 효율적으로 병합하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-03 09:54:39852검색

How to Efficiently Merge In-Memory PDFs on the Fly Using ITextSharp for Printing?

인쇄용 ItextSharp를 사용하여 즉시 메모리 내 PDF 파일 병합

문제 설명

사전 지식 없이 런타임에 생성된 여러 PDF를 연결하는 방법 후속 작업을 위해 ItextSharp를 사용한 파일 이름 인쇄하시겠습니까?

솔루션

ItextSharp를 사용하여 즉시 PDF를 병합하려면 두 가지 주요 접근 방식이 있습니다.

PdfCopy 사용(원본 형식 보존을 위해)

using System.Collections.Generic;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.PdfDocument;
using iText.Kernel.Pdf.PdfWriter;

byte[] mergedPdf = null;
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)
            {
                PdfDocument reader = new PdfDocument(new PdfReader(pdf[i]));
                for (int page = 0; page < reader.GetNumberOfPages(); )
                {
                    copy.AddPage(copy.GetImportedPage(reader, ++page));
                }
            }
        }
    }

    mergedPdf = ms.ToArray();
}

사용 PdfWriter(효율적인 페이지 통합용)

using System.Collections.Generic;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.PdfDocument;
using iText.Kernel.Pdf.PdfWriter;

byte[] mergedPdf = null;
using (MemoryStream ms = new MemoryStream())
{
    using (PdfWriter writer = new PdfWriter(ms))
    {
        PdfDocument document = new PdfDocument(writer);
        PdfDocumentBuilder pdfBuilder = new PdfDocumentBuilder(document);

        for (int i = 0; i < pdf.Count; ++i)
        {
            PdfDocument reader = new PdfDocument(new PdfReader(pdf[i]));
            for (int page = 0; page < reader.GetNumberOfPages(); )
            {
                PdfCanvas canvas = new PdfCanvas(pdfBuilder.GetPageAt(++page));
                PdfFormXObject importedPage = new PdfFormXObject(reader.GetPage(page));
                canvas.AddImportedPage(importedPage);
            }
        }
    }

    mergedPdf = ms.ToArray();
}

클래스 요약

  • PdfCopy: 원본 서식을 유지하지만 중복되는 내용과 형식으로 인해 제한이 있습니다. 처리.
  • PdfCopyFields: 양식 처리 문제를 줄이지만 상당한 메모리를 소비할 수 있습니다.
  • PdfSmartCopy: 중복을 최소화하기 위해 콘텐츠를 분석하지만 더 많은 것이 필요합니다. resources.
  • PdfWriter: 상호 작용을 보존하지 않고 페이지 통합을 허용합니다.

위 내용은 인쇄용 ITextSharp를 사용하여 즉시 메모리 내 PDF를 효율적으로 병합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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