MemoryStream을 PDF로 변환하는 C

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF는 파일 시스템에 접근하지 않고도 C#에서 MemoryStream 객체를 PDF 문서로 직접 변환할 수 있도록 합니다. 메모리에서 즉시 PDF를 생성하고 조작하려면 MemoryStream, FileStream 또는 바이트 배열을 PdfDocument 생성자에 전달하십시오.

파일 시스템을 건드리지 않고 C# .NET에서 MemoryStream를 PDF 파일로 로드하고 생성합니다. 이는 System.IO 네임스페이스의 MemoryStream 객체를 통해 작동합니다. 이 기능은 클라우드 환경, 웹 애플리케이션 또는 파일 시스템 접근이 제한된 시나리오에서 사용할 수 있습니다.

빠른 시작: C#에서 MemoryStream을 사용하여 PDF 생성

MemoryStream를 IronPDF를 사용하여 단 한 줄의 코드로 PDF로 변환합니다. 물리적 파일을 처리하지 않고 C# 애플리케이션에 PDF 생성을 통합하기 위해 PdfDocumentMemoryStream에서 초기화합니다. 메모리 내 데이터 처리, 네트워크 통신 또는 실시간 데이터 변환에 이상적입니다.

Nuget Icon지금 바로 NuGet을 사용하여 PDF 만들기를 시작하세요.

  1. NuGet 패키지 관리자를 사용하여 IronPDF를 설치하세요.

    PM > Install-Package IronPdf

  2. 다음 코드 조각을 복사하여 실행하세요.

    var bytes = File.ReadAllBytes("sample.pdf");
    var pdfDoc = new IronPdf.PdfDocument(myMemoryStream);
  3. 실제 운영 환경에서 테스트할 수 있도록 배포하세요.

    지금 바로 무료 체험판을 통해 프로젝트에서 IronPDF를 사용해 보세요.
    arrow pointer

메모리에서 PDF 파일을 불러오는 방법은 무엇인가요?

다음 .NET 메모리 내 객체에서 IronPdf.PdfDocument를 초기화합니다.

  • A MemoryStream
  • A FileStream
  • 바이너리 데이터 byte[]

다음은 PDF 파일에서 스트림을 직접 읽어 PdfDocument 객체를 생성하는 예입니다.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-memory-stream-from-stream.cs
using IronPdf;
using System.IO;

// Read PDF file as stream
var fileByte = File.ReadAllBytes("sample.pdf");

// Instantiate PDF object from stream
PdfDocument pdf = new PdfDocument(fileByte);
$vbLabelText   $csharpLabel

어떤 유형의 스트림 객체를 사용할 수 있나요?

이 예제는 파일 시스템에서 PDF 파일을 읽고 PdfDocument 객체를 생성하는 방법을 보여줍니다. 네트워크 통신이나 다른 데이터 교환 프로토콜을 통해 수신한 byte[]로부터 PdfDocument를 초기화할 수도 있습니다. PDF 데이터를 편집 가능한 객체로 변환하여 필요에 따라 수정할 수 있습니다.

다음은 다양한 스트림 소스를 보여주는 포괄적인 예시입니다.

using IronPdf;
using System.IO;
using System.Net.Http;

// Example 1: From FileStream
using (FileStream fileStream = File.OpenRead("document.pdf"))
{
    var pdfFromFileStream = new PdfDocument(fileStream);
}

// Example 2: From MemoryStream
byte[] pdfBytes = GetPdfBytesFromDatabase(); // Your method to get PDF bytes
using (MemoryStream memoryStream = new MemoryStream(pdfBytes))
{
    var pdfFromMemoryStream = new PdfDocument(memoryStream);
}

// Example 3: From HTTP Response
using (HttpClient client = new HttpClient())
{
    byte[] pdfData = await client.GetByteArrayAsync("https://example.com/document.pdf");
    var pdfFromHttp = new PdfDocument(pdfData);
}
using IronPdf;
using System.IO;
using System.Net.Http;

// Example 1: From FileStream
using (FileStream fileStream = File.OpenRead("document.pdf"))
{
    var pdfFromFileStream = new PdfDocument(fileStream);
}

// Example 2: From MemoryStream
byte[] pdfBytes = GetPdfBytesFromDatabase(); // Your method to get PDF bytes
using (MemoryStream memoryStream = new MemoryStream(pdfBytes))
{
    var pdfFromMemoryStream = new PdfDocument(memoryStream);
}

// Example 3: From HTTP Response
using (HttpClient client = new HttpClient())
{
    byte[] pdfData = await client.GetByteArrayAsync("https://example.com/document.pdf");
    var pdfFromHttp = new PdfDocument(pdfData);
}
$vbLabelText   $csharpLabel

파일 기반 작업 대신 MemoryStream을 사용해야 하는 경우는 언제일까요?

MemoryStream 운영은 다음과 같은 시나리오에서 탁월한 성능을 발휘합니다.

  1. 웹 애플리케이션 : 임시 서버 파일을 생성하지 않고 ASP.NET 애플리케이션 에서 PDF를 동적으로 제공합니다.

  2. 클라우드 환경 : 파일 시스템 접근이 제한적이거나 임시 저장 비용이 많이 드는 Azure Functions 또는 AWS Lambda 환경에서 사용 가능합니다.

  3. 보안 : 중요한 문서는 메모리에서 처리하여 디스크에 임시 파일이 남지 않도록 합니다.

  4. 성능 : 특히 솔리드 스테이트 드라이브(SSD) 또는 네트워크 연결 스토리지(NAS)를 사용하는 경우, 소형에서 중형 PDF 파일의 경우 메모리 작업이 디스크 I/O보다 빠릅니다.

PDF 파일을 MemoryStream으로 내보내는 방법은 무엇인가요?

로드되거나 생성된 PDF 문서를 처리 또는 전송을 위해 MemoryStream로 내보냅니다. 이는 웹 애플리케이션에서 PDF를 제공 하거나 데이터베이스에 저장할 때 유용합니다.

PDF 파일을 MemoryStream으로 내보내는 방법은 다음과 같습니다.

using IronPdf;
using System.IO;

// Create or load a PDF document
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");

// Export to MemoryStream
using (MemoryStream memoryStream = new MemoryStream())
{
    pdf.SaveAs(memoryStream);

    // Example: Convert to byte array for database storage
    byte[] pdfBytes = memoryStream.ToArray();

    // Example: Reset position to read from beginning
    memoryStream.Position = 0;

    // Use the stream as needed (e.g., return in web response)
}
using IronPdf;
using System.IO;

// Create or load a PDF document
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");

// Export to MemoryStream
using (MemoryStream memoryStream = new MemoryStream())
{
    pdf.SaveAs(memoryStream);

    // Example: Convert to byte array for database storage
    byte[] pdfBytes = memoryStream.ToArray();

    // Example: Reset position to read from beginning
    memoryStream.Position = 0;

    // Use the stream as needed (e.g., return in web response)
}
$vbLabelText   $csharpLabel

고급 MemoryStream 작업

여러 메모리 스트림의 PDF 병합

파일 시스템 접근 없이 메모리에서 여러 PDF 문서를 병합합니다 .

using IronPdf;
using System.Collections.Generic;
using System.IO;

public static byte[] MergePdfsFromMemory(List<byte[]> pdfBytesList)
{
    List<PdfDocument> pdfs = new List<PdfDocument>();

    // Load all PDFs from byte arrays
    foreach (var pdfBytes in pdfBytesList)
    {
        pdfs.Add(new PdfDocument(pdfBytes));
    }

    // Merge PDFs
    PdfDocument merged = PdfDocument.Merge(pdfs);

    // Export merged PDF to byte array
    using (MemoryStream ms = new MemoryStream())
    {
        merged.SaveAs(ms);
        return ms.ToArray();
    }
}
using IronPdf;
using System.Collections.Generic;
using System.IO;

public static byte[] MergePdfsFromMemory(List<byte[]> pdfBytesList)
{
    List<PdfDocument> pdfs = new List<PdfDocument>();

    // Load all PDFs from byte arrays
    foreach (var pdfBytes in pdfBytesList)
    {
        pdfs.Add(new PdfDocument(pdfBytes));
    }

    // Merge PDFs
    PdfDocument merged = PdfDocument.Merge(pdfs);

    // Export merged PDF to byte array
    using (MemoryStream ms = new MemoryStream())
    {
        merged.SaveAs(ms);
        return ms.ToArray();
    }
}
$vbLabelText   $csharpLabel

메모리에 보안 설정 적용

PDF 파일에 암호와 권한을 설정 하면서 모든 설정을 메모리에 저장하는 방법:

using IronPdf;
using System.IO;

// Load PDF from memory
byte[] unsecuredPdfBytes = GetPdfFromDatabase();
PdfDocument pdf = new PdfDocument(unsecuredPdfBytes);

// Apply security settings
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

// Export secured PDF to memory
using (MemoryStream securedStream = new MemoryStream())
{
    pdf.SaveAs(securedStream);
    byte[] securedPdfBytes = securedStream.ToArray();
    // Store or transmit secured PDF bytes
}
using IronPdf;
using System.IO;

// Load PDF from memory
byte[] unsecuredPdfBytes = GetPdfFromDatabase();
PdfDocument pdf = new PdfDocument(unsecuredPdfBytes);

// Apply security settings
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

// Export secured PDF to memory
using (MemoryStream securedStream = new MemoryStream())
{
    pdf.SaveAs(securedStream);
    byte[] securedPdfBytes = securedStream.ToArray();
    // Store or transmit secured PDF bytes
}
$vbLabelText   $csharpLabel

MemoryStream PDF 작업 모범 사례

  1. 적절하게 해제하기 : 메모리 누수를 방지하려면 using 문을 사용하거나 MemoryStreamPdfDocument 객체를 명시적으로 해제하십시오.

  2. 메모리 제한 고려 : 대용량 PDF 파일 또는 대량 처리 시 메모리 사용량을 모니터링하십시오. PDF 파일을 압축하거나 청크 단위로 처리하는 방법을 고려해 보세요.

  3. 오류 처리 : 스트림 작업 시, 특히 손상되었거나 형식이 잘못된 PDF 데이터를 처리할 때 예외를 처리하기 위해 try-catch 블록을 구현하십시오.

  4. 비동기 작업 : 웹 애플리케이션에서 PDF를 처리할 때 응답성을 유지하려면 비동기 메서드를 사용하십시오.

다른 IronPDF 기능과의 통합

MemoryStreams는 다양한 PDF 조작 가능성을 제공합니다.

당신이 할 수 있는 다른 일들을 알아볼 준비가 되셨나요? PDF 편집 방법 튜토리얼 페이지는 여기에서 확인하세요.

자주 묻는 질문

파일 시스템에 접근하지 않고 C#에서 MemoryStream을 PDF로 변환하는 방법은 무엇인가요?

IronPDF는 파일 시스템에 접근하지 않고도 MemoryStream 객체를 PDF 문서로 직접 변환할 수 있도록 해줍니다. MemoryStream 객체를 PdfDocument 생성자에 전달하기만 하면 됩니다. 예: var pdfDoc = new IronPdf.PdfDocument(myMemoryStream). 이 방법은 클라우드 환경, 웹 애플리케이션 또는 파일 시스템 접근이 제한된 시나리오에 적합합니다.

메모리에서 PDF를 생성하는 데 사용할 수 있는 스트림 객체 유형에는 어떤 것들이 있습니까?

IronPDF의 PdfDocument 생성자는 MemoryStream, FileStream 및 바이트 배열(byte[])의 세 가지 유형의 메모리 내 객체를 허용합니다. 이러한 소스 중 어느 것을 사용하든 PdfDocument를 초기화할 수 있으므로 네트워크 통신, 데이터베이스 블롭 또는 API 응답과 같은 다양한 데이터 소스에 유연하게 적용할 수 있습니다.

파일 경로 대신 바이트 배열에서 PDF를 불러올 수 있나요?

네, IronPDF는 바이트 배열에서 PDF를 직접 불러올 수 있도록 지원합니다. `var pdfDoc = new IronPdf.PdfDocument(pdfBytes)`와 같이 바이너리 데이터에서 PdfDocument 객체를 생성할 수 있습니다. 이는 네트워크 통신을 통해 PDF 데이터를 수신하거나 데이터베이스에서 PDF를 검색할 때 특히 유용합니다.

HTTP 응답 스트림에서 PDF를 생성하는 방법은 무엇인가요?

IronPDF를 사용하면 HTTP 응답을 먼저 바이트 배열로 변환하여 PDF를 생성할 수 있습니다. `byte[] pdfData = await client.GetByteArrayAsync(url);` 그런 다음 `var pdfFromHttp = new IronPdf.PdfDocument(pdfData)`와 같이 PdfDocument 객체를 초기화합니다. 이렇게 하면 웹 API 또는 원격 소스에서 PDF를 원활하게 처리할 수 있습니다.

PDF 작업에 MemoryStream을 사용하면 어떤 이점이 있습니까?

IronPDF에서 MemoryStream을 사용하면 다음과 같은 여러 가지 이점이 있습니다. 파일 시스템 종속성이 없고, 메모리 내 처리 속도가 빠르며, 보안이 강화되고(임시 파일이 없음), 파일 시스템 접근이 제한되거나 제약될 수 있는 클라우드 환경 또는 컨테이너화된 애플리케이션에 이상적입니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

검토자:
제프 프리츠
제프리 T. 프리츠
.NET 커뮤니티 팀의 수석 프로그램 관리자
제프는 .NET 및 Visual Studio 팀의 수석 프로그램 관리자이기도 합니다. 그는 .NET Conf 가상 컨퍼런스 시리즈의 총괄 프로듀서이며, 개발자를 위한 라이브 스트림 'Fritz and Friends'를 주 2회 진행하며 시청자들과 함께 기술에 대해 이야기하고 코드를 작성합니다. 제프는 Microsoft Build, Microsoft Ignite, .NET Conf, Microsoft MVP Summit 등 주요 Microsoft 개발자 행사를 위한 워크숍, 프레젠테이션 및 콘텐츠 기획을 담당합니다.
시작할 준비 되셨나요?
Nuget 다운로드 17,527,568 | 버전: 2026.2 방금 출시되었습니다