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路径,仅供参考,文件路径可自定义为其他路径。

【C#/VB.NET】 将PDF转为SVG/Image, SVG/Image转PDF的更多相关文章

  1. C# 将PDF转为SVG的3种情况

    PDF格式的文档广泛用于各种办公场所,在工作中难免会有将PDF文档转换为其他文档格式的需要.在本篇文档中,将介绍PDF转为SVG的方法.根据不同的转换需求,这里分三种情况进行讲述,即转PDF所有页为S ...

  2. Java 将Word转为PDF、PNG、SVG、RTF、XPS、TXT、XML

    同一文档在不同的编译或阅读环境中,需要使用特定的文档格式来打开,通常需要通过转换文档格式的方式来实现.下面将介绍在Java程序中如何来转换Word文档为其他几种常见文档格式,如PDF.图片png.sv ...

  3. Java 将PDF 转为Word、图片、SVG、XPS、Html、PDF/A

    本文将介绍通过Java编程来实现PDF文档转换的方法.包括: 1. PDF转为Word 2. PDF转为图片 3. PDF转为Html 4. PDF转为SVG 4.1 将PDF每一页转为单个的SVG ...

  4. Java 将PDF/XPS转为Word/html /SVG/PS/PCL/PNG、PDF和XPS互转(基于Spire.Cloud.SDK for Java)

    Spire.Cloud.SDK for Java提供了接口PdfConvertApi通过convert()方法将PDF文档以及XPS文档转为指定文档格式,如转PDF为Word(支持Docx.Doc). ...

  5. C#/VB.NET 将PDF转为OFD

    OFD,全称Open Fixed-layout Document ,是一种可存储.读取以及编辑的国家标准版式的电子文档格式,属于中国的一种自主文件格式,在安全性上有可靠保证.为突破国外技术在我们软硬件 ...

  6. C#/VB.NET 将彩色PDF转为灰度PDF

    本文以C#代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即 将PDF文档里面的彩色图片或者文字等通过调用PdfGrayConverter.ToGrayPdf()方法转为文档页面为灰 ...

  7. C#/VB.NET 将PDF转为Excel

    PDF文档可以避免可防⽌他⼈⽆意中触到键盘修改⽂件内容.但是在避免他人⽆意修改的同时也妨碍了正常的修改.如果你想处理或修改PDF文档中的数据,不妨试试用Excel来实现.Excel拥有强大的数据处理功 ...

  8. C#/VB.NET 将PDF转为PDF/X-1a:2001

    PDF/X-1a是一种PDF文件规范标准,在制作.使用PDF以及印刷时所需要遵循的技术条件,属于PDF/X-1标准下的一个子标准. PDF/X-1标准有由CGATS于1999年制定的PDF/X-1:1 ...

  9. C# 如何将PDF转为多种图像文件格式(Png/Bmp/Emf/Tiff)

    PDF是一种在我们日常工作学习中最常用到的文档格式之一,但常常也会因为文档的不易编辑的特点,在遇到需要编辑PDF文档内容或者转换文件格式的情况时让人苦恼.通常对于开发者而言,可选择通过使用组件的方式来 ...

随机推荐

  1. python---二分查找的实现

    from cal_time import get_running_time @get_running_time def bin_search(li, val): """ ...

  2. PCI总线基本概念与历史

    PCI总线历史 这里必须说下 PCI-SIG,1991 年下半年,Intel 公司,并联合IBM.Compaq.AST.HP.DEC 等100 多家公司成立了PCI 集团 并且Intel公司首先提出了 ...

  3. Go 1.18泛型的局限性初探

    前言 Go 1.18 版本之后正式引入泛型,它被称作类型参数(type parameters),本文初步介绍 Go 中泛型的使用.长期以来 go 都没有泛型的概念,只有接口 interface 偶尔类 ...

  4. Nuxt 的介绍与安装

    Nuxt.js(一.介绍与安装) 1.为什么使用Nuxt 渐进式Vue.js框架给前后端分离带来无限的乐趣,越来越多的程序员选择Vue.在我们使用Vue框架的过程中不免会出现以下的一些问题: 如何更好 ...

  5. 算法基础⑧搜索与图论--dijkstra(迪杰斯特拉)算法求单源汇最短路的最短路径

    单源最短路 所有边权都是正数 朴素Dijkstra算法(稠密图) #include<cstdio> #include<cstring> #include<iostream ...

  6. 软件工程-UML各种图总结-精华

    ​ UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明.可视化.和编制文档的一种标准语言.下面将对UML的九种图+包图的基本概念进行介绍以 ...

  7. Day 003:PAT练习--1041 考试座位号 (15 分)

    题目要求: 我写的代码如下: //考试座位号 #include<iostream> #include<algorithm> #include<string> usi ...

  8. 在jupyterlab中实现实时协同功能

    1 简介 当你在使用jupyter时,有没有想象过如果我们可以把正在编写代码的jupyter界面共享给其他人,使得别人可以在其他地方实时看到与你同步的jupyter界面,这样一来无论是与他人沟通代码逻 ...

  9. XCTF练习题---MISC---Training-Stegano-1

    XCTF练习题---MISC---Training-Stegano-1 flag:steganoI 解题步骤: 1.观察题目,下载附件 2.打开下载的图片文件,发现就是一个点,修改文件扩展名,还是说查 ...

  10. 【面试普通人VS高手系列】volatile关键字有什么用?它的实现原理是什么?

    一个工作了6年的Java程序员,在阿里二面,被问到"volatile"关键字. 然后,就没有然后了- 同样,另外一个去美团面试的工作4年的小伙伴,也被"volatile关 ...