通过扫描创建的 PDF 文档可能会出现页面方向错误的问题(如上下颠倒),这样的情况会给阅读带来极大的不便。旋转 PDF 页面可以使文档页面方向统一,优化阅读体验。本文将介绍如何使用 Spire.PDF for Java 通过程序旋转 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>
旋转 PDF 页面时,旋转角度以 90 度为增量。可设置的旋转角度为 0、90、180 或 270 度。以下是旋转指定 PDF 页面的详细操作步骤:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageRotateAngle;
public class rotatePDFPage {
public static void main(String []args){
//创建PdfDocument的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.loadFromFile("C:/预算概要.pdf");
//获取文档第二页
PdfPageBase page = pdf.getPages().get(1);
//获取页面的原旋转角度
int rotation = page.getRotation().getValue();
//在原旋转角度的基础上将页面顺时针旋转180度
rotation += PdfPageRotateAngle.Rotate_Angle_180.getValue();
page.setRotation(PdfPageRotateAngle.fromValue(rotation));
//保存文档
pdf.saveToFile("旋转页面.pdf");
}
}
以下是旋转 PDF 文档中所有页面的操作步骤:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageRotateAngle;
public class rotateAllPDFPages {
public static void main(String []args){
//创建PdfDocument的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.loadFromFile("C:/预算概要.pdf");
//循环遍历文档中的页面
for(int i = 0; i < pdf.getPages().getCount(); i++) {
//获取页面
PdfPageBase page = pdf.getPages().get(i);
//获取页面的原旋转角度
int rotation = page.getRotation().getValue();
//在原旋转角度的基础上将页面顺时针旋转180度
rotation += PdfPageRotateAngle.Rotate_Angle_180.getValue();
page.setRotation(PdfPageRotateAngle.fromValue(rotation));
}
//保存文档
pdf.saveToFile("旋转所有页面.pdf");
}
}如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Excel 和 CSV(字符分隔值)是各行业管理和存储表格数据的两种常用文件格式。Excel 以行和列的形式组织数据,并为用户提供广泛的数据操作、分析和可视化高级功能,而 CSV 则以纯文本格式存储数据,这种格式轻巧且与各种应用程序高度兼容。当用户需要在不同的程序中交换或导入 Excel 数据时,将 Excel 文件转换为 CSV 格式非常有用。相反,需要更高级的数据分析功能(如创建图表或应用公式)的用户可能会发现将 CSV 文件转换为 Excel 格式更为有效。在本文中,我们将演示如何使用 Spire.XLS for C++ 将 Excel 转换为 CSV 或将 CSV 转换为Excel。
有两种方法可以将 Spire.XLS for C++ 集成到您的应用程序中。一种方法是通过 NuGet 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 NuGet 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
如何将 Spire.XLS for C++ 集成到 C++ 程序中
Spire.XLS for C++ 提供了 XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, Spire::Common::Encoding* encoding) 方法,用于将 Excel 文件中的工作表转换为 CSV。具体步骤如下:
#include "Spire.Xls.o.h"
using namespace Spire::Xls;
int main()
{
//创建Workbook的对象
intrusive_ptr<Workbook> workbook = new Workbook();
//加载Excel文件
workbook->LoadFromFile(L"示例文档.xlsx");
//获取指定工作表
intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));
//将工作表保存到CSV文件
sheet->SaveToFile(L"ExcelToCsv.csv", L",", Encoding::GetUTF8());
workbook->Dispose();
}
使用上述代码将 Excel 工作表转换为 CSV 时,所有数据,包括可见数据和隐藏数据,都将保存为 CSV。如果只想将工作表中的可见数据保存为 CSV,可以使用 XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, bool retainHiddenData) 方法。具体步骤如下:
#include "Spire.Xls.o.h"
using namespace Spire::Xls;
int main()
{
//创建Workbook的对象
intrusive_ptr<Workbook> workbook = new Workbook();
//加载Excel文件
workbook->LoadFromFile(L"示例文档.xlsx");
//获取指定工作表
intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));
//将工作表中的可见数据保存到CSV文件中
sheet->SaveToFile(L"ExcelToCsv1.csv", L",", false);
workbook->Dispose();
}
要将 CSV 文件转换为 Excel,您需要使用 Workbook->LoadFromFile(LPCWSTR_S fileName, LPCWSTR_S separator) 方法加载 CSV 文件,然后使用 Workbook->SaveToFile (LPCWSTR_S fileName, ExcelVersion version) 方法将其保存到 Excel 文件。具体步骤如下:
#include "Spire.Xls.o.h"
using namespace Spire::Xls;
int main()
{
//创建Workbook的对象
intrusive_ptr<Workbook> workbook = new Workbook();
//加载带有分隔符的CSV文件
workbook->LoadFromFile(L"ExcelToCSV.csv", L",");
//获取文件中的特定工作表
intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));
//将忽略错误选项设置为将特定单元格区域中的数字保存为文本时忽略错误
sheet->GetRange(L"C2:C11")->SetIgnoreErrorOptions(IgnoreErrorType::NumberAsText);
//自动调整列宽
sheet->GetAllocatedRange()->AutoFitColumns();
//将文件保存到Excel XLSX文件
workbook->SaveToFile(L"CsvToExcel.xlsx", ExcelVersion::Version2013);
workbook->Dispose();
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.PDF 9.4.0 已发布。本次更新新增支持文本表单域的字体大小自动设置。同时,本次更新还增强了OFD 到 PDF 以及PDF 到 图片的转换。此外,该版本修复了许多已知问题,如修复了替换文本后内容出现重叠的问题。详情请阅读以下内容。
新功能:
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(input);
PdfFormWidget formWidget = pdf.Form as PdfFormWidget;
foreach(PdfField field in formWidget.FieldsWidget.List)
{
if(field is PdfTextBoxFieldWidget)
{
PdfTextBoxFieldWidget textBoxField = field as PdfTextBoxFieldWidget;
if(textBoxField.Name == "Name of the Company")
{
textBoxField.Font = new PdfTrueTypeFont(new Font("Arial", 16), true);
textBoxField.FontSizeAuto = true;
textBoxField.Text = "e-iceblue";
}
}
}
pdf.SaveToFile(output);问题修复:
在 Word 中,水印是可以放置在背景中的半透明文本或图像。通常,水印用于强调文档中的重要内容。例如,您可以使用它来提醒用户内容是机密的或草稿。或者其他时候,您可能需要通过添加水印,在文档中插入公司标识。在本文中,您将学习如何使用 Spire.Doc for C++ 将文本或图像水印插入到 Word 文档中。
有两种方法可以将 Spire.Doc for C++ 集成到您的应用程序中。一种方法是通过 NuGet 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 NuGet 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
如何将 Spire.Doc for C++ 集成到 C++ 程序中
Spire.Doc for C++ 提供了 TextWatermark 类来表示文本水印。可以使用下面的方法设置水印的内容和外观。创建文本水印后,您可以使用 Document->SetWatermark() 方法将其应用于整个文档。以下是详细步骤。
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//创建一个Document 对象
intrusive_ptr<Document> document = new Document();
//加载Word文件
document->LoadFromFile(L"C:\\Users\\Administrator\\Desktop\\示例文档.docx");
//创建一个TextWatermark 对象
intrusive_ptr<TextWatermark> txtWatermark = new TextWatermark();
//设置文字水印的内容和格式
txtWatermark->SetText(L"内部使用");
txtWatermark->SetFontSize(80);
txtWatermark->SetSemitransparent(90);
txtWatermark->SetFontName(L"宋体");
txtWatermark->SetColor(Color::GetBlue());
txtWatermark->SetLayout(WatermarkLayout::Diagonal);
//将文本水印应用于文档
document->SetWatermark(txtWatermark);
//保存文件
document->SaveToFile(L"文字水印.docx", FileFormat::Docx2013);
document->Close();
}
同样,您可以使用 PictureWatermark 类创建图像水印。创建后,可以使用 Document->SetWatermark() 方法将其应用于 Word 文档。详细步骤如下。
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//创建Document对象
intrusive_ptr<Document> document = new Document();
//加载Word文件
document->LoadFromFile(L"C:\\Users\\Administrator\\Desktop\\示例文档.docx");
//创建图片水印对象
intrusive_ptr <PictureWatermark> pictureWatermark = new PictureWatermark();
//指定水印的图像
pictureWatermark->SetPicture(L"C:\\Users\\Administrator\\Desktop\\img.png");
pictureWatermark->SetScaling(100);
pictureWatermark->SetIsWashout(false);
//将图像水印应用于文档
document->SetWatermark(pictureWatermark);
//保存文档
document->SaveToFile(L"图片水印.docx", FileFormat::Docx2013);
document->Close();
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
在公司运作过程中,难免会存在很多需要员工重复操作的工作。这些工作规则固定、重复性高且附加值低,人工操作时容易出错,且消耗劳动力的同时却不能带来更多的价值。因此,如何更高效地处理这些工作也成为解放员工生产力、提高企业运作效率的关键。
Spire.RPA 正是为了解决这样的问题而生。只要预先设定好规则,Spire.RPA 可以代替员工进行登陆程序、抓取网页、复制粘贴数据、制作文档、处理邮件等操作,协助员工快速高效完成高重复性工作。而员工则可以从简单的工作中解放出来,去进行更有创造性的工作。
目前 Spire.RPA 已开放下载,欢迎大家前往体验!
获取 Spire.RPA 请点击:https://www.e-iceblue.cn/Downloads/Spire-RPA.html
RPA(Robotic Process Automation):机器人流程自动化,也称为软件机器人,使用自动化技术来模拟人类工作人员的后台任务,如提取数据、填写表格、移动文件等。
RPA 结合了 API 和用户交互界面(UI),在企业和生产应用程序之间执行重复任务。通过部署模拟人工过程的脚本,RPA 工具可以在不相关的软件系统中自动执行各种活动和事务。
PDF 是一种流行且广泛使用的文件格式,但涉及到在会议、课堂或其他场景中向他人演示时,PowerPoint 总是比 PDF 文件更受人们青睐,因为它包含丰富的演示效果,可以更好地吸引观众的注意力。在本文中,您将了解如何使用 Spire.PDF for Java 将现有的 PDF 文件转换为 PowerPoint 演示文稿。
首先,您需要在 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>
从版本 9.2.1 开始,Spire.PDF for Java 支持使用 PdfDocument.saveToFile() 方法将 PDF 转换为 PPTX。使用此方法,PDF 文件的每一页都将转换为 PowerPoint 中的一张幻灯片。以下是将 PDF 文件转换为可编辑的 PowerPoint 文档的步骤。
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
public class PDFtoPowerPoint {
public static void main(String[] args) {
//创建PdfDocument实例
PdfDocument pdfDocument = new PdfDocument();
//加载示例PDF文档
pdfDocument.loadFromFile("成都第31届世界大学生夏季运动会.pdf");
//将PDF转换为PPTX文档
pdfDocument.saveToFile("PDFtoPowerPoint.pptx", FileFormat.PPTX);
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
将 PowerPoint 演示文稿转换为图像可为您带来多种好处。例如,它使您可以轻松地与可能无法访问 PowerPoint 软件的其他人共享内容;它保留原始演示文稿的格式,确保内容完全按预期显示;并且还可以保护演示文稿中的内容不被他人编辑或修改。在本文中,您将学习如何使用 Spire.Presentation for C++ 将 PowerPoint 演示文稿转换为不同的图像格式。
有两种方法可以将 Spire.Presentation for C++ 集成到您的应用程序中。一种方法是通过 NuGet 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 NuGet 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
如何将 Spire.Presentation for C++ 集成到 C++ 程序中
Spire.Presentation for C++ 提供了 ISlide->SaveAsImage() 方法,使您能够将 PowerPoint 演示文稿中的幻灯片转换为 JPG 或 PNG 图像。详细步骤如下:
#include "Spire.Presentation.o.h";
using namespace Spire::Presentation;
using namespace std;
int main()
{
//初始化 Presentation 类的一个实例
intrusive_ptr<Presentation> ppt = new Presentation();
//加载 PowerPoint 演示文稿
ppt->LoadFromFile(L"示例文档.pptx");
//获取演示文稿的幻灯片合集
intrusive_ptr<SlideCollection> slides = ppt->GetSlides();
//遍历集合中的幻灯片
for (int i = 0; i < slides->GetCount(); i++)
{
intrusive_ptr<ISlide> slide = slides->GetItem(i);
//将每张幻灯片保存为 PNG 图像
intrusive_ptr<Stream> image = slide->SaveAsImage();
image->Save((L"图像\\ToImage_img_" + to_wstring(i) + L".png").c_str());
}
ppt->Dispose();
}
您可以使用 ISlide->SaveAsImage(int width, int height) 方法将 PowerPoint 演示文稿中的幻灯片转换为具有特定大小的 JPG 或 PNG 图像。详细步骤如下:
#include "Spire.Presentation.o.h";
using namespace Spire::Presentation;
using namespace std;
int main()
{
//初始化 Presentation 类的一个实例
intrusive_ptr<Presentation> ppt = new Presentation();
//加载PowerPoint演示文稿
ppt->LoadFromFile(L"示例文档.pptx");
//获取演示文稿的幻灯片集
intrusive_ptr<SlideCollection> slides = ppt->GetSlides();
//循环遍历集合中的幻灯片
for (int i = 0; i < slides->GetCount(); i++)
{
intrusive_ptr<ISlide> slide = slides->GetItem(i);
//将每张幻灯片保存为大小为600 x 400像素的PNG图像
intrusive_ptr<Stream> image = slide->SaveAsImage(600, 400);
image->Save((L"具有特定大小的图像\\ToImage_img_" + to_wstring(i) + L".png").c_str());
}
ppt->Dispose();
}
要将 PowerPoint 演示文稿中的幻灯片转换为 SVG 图像,可以使用 ISlide->SaveToSVG() 方法。具体步骤如下:
#include "Spire.Presentation.o.h";
using namespace Spire::Presentation;
using namespace std;
int main()
{
//初始化Presentation类的实例
intrusive_ptr<Presentation> ppt = new Presentation();
//加载PowerPoint演示文稿
ppt->LoadFromFile(L"示例文档.pptx");
//获取演示文稿的幻灯片集
intrusive_ptr<SlideCollection> slides = ppt->GetSlides();
//设置将PowerPoint转换为SVG时是否保留笔记
ppt->SetIsNoteRetained(true);
//循环遍历集合中的幻灯片
for (int i = 0; i < slides->GetCount(); i++)
{
intrusive_ptr<ISlide> slide = slides->GetItem(i);
//将每张幻灯片保存为SVG图像
intrusive_ptr<Stream> svg = slide->SaveToSVG();
svg->Save((L"SvgImages\\ToSVG-" + to_wstring(i) + L".svg").c_str());
}
ppt->Dispose();
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Presentation 8.3.2 已发布。该版本修复了编辑PPT图表数据时弹出错误对话框的问题。详情请阅读以下内容。
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-NET.html
当您需要汇总存储在多个 Excel 文件中的数据时,合并 Excel 文件是一项必不可少的任务。 例如,如果您有一年中每个季度的销售报告,您可能需要将它们合并到一个文件中以获得更全面的全年数据视图。通过合并 Excel 文件,您可以专注于单个有组织的工作簿,而不是在多个文件之间切换。这不仅简化了您的工作流程还提高了工作效率。在本文中,您将学习如何使用 Spire.XLS for C++ 将 Excel 文件合并为一个文件。
有两种方法可以将 Spire.XLS for C++ 集成到您的应用程序中。一种方法是通过 NuGet 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 NuGet 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
如何将 Spire.XLS for C++ 集成到 C++ 程序中
通过创建新的工作簿,然后将原始工作簿中的工作表复制到新工作簿,就可以将多个 Excel 工作簿合并为一个工作簿。具体步骤如下:
#include "Spire.Xls.o.h"
using namespace Spire::Xls;
int main()
{
//将工作簿的路径放入向量中
std::vector<std::wstring> files = { L"文档1.xlsx", L"文档2.xlsx", L"文档3.xlsx" };;
//初始化工作簿对象以创建新工作簿
intrusive_ptr<Workbook> newWorkbook = new Workbook();
newWorkbook->SetVersion(ExcelVersion::Version2013);
//清除默认工作表
newWorkbook->GetWorksheets()->Clear();
//初始化临时工作簿对象
intrusive_ptr<Workbook> tempWorkbook = new Workbook();
//在矢量中遍历工作簿
for (auto file : files)
{
//加载当前工作簿
tempWorkbook->LoadFromFile(file.c_str());
//遍历工作簿中的所有工作表
for (int i = 0; i < tempWorkbook->GetWorksheets()->GetCount(); i++)
{
intrusive_ptr<Worksheet> sheet = dynamic_pointer_cast<Worksheet>(tempWorkbook->GetWorksheets()->Get(i));
//将工作簿中的每个工作表复制到新工作簿
(intrusive_ptr<XlsWorksheetsCollection>(newWorkbook->GetWorksheets()))->AddCopy(sheet, WorksheetCopyType::CopyAll);
}
}
//将结果工作簿保存到文件
newWorkbook->SaveToFile(L"合并Excel文件.xlsx", ExcelVersion::Version2013);
newWorkbook->Dispose();
tempWorkbook->Dispose();
}
通过将原始工作表中使用的数据区域复制到目标工作表,可以将多个工作表合并为一个工作表。以下步骤演示了如何将同一工作簿中的两个工作表合并为一个工作表:
#include "Spire.Xls.o.h"
using namespace Spire::Xls;
int main()
{
//初始化工作簿对象
intrusive_ptr<Workbook> workbook = new Workbook();
//加载Excel工作簿
workbook->LoadFromFile(L"示例文档.xlsx");
//获取第一个工作表
intrusive_ptr<Worksheet> sheet1 = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(0));
//获取第二个工作表
intrusive_ptr<Worksheet> sheet2 = dynamic_pointer_cast<Worksheet>(workbook->GetWorksheets()->Get(1));
//获取第二个工作表的使用范围
intrusive_ptr<CellRange> sourceRange = dynamic_pointer_cast<CellRange>(sheet2->GetAllocatedRange());
//在第一个工作表中指定目标范围
intrusive_ptr<CellRange> destRange = dynamic_pointer_cast<CellRange>(sheet1->GetRange(sheet1->GetLastRow() + 1, 1));
//将第二个工作表的使用范围复制到第一个工作表中的目标范围
sourceRange->Copy(destRange);
//删除第二个工作表
sheet2->Remove();
//保存结果文件
workbook->SaveToFile(L"MergeExcelWorksheets.xlsx", ExcelVersion::Version2013);
workbook->Dispose();
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.PDF for Java 9.3.11 已发布。本次更新优化了压缩图片时内存的占用。同时,该版本还增强了PDF 到 HTML和SVG的转换。此外,该版本还修复了一些已知问题,如:修复了添加水印后文档大小增大较多的问题。详情请阅读以下内容。
问题修复: