将各种图片格式转换为 .NET 中的 PDF

概览

本文介绍了如何使用 C# 将各种图片格式转换为 PDF。它涵盖了以下主题。

以下代码片段也适用于 Aspose.PDF.Drawing 库。

格式: BMP

格式: CGM

格式: DICOM

格式: EMF

格式: GIF

格式: JPG

格式: PNG

格式: SVG

格式: TIFF

其他本文涵盖的主题

C# 图像转 PDF 转换

Aspose.PDF for .NET 允许您将不同格式的图像转换为 PDF 文件。我们的库展示了将最流行的图像格式转换为 PDF 的代码片段,如 - BMP、CGM、DICOM、EMF、JPG、PNG、SVG 和 TIFF 格式。

转换 BMP 为 PDF

使用 Aspose.PDF for .NET 库将 BMP 文件转换为 PDF 文档。

BMP 图像是具有扩展名 .BMP 的文件,代表位图图像文件,用于存储位图数字图像。这些图像独立于图形适配器,也称为设备独立位图(DIB)文件格式。 您可以使用 Aspose.PDF for .NET API 将 BMP 转换为 PDF 文件。因此,您可以按照以下步骤将 BMP 图像转换为 PDF:

步骤:在 C# 中将 BMP 转换为 PDF

  1. 载入输入的BMP图片。
  2. 最终保存输出的PDF文件。

以下代码片段遵循这些步骤,并展示如何使用C#将BMP转换为PDF:

//初始化空的PDF文档
using (Document pdfDocument = new Document())
{
    pdfDocument.Pages.Add();
    Aspose.Pdf.Image image = new Aspose.Pdf.Image();

    // 载入示例BMP图片文件
    image.File = dataDir + "Sample.bmp";
    pdfDocument.Pages[1].Paragraphs.Add(image);

    // 保存输出的PDF文档
    pdfDocument.Save(dataDir + "BMPtoPDF.pdf");
}

转换CGM为PDF

CGM 是计算机图形元文件格式的文件扩展名,常用于CAD(计算机辅助设计)和演示图形应用程序。 CGM是一个常用于CAD(计算机辅助设计)和演示图形应用程序中的计算机图形元文件格式的文件扩展名。

查看下面的代码片段,了解如何将CGM文件转换为PDF格式。

步骤:在C#中将CGM转换为PDF

  1. 创建CgmLoadOptions类的实例。
  2. 使用指定的源文件名和选项创建Document类的实例。
  3. 使用所需的文件名保存文档。
public static void ConvertCGMtoPDF()
{
    CgmLoadOptions option = new CgmLoadOptions();
    Document pdfDocument= new Document(_dataDir+"corvette.cgm", option);
    pdfDocument.Save(_dataDir+"CGMtoPDF.pdf");
}

将DICOM转换为PDF

DICOM格式是医疗行业用于创建、存储、传输和可视化检查过的患者的数字医学图像和文档的标准。 DICOM格式是医疗行业用于创建、存储、传输和可视化已检查患者的数字医学图像和文件的行业标准。

Aspsoe.PDF for .NET 允许您转换 DICOM 和 SVG 图像,但由于技术原因,添加图像时需要指定要添加到 PDF 的文件类型:

步骤:在 C# 中将 DICOM 转换为 PDF

  1. 创建 Image 类的对象。
  2. 将图像添加到页面的 Paragraphs 集合中。
  3. 指定 FileType 属性。
  4. 指定文件的路径或来源。
    • 如果图像位于硬盘上的位置,请使用 Image.File 属性指定路径位置。
    • 如果图像放置在 MemoryStream 中,请将保存图像的对象传递给 Image.ImageStream 属性。

以下代码片段显示了如何使用 Aspose.PDF 将 DICOM 文件转换为 PDF 格式。 以下代码片段显示了如何使用 Aspose.PDF 将 DICOM 文件转换为 PDF 格式。

private const string _dataDir = "..\\..\\..\\..\\Samples";
// 使用 Image 类将 DICOM 图像转换为 PDF
public static void ConvertDICOMtoPDF()
{
    // 实例化 Document 对象
    Document pdfDocument = new Document();

    // 向文档的页面集合中添加一页
    Page page = pdfDocument.Pages.Add();

    Image image = new Image
    {
        FileType = ImageFileType.Dicom,
        File = System.IO.Path.Combine(_dataDir,"bmode.dcm")
    };
    pdfDocument.Pages[1].Paragraphs.Add(image);
    // 保存输出为 PDF 格式
    pdfDocument.Save(System.IO.Path.Combine(_dataDir,"PDFWithDicomImage_out.pdf"));
}

将EMF转换为PDF

EMFEMF独立于设备地存储图形图像。EMF的元文件包括按时间顺序的可变长度记录,可以在任何输出设备上解析后呈现存储的图像。此外,您可以使用以下步骤将EMF转换为PDF图像:

步骤:在C#中将EMF转换为PDF

  1. 首先,初始化Document类对象。
  2. 加载EMF图像文件。
  3. 将加载的EMF图像添加到页面。
  4. 保存PDF文档。

此外,以下代码片段显示了如何在您的.NET代码片段中使用C#将EMF转换为PDF:

// 初始化新的PDF文档
var doc = new Document();

// 指定输入EMF图像文件的路径
var imageFile = dataDir + "drawing.emf";
var page = doc.Pages.Add();
string file = imageFile;
FileStream filestream = new FileStream(file, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(filestream);
long numBytes = new FileInfo(file).Length;
byte[] bytearray = reader.ReadBytes((int)numBytes);
Stream stream = new MemoryStream(bytearray);
var b = new Bitmap(stream);

// 指定页面尺寸属性
page.PageInfo.Margin.Bottom = 0;
page.PageInfo.Margin.Top = 0;
page.PageInfo.Margin.Left = 0;
page.PageInfo.Margin.Right = 0;
page.PageInfo.Width = b.Width;
page.PageInfo.Height = b.Height;
var image = new Aspose.Pdf.Image();
image.File = imageFile;
page.Paragraphs.Add(image);

//保存输出PDF文档
doc.Save(dataDir + "EMFtoPDF.pdf");

将GIF转换为PDF

使用 Aspose.PDF for .NET 库将GIF文件转换为PDF文档。

GIF 能够在不超过256色的格式中存储无损压缩数据。GIF格式是1987年(GIF87a)由CompuServe开发的,用于通过网络传输位图图像。 您可以使用Aspose.PDF for .NET API将GIF转换为PDF文件。因此,您可以按照以下步骤将GIF图像转换为PDF:

步骤:在C#中将GIF转换为PDF

  1. 加载输入的 GIF 图像。
  2. 最后,保存输出的 PDF 文件。

因此,以下代码片段遵循这些步骤,并展示如何使用 C# 将 BMP 转换为 PDF:

//初始化空白 PDF 文档
using (Document pdfDocument = new Document())
{
    pdfDocument.Pages.Add();
    Aspose.Pdf.Image image = new Aspose.Pdf.Image();

    // 加载示例 GIF 图像文件
    image.File = dataDir + "Sample.gif";
    pdfDocument.Pages[1].Paragraphs.Add(image);

    // 保存输出 PDF 文档
    pdfDocument.Save(dataDir + "GIFtoPDF.pdf");
}

将 JPG 转换为 PDF

无需纠结如何将 JPG 转换为 PDF,因为 Apose.PDF for .NET 库提供了最佳解决方案。 不需要纠结如何将JPG转换为PDF,因为 Apose.PDF for .NET 库提供了最佳解决方案。

您可以通过以下步骤使用Aspose.PDF for .NET轻松将JPG图片转换为PDF:

步骤:在C#中将JPG转换为PDF

  1. 初始化 Document 类的对象。
  2. 向PDF文档添加新页面。
  3. 加载 JPG 图片并添加到段落。
  4. 保存输出的PDF。

以下代码片段展示了如何使用C#将JPG图像转换为PDF:

// 加载输入的JPG文件
String path = dataDir + "Aspose.jpg";

// 初始化新的PDF文档
Document doc = new Document();

// 在空文档中添加空白页
Page page = doc.Pages.Add();
Aspose.Pdf.Image image = new Aspose.Pdf.Image();
image.File = (path);

// 在页面上添加图片
page.Paragraphs.Add(image);

// 保存输出的PDF文件
doc.Save(dataDir + "ImagetoPDF.pdf");

然后您可以看到如何将图像转换为PDF,与页面的高度和宽度相同。 然后您可以看到如何将图像转换为具有页面相同高度和宽度的 PDF。

  1. 加载输入图像文件
  2. 获取图像的高度和宽度
  3. 设置页面的高度、宽度和边距
  4. 保存输出 PDF 文件

以下代码片段显示了如何使用 C# 将图像转换为具有相同页面高度和宽度的 PDF:

// 加载输入 JPG 图像文件
String path = dataDir + "Aspose.jpg";
System.Drawing.Image srcImage = System.Drawing.Image.FromFile(path);

// 读取输入图像的高度
int h = srcImage.Height;

// 读取输入图像的宽度
int w = srcImage.Width;

// 初始化一个新的 PDF 文档
Document doc = new Document();

// 添加一个空白页
Page page = doc.Pages.Add();
Aspose.Pdf.Image image = new Aspose.Pdf.Image();
image.File = (path);

// 设置页面尺寸和边距
page.PageInfo.Height = (h);
page.PageInfo.Width = (w);
page.PageInfo.Margin.Bottom = (0);
page.PageInfo.Margin.Top = (0);
page.PageInfo.Margin.Right = (0);
page.PageInfo.Margin.Left = (0);
page.Paragraphs.Add(image);

// 保存输出 PDF 文件
doc.Save(dataDir + "ImagetoPDF_HeightWidth.pdf");

将PNG转换为PDF

Aspose.PDF for .NET 支持将PNG图像转换为PDF格式的功能。查看下一个代码片段,以实现您的任务。

PNG 指的是一种光栅图像文件格式,它使用无损压缩,这使得它在用户中很受欢迎。

您可以使用以下步骤将PNG转换为PDF图像:

步骤:在C#中将PNG转换为PDF

  1. 加载输入PNG图像。
  2. 读取高度和宽度值。

设置页面尺寸。 保存输出文件。

此外,以下代码片段显示了如何在您的.NET应用程序中使用C#将PNG转换为PDF:

// 加载输入的PNG文件
String path = dataDir + "Aspose.png";
System.Drawing.Image srcImage = System.Drawing.Image.FromFile(path);
int h = srcImage.Height;
int w = srcImage.Width;

// 初始化新文档
Document doc = new Document();
Page page = doc.Pages.Add();
Aspose.Pdf.Image image = new Aspose.Pdf.Image();
image.File = (path);

// 设置页面尺寸
page.PageInfo.Height = (h);
page.PageInfo.Width = (w);
page.PageInfo.Margin.Bottom = (0);
page.PageInfo.Margin.Top = (0);
page.PageInfo.Margin.Right = (0);
page.PageInfo.Margin.Left = (0);
page.Paragraphs.Add(image);

// 保存输出的PDF
doc.Save(dataDir + "ImagetoPDF.pdf");

将 SVG 转换为 PDF

Aspose.PDF for .NET 介绍如何将 SVG 图像转换为 PDF 格式以及如何获取源 SVG 文件的尺寸。

可缩放矢量图形(SVG)是一个基于 XML 的文件格式的二维矢量图形规范系列,包括静态和动态(交互式或动画)。SVG 规范是一个开放标准,自 1999 年以来一直在由万维网联盟(W3C)开发。

SVG 图像及其行为在 XML 文本文件中定义。 SVG 图像及其行为在 XML 文本文件中定义。

要将 SVG 文件转换为 PDF,使用名为 SvgLoadOptions 的类,该类用于初始化 LoadOptions 对象。稍后,在文档对象初始化期间将此对象作为参数传递,帮助 PDF 渲染引擎确定源文档的输入格式。

步骤:在 C# 中将 SVG 转换为 PDF

  1. 创建一个Document类的实例,提及源文件名和选项。
  2. 使用所需的文件名保存文档。

以下代码片段显示了使用Aspose.PDF for .NET将SVG文件转换为PDF格式的过程。

public static void ConvertSVGtoPDF()
{
    SvgLoadOptions option = new SvgLoadOptions();
    Document pdfDocument= new Document(_dataDir + "car.svg", option);
    pdfDocument.Save(_dataDir + "svgtest.pdf");
}

获取SVG尺寸

还可以获取源SVG文件的尺寸。如果我们希望SVG覆盖输出PDF的整个页面,这些信息可能很有用。ScgLoadOption类的AdjustPageSize属性满足了这一需求。此属性的默认值为false。如果该值设置为true,输出的PDF将与源SVG的尺寸相同。

以下代码片段显示了获取源SVG文件尺寸并生成PDF文件的过程。 以下代码片段展示了获取源 SVG 文件尺寸和生成 PDF 文件的过程。

public static void ConvertSVGtoPDF_Advanced()
{
    // 完整示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.PDF-for-.NET
    // 文档目录的路径。
    string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
    var loadopt = new SvgLoadOptions();
    loadopt.AdjustPageSize = true;
    var svgDoc = new Document(dataDir + "GetSVGDimensions.svg", loadopt);
    svgDoc.Pages[1].PageInfo.Margin.Top = 0;
    svgDoc.Pages[1].PageInfo.Margin.Left = 0;
    svgDoc.Pages[1].PageInfo.Margin.Bottom = 0;
    svgDoc.Pages[1].PageInfo.Margin.Right = 0;
    svgDoc.Save(dataDir + "GetSVGDimensions_out.pdf");
}

支持的 SVG 功能

```
     </tr>
    <tr>
        <td>
            <p>tref</p>
        </td>
        <td>
            <p>&lt;defs&gt;&nbsp; <br> &nbsp;&nbsp;&nbsp; &lt;text
                id="ReferencedText"&gt;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                引用的字符数据&nbsp; <br> &nbsp;&nbsp;&nbsp;
                &lt;/text&gt;&nbsp; <br> &lt;/defs&gt;&nbsp; <br
                    class="atl-forced-newline"> &lt;text x="10" y="100" font-size="15" fill="red" &gt;&nbsp; <br
                    class="atl-forced-newline"> &nbsp;&nbsp;&nbsp; &lt;tref
                xlink:href="#ReferencedText"/&gt;&nbsp; <br> &lt;/text&gt;</p>
        </td>
    </tr>
    <tr>
        <td>
            <p>use</p>
        </td>
        <td>
            <p>&lt;defs&gt;&nbsp; <br> &nbsp;&nbsp;&nbsp; &lt;text id="Text" x="400"
                y="200"&nbsp; <br>
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; font-family="Verdana" font-size="100"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; font-family="Verdana" font-size="100"
文本锚点="中间" &gt;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
蒙版文本 <br> &nbsp;&nbsp;&nbsp; &lt;/文本&gt;&nbsp; <br
    class="atl-forced-newline"> &lt;use xlink:href="#Text" fill="blue"&nbsp; /&gt;</p>
</td>
</tr>
<tr>
<td>
<p>椭圆</p>
</td>
<td>
<p>&lt;ellipse cx="2.5" cy="1.5" rx="2" ry="1" fill="red" /&gt;</p>
</td>
</tr>
<tr>
<td>
<p>g</p>
</td>
<td>
<p>&lt;g fill="none" stroke="暗灰色" stroke-width="1.5" &gt;&nbsp; <br>
    &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;line x1="-7"
    y1="-7" x2="-3" y2="-3"/&gt;&nbsp; <br> &nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;line x1="7" y1="7" x2="3"
``` ``` ```

SVG 标签

示例用途

圆圈

<circle id="r2" cx="10" cy="10" r="10" stroke="blue" stroke-width="2">

定义

<defs> 
<rect id="r1" width="15" height="15" stroke="blue" stroke-width="2" /> 
<circle id="r2" cx="10" cy="10" r="10" stroke="blue" stroke-width="2"/> 
<circle id="r3" cx="10" cy="10" r="10" stroke="blue" stroke-width="3"/> 
</defs> 
<use x="25" y="40" xlink:href="#r1" fill="red"/> 
<use x="35" y="15" xlink:href="#r2" fill="green"/> 
<use x="58" y="50" xlink:href="#r3" fill="blue"/>

线

<line x1="7" y1="7" x2="3" y2="3"/>
<line x1="-7" y1="7" x2="-3" y2="3"/>
<line x1="7" y1="-7" x2="3" y2="-3"/>
</g>

图像

<image id="ShadedRelief" x="24" y="4" width="64" height="82" xlink:href="relief.jpg"/>

线

<line style="stroke:#eea;stroke-width:8" x1="10" y1="30" x2="260" y2="100"/>

线

<line style="stroke:#eea;stroke-width:8" x1="10" y1="30" x2="260" y2="100"/> 

路径

<path style="fill:#daa;fill-rule:evenodd;stroke:red" d="M 230,150 C 290,30 10,255 110,140 z "/> 

样式

<path style="fill:#daa;fill-rule:evenodd;stroke:red" d="M 230,150 C 290,30 10,255 110,140 z "/>

多边形

<polygon style="stroke:#24a;stroke-width:1.5;fill:#eefefe" points="10,10 180,10 10,250 10,10" />

折线

折线

<polyline fill="none" stroke="dimgray" stroke-width="1" points="-3,-6 3,-6 3,1 5,1 0,7 -5,1 -3,1 -3,-5"/>

矩形

<rect x="0" y="0" width="400" height="600" stroke="none" fill="aliceblue" />

SVG

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="10cm" height="5cm" >

文本

<text font-family="sans-serif" fill="dimgray" font-size="22px" font-weight="bold" x="58" y="30" pointer-events="none">地图标题</text>

字体

<text x="10" y="100" font-size="15" fill="red" > 
    示例文本 
</text>

tspan

<tspan dy="25" x="25">六种墨水颜色输入值。在这里将 </tspan>

将TIFF转换为PDF

Aspose.PDF 支持文件格式,无论是单帧还是多帧 TIFF 图像。这意味着您可以在 .NET 应用程序中将 TIFF 图像转换为 PDF。

TIFF 或 TIF,标签图像文件格式,代表旨在用于符合此文件格式标准的各种设备的栅格图像。

TIFF或TIF,标签图像文件格式,代表了旨在用于符合此文件格式标准的各种设备上的光栅图像。

您可以像转换其他光栅文件格式的图形一样将TIFF转换为PDF:

<a name="csharp-tiff-to-pdf" id="csharp-tiff-to-pdf"><strong>步骤:在C#中将TIFF转换为PDF</strong></a>

1. 创建新的[Document](https://reference.aspose.com/pdf/net/aspose.pdf/document)类对象并添加页面。
2. 加载输入**TIFF**图像。
3. 保存PDF文档。

```csharp
初始化空白PDF文档
using (Document pdfDocument = new Document())
{
    pdfDocument.Pages.Add();
    Aspose.Pdf.Image image = new Aspose.Pdf.Image();

    // 加载示例Tiff图像文件
    image.File = dataDir + "sample.tiff";
    pdfDocument.Pages[1].Paragraphs.Add(image);

    // 保存输出PDF文档
    pdfDocument.Save(dataDir + "TIFFtoPDF.pdf");
}

如果您需要将多页TIFF图像转换为多页PDF文档并控制一些参数,例如 如果您需要将多页TIFF图像转换为多页PDF文档并控制一些参数,例如:

  1. 实例化Document类的实例
  2. 加载输入TIFF图像
  3. 获取帧的FrameDimension
  4. 为每个帧添加新页面
  5. 最后,将图像保存到PDF页面

以下代码片段显示了如何使用C#将多页或多帧TIFF图像转换为PDF:

public static void TiffToPDF2()
{
    // 初始化新文档
    Document pdf = new Document();

    //将TIFF图像加载到流中
    Bitmap bitmap = new Bitmap(File.OpenRead(_dataDir+"multipage.tif"));
    // 将多页或多帧TIFF转换为PDF
    FrameDimension dimension = new FrameDimension(bitmap.FrameDimensionsList[0]);
    int frameCount = bitmap.GetFrameCount(dimension);

    // 遍历每个帧
    for (int frameIdx = 0; frameIdx <= frameCount - 1; frameIdx++)
    {
        Page page = pdf.Pages.Add();

        bitmap.SelectActiveFrame(dimension, frameIdx);

        MemoryStream currentImage = new MemoryStream();
        bitmap.Save(currentImage, ImageFormat.Tiff);

        Aspose.Pdf.Image imageht = new Aspose.Pdf.Image
        {
            ImageStream = currentImage,
            //应用其他选项
            //ImageScale = 0.5
        };
        page.Paragraphs.Add(imageht);
    }

    // 保存输出PDF文件
    pdf.Save(_dataDir + "TifftoPDF.pdf");
}

适用于

平台 支持 评论
Windows .NET Framework 2.0-4.6
Windows .NET Core 2.0-3.1
.NET 5 Windows
Linux .NET Core 2.0-3.1
.NET 5 Linux

另见

本文还涵盖了以下主题。代码与上面相同。

格式BMP

格式CGM

Format: DICOM

Format: EMF