Skip to content

图片导入与导出

将 OFD 页面导出为 PNG/JPEG,或将一张或多张 PNG/JPEG 图片生成一图一页的 OFD。

安装 Ofdrw.Net.Converter.Pdf。OfdToImageConverter 和 ImageToOfdConverter 都位于 Ofdrw.Net.Converter.Pdf.Converters,配置类型位于 Ofdrw.Net.Converter.Pdf。

OFD 导出为 PNG/JPEG

using Ofdrw.Net.Converter.Pdf;
using Ofdrw.Net.Converter.Pdf.Converters;

var options = new OfdToImageOptions
{
    PixelsPerMillimeter = 144d / 25.4d,
    Format = OfdImageFormat.Png
};

await using var input = File.OpenRead("input.ofd");
await using var output = File.Create("page-1.png");
await new OfdToImageConverter(options).ConvertAsync(input, output, pageIndex: 0);
  • 默认输出 PNG、144 DPI;PixelsPerMillimeter 表示每毫米像素数,144 DPI 约为 5.67。
  • API 页索引从 0 开始。每次调用导出所选的一个页面,背景合成到白色。
  • JPEG 通过 Format=OfdImageFormat.Jpeg 和 JpegQuality 配置;它是有损格式,验证文字、线框和边缘时优先使用 PNG。
  • 输出经 OFD→PDF→PDFium 链路渲染,继承 PDF 出口的字体、图元和原生依赖边界。

CLI:

ofdrw ofd-to-image input.ofd page-1.png --pages 1 --ppm 5.669291 --format png
ofdrw ofd-to-image input.ofd page-2.jpg --pages 2 --format jpeg --jpeg-quality 90

PNG/JPEG 生成 OFD

下面把两张图片按输入顺序生成两页 A4 OFD:

using Ofdrw.Net.Converter.Pdf;
using Ofdrw.Net.Converter.Pdf.Converters;
using Ofdrw.Net.Core.Models;

var options = new ImageToOfdOptions
{
    PageSize = new OfdPageSize
    {
        WidthMillimeters = 210,
        HeightMillimeters = 297
    }
};

await using var first = File.OpenRead("page-1.png");
await using var second = File.OpenRead("page-2.jpg");
await using var output = File.Create("images.ofd");
await new ImageToOfdConverter(options)
    .ConvertAsync(new Stream[] { first, second }, output);

每张图片独占一页,居中、等比缩小以适应页面,不放大。省略 PageSize 时按图片像素和 PixelsPerMillimeter 使用自然尺寸;图片内嵌 DPI 和 EXIF 方向不会用于排版。

CLI:

ofdrw image-to-ofd page-1.png page-2.jpg --output images.ofd \
  --page-width 210 --page-height 297

输入与输出边界

  • 仅接受单帧 PNG/JPEG,不接受 GIF、BMP、TIFF、动画 PNG 或其他格式。
  • 图片文字成为位图内容,不会自动获得可搜索的 OFD 语义文本层。
  • 图片尺寸、解码像素、工作缓冲、输入/输出字节和页数均有预算;超预算会失败,不会无限分配内存。
  • API 在验证和编码阶段保护目标流,但最终复制或 flush 失败仍可能留下部分字节;发布文件时使用同目录暂存与原子替换。CLI 已采用文件暂存机制。

实际样例和已检查页面范围见图片验收记录。通用转换限制见转换约定。

Type to search…

↑↓ navigate↵ selectEsc close