Spire.Office for Java 5.3.2已发布。本次更新带来了一些新的功能,比如:Spire.XLS for Java支持为图表分类轴设置文本方向以及对Table进行排序,还支持支持创建瀑布图、Pareto直方图、直方图、箱形图、树状图、旭日图、漏斗图,并且增强了Excel到PDF、Excel到图片的转换功能;Spire.PDF for Java支持将PDF转换为灰度文档,还增强了PDF到PDFA1B的转换功能。此外还修复了其它一些已知问题,详情请阅读以下内容。
获取Spire.Office for Java 5.3.2请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html
新功能:
chart.getPrimaryCategoryAxis().setTextDirection(TextVerticalValue.EastAsianVertical);
Workbook workbook = new Workbook();
workbook.loadFromFile(inputFile);
Worksheet sheet = workbook.getWorksheets().get(0);
// Add a new List Object to the worksheet
IListObject listObject = sheet.getListObjects().create("table", sheet.getCellRange(1, 1, 19, 5));
// Add Default Style to the table
listObject.setBuiltInTableStyle(TableBuiltInStyles.TableStyleLight9);
listObject.getAutoFilters().getSorter().getSortColumns().add(2, OrderBy.Ascending);
listObject.getAutoFilters().getSorter().sort(sheet.getCellRange(1, 1, 19, 5));
Workbookworkbook=newWorkbook();
workbook.loadFromFile("input.xlsx");
Worksheetsheet=workbook.getWorksheets().get(0);
ChartofficeChart=sheet.getCharts().add();
//Setcharttypeaswaterfall
officeChart.setChartType(ExcelChartType.WaterFall);
//Setdatarangetothechartfromtheworksheet
officeChart.setDataRange(sheet.getRange().get("A2:B8"));
//Datapointsettingsastotalinchart
officeChart.getSeries().get(0).getDataPoints().get(3).setAsTotal(true);
officeChart.getSeries().get(0).getDataPoints().get(6).setAsTotal(true);
//Showingtheconnectorlinesbetweendatapoints
officeChart.getSeries().get(0).getFormat().showConnectorLines(true);
//Setthecharttitle
officeChart.setChartTitle("CompanyProfit(inUSD)");
//Formattingdatalabelandlegendoption
officeChart.getSeries().get(0).getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
officeChart.getSeries().get(0).getDataPoints().getDefaultDataPoint().getDataLabels().setSize(8);
officeChart.getLegend().setPosition(LegendPositionType.Right);
workbook.saveToFile("output.xlsx",FileFormat.Version2016);
Workbookworkbook=newWorkbook();
workbook.loadFromFile("input.xlsx");
Worksheetsheet=workbook.getWorksheets().get(0);
ChartofficeChart=sheet.getCharts().add();
//SetcharttypeasPareto
officeChart.setChartType(ExcelChartType.Pareto);
//Setdatarangeintheworksheet
officeChart.setDataRange(sheet.getRange().get("A2:B8"));
//Setcategoryvaluesasbinvalues
officeChart.getPrimaryCategoryAxis().isBinningByCategory(true);
officeChart.getPrimaryCategoryAxis().setOverflowBinValue(5);
officeChart.getPrimaryCategoryAxis().setUnderflowBinValue(1);;
//FormattingParetoline
officeChart.getSeries().get(0).getParetoLineFormat().getLineProperties().setColor(Color.blue);
//Gapwidthsettings
officeChart.getSeries().get(0).getDataFormat().getOptions().setGapWidth(6);
//Setthecharttitle
officeChart.setChartTitle("Expenses");
//Hidingthelegend
officeChart.hasLegend(false);
workbook.saveToFile("output.xlsx",FileFormat.Version2016);
Workbookworkbook=newWorkbook();
workbook.loadFromFile("input.xlsx");
Worksheetsheet=workbook.getWorksheets().get(0);
ChartofficeChart=sheet.getCharts().add();
//Setcharttypeashistogram
officeChart.setChartType(ExcelChartType.Histogram);
//Setdatarangeintheworksheet
officeChart.setDataRange(sheet.getRange().get("A1:A15"));
//Categoryaxisbinsettings
officeChart.getPrimaryCategoryAxis().setBinWidth(8);
//Gapwidthsettings
officeChart.getSeries().get(0).getDataFormat().getOptions().setGapWidth(6);
//Setthecharttitleandaxistitle
officeChart.setChartTitle("HeightData");
officeChart.getPrimaryValueAxis().setTitle("Numberofstudents");
officeChart.getPrimaryCategoryAxis().setTitle("Height");
//Hidingthelegend
officeChart.hasLegend(false);
workbook.saveToFile("output.xlsx",FileFormat.Version2016);
Workbookworkbook=newWorkbook();
workbook.loadFromFile("input.xlsx");
Worksheetsheet=workbook.getWorksheets().get(0);
ChartofficeChart=sheet.getCharts().add();
//Setthecharttitle
officeChart.setChartTitle("YearlyVehicleSales");
//SetcharttypeasBoxandWhisker
officeChart.setChartType(ExcelChartType.BoxAndWhisker);
//Setdatarangeintheworksheet
officeChart.setDataRange(sheet.getRange().get("A1:E17"));
//BoxandWhiskersettingsonfirstseries
ChartSerieseriesA=officeChart.getSeries().get(0);
seriesA.getDataFormat().showInnerPoints(false);
seriesA.getDataFormat().showConnectorLines(true);
seriesA.getDataFormat().showMeanMarkers(true);
seriesA.getDataFormat().showMeanLine(false);
seriesA.getDataFormat().setQuartileCalculationType(ExcelQuartileCalculation.ExclusiveMedian);
//BoxandWhiskersettingsonsecondseries
ChartSerieseriesB=officeChart.getSeries().get(1);
seriesB.getDataFormat().showInnerPoints(false);
seriesB.getDataFormat().showConnectorLines(true);
seriesB.getDataFormat().showMeanMarkers(true);
seriesB.getDataFormat().showMeanLine(false);
seriesB.getDataFormat().setQuartileCalculationType(ExcelQuartileCalculation.InclusiveMedian);
//BoxandWhiskersettingsonthirdseries
ChartSerieseriesC=officeChart.getSeries().get(2);
seriesC.getDataFormat().showInnerPoints(false);
seriesC.getDataFormat().showConnectorLines(true);
seriesC.getDataFormat().showMeanMarkers(true);
seriesC.getDataFormat().showMeanLine(false);
seriesC.getDataFormat().setQuartileCalculationType(ExcelQuartileCalculation.ExclusiveMedian);
workbook.saveToFile("output.xlsx",FileFormat.Version2016);
Workbookworkbook=newWorkbook();
workbook.loadFromFile("input.xlsx");
Worksheetsheet=workbook.getWorksheets().get(0);
ChartofficeChart=sheet.getCharts().add();
//SetcharttypeasTreeMap
officeChart.setChartType(ExcelChartType.TreeMap);
//Setdatarangeintheworksheet
officeChart.setDataRange(sheet.getRange().get("A1:C11"));
//Setthecharttitle
officeChart.setChartTitle("Areabycountries");
//SettheTreemaplabeloption
officeChart.getSeries().get(0).getDataFormat().setTreeMapLabelOption(ExcelTreeMapLabelOption.Banner);
//Formattingdatalabels
officeChart.getSeries().get(0).getDataPoints().getDefaultDataPoint().getDataLabels().setSize(8);
workbook.saveToFile("output.xlsx",FileFormat.Version2016);
Workbookworkbook=newWorkbook();
workbook.loadFromFile("input.xlsx");
Worksheetsheet=workbook.getWorksheets().get(0);
ChartofficeChart=sheet.getCharts().add();
//SetcharttypeasSunburst
officeChart.setChartType(ExcelChartType.SunBurst);
//Setdatarangeintheworksheet
officeChart.setDataRange(sheet.getRange().get("A1:D16"));
//Setthecharttitle
officeChart.setChartTitle("Salesbyannual");
//Formattingdatalabels
officeChart.getSeries().get(0).getDataPoints().getDefaultDataPoint().getDataLabels().setSize(8);
//Hidingthelegend
officeChart.hasLegend(false);
workbook.saveToFile("output.xlsx",FileFormat.Version2016);
Workbook workbook = new Workbook();
workbook.loadFromFile("input.xlsx");
Worksheet sheet = workbook.getWorksheets().get(0);
Chart officeChart = sheet.getCharts().add();
//Set chart type as Funnel
officeChart.setChartType(ExcelChartType.Funnel);
//Set data range in the worksheet
officeChart.setDataRange(sheet.getRange().get("A1:B6"));
//Set the chart title
officeChart.setChartTitle("Funnel");
//Formatting the legend and data label option
officeChart.hasLegend(false);
officeChart.getSeries().get(0).getDataPoints().getDefaultDataPoint().getDataLabels().hasValue(true);
officeChart.getSeries().get(0).getDataPoints().getDefaultDataPoint().getDataLabels().setSize(8);
workbook.saveToFile("output.xlsx", FileFormat.Version2016);
问题修复:
新功能:
PdfGrayConverter converter = new PdfGrayConverter("ConvertToGrayPdf.pdf");
converter.toGrayPdf("output.pdf");
问题修复:
问题修复:
问题修复:
通过将彩色 PDF 文档转为灰色调、无彩色效果页面的文档,可实现缩小文档大小的目的。本文,将通过调用 Spire.PDF for Java 提供的 PdfGrayConverter.toGrayPdf() 方法介绍实现将 PDF 转为灰度的方法。以下是详细步骤。
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。JAR 文件可以从此链接下载。 如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>12.9.0</version>
</dependency>
</dependencies>
实现转换时,可通过以下步骤完成:
import com.spire.pdf.conversion.*;
public class ToGrayPDF {
public static void main(String[] args) {
//创建一个PdfGrayConverter实例并加载PDF文档
PdfGrayConverter converter = new PdfGrayConverter("Booklet.pdf");
//将彩色PDF转换为灰度
converter.toGrayPdf("ToGray.pdf");
converter.dispose();
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。
Spire.PDF 8.3.9已发布。该版本支持填充XFA图片域,并修复了获取 PDF 表单域失败等已知问题。详情请阅读以下内容。
新功能:
PdfDocument pdfDocument = new PdfDocument();
pdfDocument.LoadFromFile(inputFile);
PdfFormWidget form = pdfDocument.Form as PdfFormWidget;
if (form.XFAForm != null)
{
List<XfaField> xFields = form.XFAForm.XfaFields;
for (int i = 0; i < xFields.Count; i++)
{
if (xFields[i] is XfaImageField)
{ XfaImageField xImageField = xFields[i] as XfaImageField; FileStream fileStream = new FileStream(imageName, FileMode.Open, FileAccess.Read, FileShare.Read); xImageField.Image = Image.FromStream(fileStream); }
}
}
问题修复:

在C#中打印PDF文档无需依赖Adobe Acrobat。通过Spire.PDF,开发者可以轻松将强大的打印功能集成到应用程序中。该库提供了一种流畅的编程方法,能够管理从简单打印任务到高级功能(如双面打印和静默打印)的一切需求。无论您需要打印单页还是多页文档,Spire.PDF都能确保精确性和高效性。
本文将探讨如何使用Spire.PDF for .NET 在C# 应用程序中打印PDF 、自定义打印设置以及解决常见问题。
在C#中打印PDF时,有多种库可供选择,但Spire.PDF因其功能强大且对开发者友好而脱颖而出。Spire.PDF提供以下优势:
该库处理了PDF渲染和打印机通信的所有底层复杂性,使开发者能够专注于业务逻辑的实现,而无需纠结于打印机API。
首先,通过NuGet包管理器安装Spire.PDF for .NET库:
Install-Package Spire.PDF
或者,您也可以从我们的官方网站直接下载Spire.PDF,并在项目中引用DLL文件。
现在,让我们从最简单的场景开始:将PDF文档打印到系统的默认打印机。Spire.PDF使这一过程变得非常简单:
using Spire.Pdf;
namespace PrintWithDefaultPrinter
{
class Program
{
static void Main(string[] args)
{
// 创建一个 PdfDocument 对象
PdfDocument doc = new PdfDocument();
// 加载一个 PDF 文件
doc.LoadFromFile("C:/Users/Administrator/Desktop/Input.pdf");
// 打印到默认打印机
doc.Print();
// 清理资源
doc.Dispose();
}
}
}
这个基础示例展示了核心工作流程:
这种简洁的方法非常适合只需快速打印文档而无需特殊要求的场景。
虽然基础打印方法适用于简单情况,但大多数实际应用需要对打印过程进行更多控制。Spire.PDF 通过其PrintSettings属性提供了丰富的打印自定义选项。
您可以指定目标打印机名称,而非使用默认打印机:
doc.PrintSettings.PrinterName = "您的打印机名称";
对于大型文档,您可能只需打印特定页面。使用 SelectPageRange() 定义起始页和结束页:
doc.PrintSettings.SelectPageRange(1, 5); //打印第1至第5页
若需打印非连续页面,可使用 SelectSomePages():
doc.PrintSettings.SelectSomePages(new int[]{ 1, 3, 5, 7 });
需要多份打印?设置 Copies属性即可:
doc.PrintSettings.Copies = 2;
双面打印可以节省纸张,常用于专业文档。首先检查打印机是否支持:
if (doc.PrintSettings.CanDuplex)
{
doc.PrintSettings.Duplex = Duplex.Default;
}
对于无需彩色的文档,可以强制使用灰度打印:
doc.PrintSettings.Color = false;
在自动化工作流中,通常需要无需用户交互的打印:
doc.PrintSettings.PrintController = new StandardPrintController();
此设置会抑制所有打印对话框,使打印过程完全静默。请谨慎使用,因为它移除了用户确认或调整设置的能力。
支持多纸盒的高级打印机可以自动处理复杂文档组装:
// 注册纸张设置事件处理器
doc.PrintSettings.PaperSettings += delegate (object sender, PdfPaperSettingsEventArgs e)
{
// 第1-10页使用纸盒1
if (1 <= e.CurrentPaper && e.CurrentPaper <= 10)
{
e.CurrentPaperSource = e.PaperSources[0];
}
// 第10页之后使用纸盒2
else
{
e.CurrentPaperSource = e.PaperSources[1];
}
};
此功能适用于专业文档制作,例如封面、插页或章节分隔页可以自动打印在不同纸张上。
通过在一张纸上排列多页PDF来优化纸张使用。SelectMultiPageLayout() 方法允许指定页面排列的行列布局:
doc.PrintSettings.SelectMultiPageLayout(2, 2); // 每张纸打印4页(2行×2列)
在C#中通过编程打印PDF文档,既不需要依赖Adobe Acrobat,也无需调用复杂的打印机API。借助Spire.PDF,仅需几行代码即可实现从基础打印到专业级输出的所有功能。该库在隐藏复杂性的同时,仍能提供精细化的控制能力。
无论您正在构建文档管理系统、报表工具,还是任何需要PDF打印功能的应用程序,Spire.PDF都能提供一套兼顾易用性与强大特性的完整解决方案。立即探索其功能,彻底革新您的PDF打印工作流程!
使用Spire.PDF的 Print() 方法,直接将文档发送至打印机即可。
可以。只要打印机已正确安装到系统中,您即可通过名称指定网络打印机(操作方式与本地打印机相同)。
本文提供的代码片段可无缝适用于WPF和WinForms应用程序。在WPF中,建议添加打印机选择对话框以提升用户体验。
通过PrinterResolutionKind属性设置打印机分辨率可控制打印质量。如需高质量输出,请使用:
doc.PrintSettings.PrinterResolutionKind = PdfPrinterResolutionKind.High;
Spire.PDF支持以下分辨率选项:
注意 :实际输出效果取决于打印机硬件能力。如需照片级打印,请确保打印机支持高DPI(如1200×1200)并使用高质量纸张。对于色彩敏感文档,可结合doc.PrintSettings.Color = true设置。
如果您需要去除生成文档中的评估提示或解除功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Doc for Java 5.3.16已发布。该版本增强了Word到PDF、Word 到HTML的转换功能。此外还修复了更新目录时应用程序抛出“StackOverflowError”等已知问题。详情请阅读以下内容。
问题修复:
Spire.XLS for Java 5.3.3已发布。该版本支持为图表分类轴设置文本方向以及对Table进行排序,还增强了Excel到图片、Excel到PDF的转换功能。此外,还修复了附加富文本时程序抛出“NullPointerException”等已知问题。详情请阅读以下内容:
新功能:
chart.getPrimaryCategoryAxis().setTextDirection(TextVerticalValue.EastAsianVertical);
Workbook workbook = new Workbook();
workbook.loadFromFile(inputFile);
Worksheet sheet = workbook.getWorksheets().get(0);
// Add a new List Object to the worksheet
IListObject listObject = sheet.getListObjects().create("table", sheet.getCellRange(1, 1, 19, 5));
// Add Default Style to the table
listObject.setBuiltInTableStyle(TableBuiltInStyles.TableStyleLight9);
listObject.getAutoFilters().getSorter().getSortColumns().add(2, OrderBy.Ascending);
listObject.getAutoFilters().getSorter().sort(sheet.getCellRange(1, 1, 19, 5));
问题修复:
Spire.Presentation for Java 5.3.2已发布。该版本增强了PPTX文件到图片以及形状到图片的转换功能。详情请阅读以下内容。
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-JAVA.html
带有 .rtf 文件扩展名的文件是一种富文本(Rich Text Format)格式文件,可以被大多数的文字处理程序打开,也很方便编辑。但在日常工作中,如果需要共享和打印文档,建议将 RTF 转换为 PDF 进行进一步处理。本文,将通过 C# 及 VB.NET 程序向您展示如何使用 Spire.Doc for .NET 将 RTF 转换为 PDF。
首先,您需要添加 Spire.Doc for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从 此链接 下载或通过 NuGet 安装。
PM> Install-Package Spire.DocSpire.Doc for .NET 提供了方法可直接用于加载 RTF 文档,并通过以下步骤将 RTF 转为 PDF:
using Spire.Doc;
namespace RTFtoPDF
{
class Program
{
static void Main(string[] args)
{
//创建Document类的实例
Document doc = new Document();
//加载RTF文档
doc.LoadFromFile("sample.rtf", FileFormat.Rtf);
//保存为PDF格式
doc.SaveToFile("RTFtoPDF.pdf", FileFormat.PDF);
}
}
}Imports Spire.Doc
Namespace RTFtoPDF
Class Program
Private Shared Sub Main(args As String())
'创建Document类的实例
Dim doc As New Document()
'加载RTF文档
doc.LoadFromFile("sample.rtf", FileFormat.Rtf)
'保存为PDF格式
doc.SaveToFile("RTFtoPDF.pdf", FileFormat.PDF)
End Sub
End Class
End Namespace
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。
Spire.Doc 10.3.5已发布。此次更新增强了Docx到HTML、Docx到PDF的转换功能。详情请阅读以下内容。
问题修复:
图片即信息的视觉表示。在我们的文档中添加图片可以帮助我们以简单方便且赏心悦目的方式表达我们的想法。在本文中,我们将介绍如何在 Java 中使用 Spire.XLS for Java 库给 Excel 文档插入图片。
首先,您需要将 Spire.Xls.jar 文件作为依赖项添加到您的 Java 程序中。可以从此链接下载 JAR 文件。如果您使用 Maven,您可以通过将以下代码添加到项目的 pom.xml 文件中轻松地在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>16.9.2</version>
</dependency>
</dependencies>
以下是将图片从磁盘插入至 Excel 的步骤:
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class InsertImageFromDisk {
public static void main(String[] args){
//初始化Workbook实例
Workbook workbook = new Workbook();
//获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//将图片插入工作表
sheet.getPictures().add(1, 1,"C:\\Users\\Administrator\\Desktop\\sample.jpg");
//保存结果文档
workbook.saveToFile("InsertImageFromDisk.xlsx", ExcelVersion.Version2016);
}
}
以下是将 Web 图像从 URL 插入 Excel 工作表的步骤:
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
public class InsertWebImage {
public static void main(String[] args) throws IOException {
//初始化工作簿实例
Workbook workbook = new Workbook();
//获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//初始化一个URL实例,从指定的URL获取图片
URL url = new URL("https://www.e-iceblue.com/downloads/demo/Logo.png");
//将图片读入BufferedImage对象
BufferedImage bufferedImage = ImageIO.read(url);
//将图片插入工作表
sheet.getPictures().add(3, 2, bufferedImage );
//保存结果文档
workbook.saveToFile("InsertWebImage.xlsx", ExcelVersion.Version2016);
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。