이미지에서 생성
이미지를 PDF 문서로 변환합니다. 각 이미지는 종횡비를 유지하면서 이미지에 맞게 크기가 조정된 페이지가 됩니다. JPEG 및 PNG 형식을 지원합니다.
빠른 예제
Python
from pdf_oxide import Pdf
# Single image
pdf = Pdf.from_image("photo.jpg")
pdf.save("photo.pdf")
# Multiple images
pdf = Pdf.from_images(["page1.jpg", "page2.png", "page3.jpg"])
pdf.save("album.pdf")
WASM
import { WasmPdf } from "pdf-oxide-wasm";
import { readFileSync, writeFileSync } from "fs";
// Single image from bytes
const imageData = new Uint8Array(readFileSync("photo.jpg"));
const pdf = WasmPdf.fromImageBytes(imageData);
writeFileSync("photo.pdf", pdf.toBytes());
// Multiple images
const images = ["page1.jpg", "page2.png", "page3.jpg"]
.map(f => new Uint8Array(readFileSync(f)));
const album = WasmPdf.fromMultipleImageBytes(images);
writeFileSync("album.pdf", album.toBytes());
Rust
use pdf_oxide::api::Pdf;
// Single image
let pdf = Pdf::from_image("photo.jpg")?;
pdf.save("photo.pdf")?;
// Multiple images
let pdf = Pdf::from_images(&["page1.jpg", "page2.png", "page3.jpg"])?;
pdf.save("album.pdf")?;
전체 API 레퍼런스
Pdf::from_image(path) – Single Image
이미지 파일에서 단일 페이지 PDF를 생성합니다. 종횡비를 유지하면서 구성된 페이지 크기 내에 이미지가 맞도록 페이지 크기가 조정됩니다.
Rust:
use pdf_oxide::api::Pdf;
let pdf = Pdf::from_image("diagram.png")?;
pdf.save("diagram.pdf")?;
Python:
pdf = Pdf.from_image("diagram.png")
pdf.save("diagram.pdf")
Pdf::from_image_bytes(data) – 바이트에서 이미지
원시 이미지 바이트에서 PDF를 생성합니다. 이미지 형식(JPEG 또는 PNG)은 바이트 콘텐츠에서 자동 감지됩니다.
Rust:
use pdf_oxide::api::Pdf;
let image_bytes = std::fs::read("photo.jpg")?;
let pdf = Pdf::from_image_bytes(&image_bytes)?;
pdf.save("photo.pdf")?;
Python:
from pdf_oxide import Pdf
with open("photo.jpg", "rb") as f:
image_bytes = f.read()
pdf = Pdf.from_image_bytes(image_bytes)
pdf.save("photo.pdf")
JavaScript:
import { WasmPdf } from "pdf-oxide-wasm";
const imageData = new Uint8Array(readFileSync("photo.jpg"));
const pdf = WasmPdf.fromImageBytes(imageData);
writeFileSync("photo.pdf", pdf.toBytes());
WasmPdf.fromMultipleImageBytes(imagesArray) – 바이트에서 여러 이미지
이미지 바이트 배열에서 다중 페이지 PDF를 생성합니다. 각 이미지는 별도의 페이지가 됩니다. JavaScript/WASM에서만 사용 가능합니다.
JavaScript:
import { WasmPdf } from "pdf-oxide-wasm";
const images = ["scan_001.jpg", "scan_002.jpg", "scan_003.jpg"]
.map(f => new Uint8Array(readFileSync(f)));
const pdf = WasmPdf.fromMultipleImageBytes(images);
writeFileSync("scanned_document.pdf", pdf.toBytes());
Pdf::from_images(paths) – 여러 이미지
각 이미지가 별도의 페이지가 되는 다중 페이지 PDF를 생성합니다. 각 이미지의 크기와 종횡비에 맞게 페이지가 개별적으로 크기가 조정됩니다.
Rust:
use pdf_oxide::api::Pdf;
let pages = vec!["scan_001.jpg", "scan_002.jpg", "scan_003.jpg"];
let pdf = Pdf::from_images(&pages)?;
pdf.save("scanned_document.pdf")?;
Python:
from pdf_oxide import Pdf
pages = ["scan_001.jpg", "scan_002.jpg", "scan_003.jpg"]
pdf = Pdf.from_images(pages)
pdf.save("scanned_document.pdf")
PdfBuilder로 이미지 사용
이미지 PDF 생성 시 PdfBuilder를 사용하여 페이지 크기와 여백을 제어합니다.
Rust:
use pdf_oxide::api::PdfBuilder;
use pdf_oxide::writer::PageSize;
let pdf = PdfBuilder::new()
.title("Photo Album")
.author("Photographer")
.page_size(PageSize::A4)
.margin(36.0) // 0.5 inch margins
.from_image("photo.jpg")?;
pdf.save("photo_a4.pdf")?;
빌더로 여러 이미지:
use pdf_oxide::api::PdfBuilder;
use pdf_oxide::writer::PageSize;
let pdf = PdfBuilder::new()
.title("Document Scans")
.page_size(PageSize::Letter)
.from_images(&["page1.png", "page2.png"])?;
pdf.save("scans.pdf")?;
고급 예제
이미지 디렉토리 일괄 변환
use pdf_oxide::api::Pdf;
use std::fs;
let mut images: Vec<String> = fs::read_dir("./photos")?
.filter_map(|entry| {
let path = entry.ok()?.path();
let ext = path.extension()?.to_str()?.to_lowercase();
if ext == "jpg" || ext == "jpeg" || ext == "png" {
Some(path.to_string_lossy().to_string())
} else {
None
}
})
.collect();
images.sort();
let pdf = Pdf::from_images(&images)?;
pdf.save("all_photos.pdf")?;
Python: 디렉토리에서 이미지 변환
from pdf_oxide import Pdf
from pathlib import Path
image_dir = Path("./scans")
images = sorted(
str(p) for p in image_dir.iterdir()
if p.suffix.lower() in (".jpg", ".jpeg", ".png")
)
pdf = Pdf.from_images(images)
pdf.save("scans.pdf")
다운로드된 이미지 바이트에서 PDF 생성
from pdf_oxide import Pdf
import urllib.request
url = "https://example.com/chart.png"
image_data = urllib.request.urlopen(url).read()
pdf = Pdf.from_image_bytes(image_data)
pdf.save("chart.pdf")
JavaScript: 브라우저에서 여러 이미지 변환
import { WasmPdf } from "pdf-oxide-wasm";
async function imagesToPdf(fileList) {
const images = [];
for (const file of fileList) {
const buffer = await file.arrayBuffer();
images.push(new Uint8Array(buffer));
}
const pdf = WasmPdf.fromMultipleImageBytes(images);
return pdf.toBytes();
}
지원 형식
| Format | Extensions | 비고 |
|---|---|---|
| JPEG | .jpg, .jpeg |
Lossy compression, best for photos |
| PNG | .png |
Lossless, supports transparency |
관련 페이지
- PdfBuilder Fluent API – Configure page size, margins, and metadata
- QR Codes and Barcodes – Generate barcode images as PDFs
- Create from Markdown – Convert text content to PDF