无需MS Office创建Excel!使用C ++将实现CSV和PDF格式相互转换教程来啦!

522 阅读4分钟

PDF 文件是通过Internet交换文档的标准格式。在某些情况下,需要处理PDF文件中的数据并将其添加到数据库中。对于这种情况,将PDF文档转换为 CSV 格式可能会有所帮助。另一方面,可能希望以只读方式与某人共享一些CSV格式的表格数据。可以通过将CSV文件转换为PDF格式来实现。在本文中,将学习如何使用C ++以编程方式对PDF和CSV文件进行相互转换。

  • 将CSV文件转换为PDF格式
  • 将PDF文件转换为CSV格式
  • 将选定的PDF页面转换为CSV文件
  • 将PDF页面转换为单个CSV文件

要实现这些转换,您需要C ++ API的Aspose.Cells和C ++ API的Aspose.PDF。前者是用于创建,读取和修改Excel文件的C ++库,而后者是用于处理PDF文件的API。我们将使用Aspose.Cells for C ++ API将CSV文件转换为PDF格式,并使用Aspose.PDF for C ++ API将PDF文件转换为CSV格式。

无需MS Office创建Excel!使用C ++将实现CSV和PDF格式相互转换教程来啦!

将CSV文件转换为PDF格式

以下是将CSV文件转换为PDF格式的步骤。

  • 创建ILoadOptions 类的实例 。
  • 通过 使用先前 创建的ILoadOptions实例创建IWorkbook类 的对象来加载CSV文件 。
  • 使用IWorkbook-> Save(intrusive_ptrfileName,Aspose :: Cells :: SaveFormat saveFormat) 方法将文件保存为PDF格式 。

以下是使用C ++将CSV文件转换为PDF格式的示例代码。

// Source directory path.
StringPtr srcDir = new String("SourceDirectory\\");

// Output directory path.
StringPtr outDir = new String("OutputDirectory\\");

// Create CSV LoadOptions object
intrusive_ptrloadOptions = Factory::CreateILoadOptions(LoadFormat_CSV);

// Load the input Excel file
intrusive_ptrworkbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("Sample1.csv")), loadOptions);

// Save as PDF file
workbook->Save(outDir->StringAppend(new String("Sample1_out.pdf")), SaveFormat_Pdf);

将PDF文件转换为CSV格式

以下是将PDF文件转换为CSV格式的步骤。

  • 使用Document 类加载PDF文件 。
  • 创建一个ExcelSaveOptions类的实例。
  • 使用ExcelSaveOptions-> set_Format(ExcelSaveOptions :: ExcelFormat值)方法将格式设置为CSV 。
  • 使用“文档”->“保存”(System :: String outputFileName,System :: SharedPtr选项)方法保存CSV文件。

以下是使用C ++将PDF文件转换为CSV格式的示例代码。

// Load PDF file
auto pdfDocument = MakeObject(u"SourceDirectory\\Sample2_csv.pdf");

// Initialize ExcelSaveOptions class object
auto options = MakeObject();
options->ConversionEngine = ExcelSaveOptions::ConversionEngines::NewEngine;

// Set save format as CSV
options->set_Format(ExcelSaveOptions::ExcelFormat::CSV);

// Save as CSV file
pdfDocument->Save(u"OutputDirectory\\Sample2_csv_out.csv", options);

将选定的PDF页面转换为CSV文件

Aspose.PDF for C ++还使您能够在转换的CSV文件中包含特定的PDF页面。为此,可以按照以下步骤操作。

  • 使用Document 类加载PDF文件 。
  • 创建一个ExcelSaveOptions类的实例。
  • 使用ExcelSaveOptions-> set_Format(ExcelSaveOptions :: ExcelFormat值)方法将格式设置为CSV 。
  • 创建Document 类的新对象以表示CSV文件。
  • 使用Document-> get_Pages() 方法循环浏览PDF文件的页面 。
  • 在循环中,指定选择所需页面的条件。
  • 使用Document-> get_Pages()-> Add(系统:: SharedPtr常量和实体)方法将页面添加到新创建的Document对象。
  • 在循环外使用“文档”->“保存”(System :: String outputFileName,System :: SharedPtr选项)方法保存CSV文件。

以下是在CSV文件中包含选定PDF页面的示例代码。

// Load PDF file
auto pdfDocument = MakeObject(u"SourceDirectory\\Sample2_csv.pdf");

// Initialize ExcelSaveOptions class object
auto options = MakeObject();
options->ConversionEngine = ExcelSaveOptions::ConversionEngines::NewEngine;

// Set save format as CSV
options->set_Format(ExcelSaveOptions::ExcelFormat::CSV);

// Create an instance of the Document class to represent the CSV file.
auto newPdfDocument = MakeObject();

for (int i = 1; i <= pdfDocument->get_Pages()->get_Count(); i++)
{
	// Get first 2 pages
	if (i <= 2) { // Add the page to the new Document instance newPdfDocument->get_Pages()->Add(pdfDocument->get_Pages()->idx_get(i));
	}
}

// Save as CSV file
newPdfDocument->Save(u"OutputDirectory\\Sample2_csv_out.csv", options);

将PDF页面转换为单个CSV文件

使用Aspose.PDF for C ++,您还可以将PDF页面转换为单个CSV文件。为此,您可以按照以下步骤操作。

  • 使用Document 类加载PDF文件 。
  • 创建一个ExcelSaveOptions类的实例。
  • 使用ExcelSaveOptions-> set_Format(ExcelSaveOptions :: ExcelFormat值)方法将格式设置为CSV 。
  • 使用Document-> get_Pages() 方法循环浏览PDF文件的页面 。
  • 在循环中,创建Document 类的新对象以表示CSV文件。
  • 使用Document-> get_Pages()-> Add(系统:: SharedPtr常量和实体)方法将页面添加到新创建的Document对象。
  • 使用“文档”->“保存”(System :: String outputFileName,System :: SharedPtr选项)方法保存CSV文件。

以下是使用C ++将PDF页面转换为单个CSV文件的示例代码。

// Load PDF file
auto pdfDocument = MakeObject(u"SourceDirectory\\Sample2_csv.pdf");

// Initialize ExcelSaveOptions class object
auto options = MakeObject();
options->ConversionEngine = ExcelSaveOptions::ConversionEngines::NewEngine;

// Set save format as CSV
options->set_Format(ExcelSaveOptions::ExcelFormat::CSV);

for (int i = 1; i <= pdfDocument->get_Pages()->get_Count(); i++)
{
	// Create an instance of the Document class to represent the CSV file.
	auto newPdfDocument = MakeObject();

	// Add the page to the new Document instance
	newPdfDocument->get_Pages()->Add(pdfDocument->get_Pages()->idx_get(i));

	// Save as CSV file
	newPdfDocument->Save(u"OutputDirectory\\Sample2_csv_out_" + System::Convert::ToString(i) + u".csv", options);
}

如果您有任何疑问或需求,请随时加入Aspose技术交流群(761297826),我们很高兴为您提供查询和咨询。