• 【C#/VB.NET】 将PDF转为SVG/Image, SVG/Image转PDF


    SVG是一种图形文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它在放大或者改变尺寸的情况下其图形质量不会有所损失,且与 JPG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。本文将介绍如何实现将PDF文档与SVG/Image相互转换的方法。经过综合对比之后,最后筛选出这一方法。此方法操作起来比较方便且代码量较少。下面是我整理的详细步骤及C#/VB.NET代码供大家参考。

     

    类库引入及代码思路:

    本次功能测试中,使用到的是​ ​ Free Spire.PDF for .NET​​。Spire.PDF.dll文件的引入方法如下:

    方法1:将 Free Spire.PDF for .NET 下载到本地,解压,安装。安装完成后,找到安装路径下BIN文件夹中的Spire.PDF.dll。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径BIN文件夹下的dll文件添加引用至程序。

    方法2:通过 ​ ​NuGet​​ 安装。可通过以下2种方法安装:

    (1)可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”,然后搜索“Free Spire.PDF”,点击“安装”。等待程序安装完成。

    (2)将以下内容复制到PM控制台安装。

    Install-Package FreeSpire.PDF -Version 8.2.0

    将PDF转为SVG格式

    具体步骤:

    • 创建 PdfDocument 类的对象。
    • 调用 PdfDocument.LoadFromFile() 方法加载 PDF 文档。
    • 通过 PdfDocument.SaveToFile() 方法保存为 SVG 格式。

    完整代码:

    【C#】

    复制代码
    using System;
    using Spire.Pdf;
    
    
    namespace PdfToSVG
    {
        class Program
        {
            static void Main(string[] args)
            {
                
                //新建并加载PDF文档
                PdfDocument doc = new PdfDocument();
                doc.LoadFromFile("Sample.pdf");
    
                //保存为SVG格式
                doc.SaveToFile("ToSVG-result.svg", FileFormat.SVG);
                doc.Close();
              
            }
        }
    }
    复制代码

    【VB.NET】

    复制代码
    Imports System
    Imports Spire.Pdf
    
    Namespace PdfToSVG
        
        Class Program
            
            Private Shared Sub Main(ByVal args() As String)
                '新建并加载PDF文档
                Dim doc As PdfDocument = New PdfDocument
                doc.LoadFromFile("Sample.pdf")
                '保存为SVG格式
                doc.SaveToFile("ToSVG-result.svg", FileFormat.SVG)
                doc.Close
            End Sub
        End Class
    End Namespace
    复制代码

    效果图

    将SVG转为PDF格式

    具体步骤:

    • 创建一个 PdfDocument 对象。
    • 用PdfDocument.LoadFromSvg()方法加载SVG文档
    • 用PdfDocument.SaveToFile()方法保存为PDF文档

    完整代码:

    【C#】

    复制代码
    using Spire.Pdf;
    using System;
    
    
    namespace SVGToPdf
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建一个 PdfDocument 对象.
                PdfDocument doc = new PdfDocument();
    
                //加载文档.
                doc.LoadFromSvg("ToSVG-result.svg");
    
                //保存文档.
                String result = "SVgToPDF_out.pdf";
                doc.SaveToFile(result);
    
    
            }
        }
    }
    复制代码

    【VB.NET】

    复制代码
    Imports Spire.Pdf
    Imports System
    
    Namespace SVGToPdf
        
        Class Program
            
            Private Shared Sub Main(ByVal args() As String)
                '创建一个 PdfDocument 对象.
                Dim doc As PdfDocument = New PdfDocument
                '加载文档.
                doc.LoadFromSvg("ToSVG-result.svg")
                '保存文档
                Dim result As String = "SVgToPDF_out.pdf"
                doc.SaveToFile(result)
            End Sub
        End Class
    End Namespace
    复制代码

    效果图:

    将PDF转为图像

    具体步骤:

    • 添加PDF文件
    • 用PdfDocument.LoadFromFile()方法加载PDF文件
    • 用Image.Save()方法保存为图片

    完整代码:

    【C#】

    复制代码
    using System;
    using System.Drawing;
    using Spire.Pdf;
    
    
    namespace ToImage
    {
        class Program
        {
            static void Main(string[] args)
            {
                
    
                //新建并加载PDF文档
                PdfDocument doc = new PdfDocument();
                doc.LoadFromFile("Sample1.pdf");
    
                //保存为图片
                for (int i = 0; i < doc.Pages.Count; i++)
                {
                    String fileName = String.Format("ToImage-img-{0}.png", i);
                    using (Image image = doc.SaveAsImage(i, 300, 300))
                    {
                        image.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);                 
                    }
                }
    
                doc.Close();
            }
        }
    }
    复制代码

    【VB.NET】

    复制代码
    Imports System
    Imports System.Drawing
    Imports Spire.Pdf
    
    Namespace ToImage
        
        Class Program
            
            Private Shared Sub Main(ByVal args() As String)
                '新建并加载PDF文档
                Dim doc As PdfDocument = New PdfDocument
                doc.LoadFromFile("Sample1.pdf")
                '保存为图片
                Dim i As Integer = 0
                Do While (i < doc.Pages.Count)
                    Dim fileName As String = String.Format("ToImage-img-{0}.png", i)
                    Dim image As Image = doc.SaveAsImage(i, 300, 300)
                    image.Save(fileName, System.Drawing.Imaging.ImageFormat.Png)
                    i = (i + 1)
                Loop
                
                doc.Close
            End Sub
        End Class
    End Namespace
    复制代码

    效果图:

    将图像转为PDF格式

    具体步骤:

    • 创建一个添加了section和页面的 pdf 文档。
    • 用PdfImage.FromFile()方法加载图片
    • 在 PDF 中设置图像的显示位置和大小
    • 通过PdfImage.PhysicalDimension属性获取图片大小
    • 使用 PdfPage.Canvas.DrawImage() 方法在第一页 (0, 30) 处绘制 PdfImage 对象
    • 使用 PdfDocument.SaveToFile() 方法将文档保存为 PDF 文件

    完整代码:

    C#

    复制代码
    using System;
    using System.Drawing;
    using Spire.Pdf;
    using Spire.Pdf.Graphics;
    
    namespace ImageToPdf
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建一个添加了section和页面的 pdf 文档.
                PdfDocument pdf = new PdfDocument();
                PdfSection section = pdf.Sections.Add();
                PdfPageBase page = pdf.Pages.Add();
    
                //加载图片
                PdfImage image = PdfImage.FromFile("image5.png");
                //在 PDF 中设置图像的显示位置和大小
                //调整图片大小以适合页面宽度
                float widthFitRate = image.PhysicalDimension.Width / page.Canvas.ClientSize.Width;
                float heightFitRate = image.PhysicalDimension.Height / page.Canvas.ClientSize.Height;
                float fitRate = Math.Max(widthFitRate, heightFitRate);
                //获取图片大小 
                float fitWidth = image.PhysicalDimension.Width / fitRate;
                float fitHeight = image.PhysicalDimension.Height / fitRate;
                //绘图
                page.Canvas.DrawImage(image, 0, 30, fitWidth, fitHeight);
    
                string output = "image.pdf";
    
                pdf.SaveToFile(output);
    
    
            }
        }
    }
    复制代码

    【VB.NET】

    复制代码
    Imports System
    Imports System.Drawing
    Imports Spire.Pdf
    Imports Spire.Pdf.Graphics
    
    Namespace ImageToPdf
        
        Class Program
            
            Private Shared Sub Main(ByVal args() As String)
                ' 创建一个添加了section和页面的 pdf 文档.
                Dim pdf As PdfDocument = New PdfDocument
                Dim section As PdfSection = pdf.Sections.Add
                Dim page As PdfPageBase = pdf.Pages.Add
                '加载图片
                Dim image As PdfImage = PdfImage.FromFile("image5.png")
                '在 PDF 中设置图像的显示位置和大小
                '调整图片大小以适合页面宽度
                Dim widthFitRate As Single = (image.PhysicalDimension.Width / page.Canvas.ClientSize.Width)
                Dim heightFitRate As Single = (image.PhysicalDimension.Height / page.Canvas.ClientSize.Height)
                Dim fitRate As Single = Math.Max(widthFitRate, heightFitRate)
                ' 获取图片大小
                Dim fitWidth As Single = (image.PhysicalDimension.Width / fitRate)
                Dim fitHeight As Single = (image.PhysicalDimension.Height / fitRate)
                '绘图
                page.Canvas.DrawImage(image, 0, 30, fitWidth, fitHeight)
                Dim output As String = "image.pdf"
                pdf.SaveToFile(output)
            End Sub
        End Class
    End Namespace
    复制代码

    效果图:

    注意:测试代码中的文件路径为程序Debug路径,仅供参考,文件路径可自定义为其他路径。

  • 相关阅读:
    【后端面经-数据库】MySQL的存储引擎简介
    vue3写一个定时器
    在英文电脑系统中,中文显示??????
    IDEA 2023.2.2 使用 Scala 编译报错 No scalac found to compile scala sources
    【阅读笔记】概率预测之MQ-RNN(含Pytorch代码实现)
    Java框架学习顺序,主要讲解三大框架
    C#命名空间 System.IO思维导图
    java毕业设计商品供应管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
    有关HashMap的介绍
    function—— Verilog的函数
  • 原文地址:https://www.cnblogs.com/Carina-baby/p/16380916.html