请问word和pdf的按x页拆分功能官方有提供内置API来实现吗?比如我有一个文档,我不希望逐页拆分,我希望按照每2/3/5/10页拆分,我尝试写过,但是都有点问题,代码我已经没有了。
希望可以解答下我的疑惑。
请问word和pdf的按x页拆分功能官方有提供内置API来实现吗?比如我有一个文档,我不希望逐页拆分,我希望按照每2/3/5/10页拆分,我尝试写过,但是都有点问题,代码我已经没有了。
希望可以解答下我的疑惑。
为了分割PDF文件,您可以使用以下代码片段:
using Aspose.Pdf;
using System;
using System.Collections.Generic;
public class PdfSplitter
{
public static void SplitPdf(string inputPdfPath, int[] pageCounts)
{
Document pdfDocument = new Document(inputPdfPath);
string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(inputPdfPath);
string fileExtension = System.IO.Path.GetExtension(inputPdfPath);
int startPage = 1;
int endPage = 0;
foreach (int pageCount in pageCounts)
{
endPage += pageCount;
if (endPage > pdfDocument.Pages.Count)
{
endPage = pdfDocument.Pages.Count;
}
string outputPdfPath = $"{fileNameWithoutExtension}_Pages_{startPage}_{endPage}{fileExtension}";
Document newPdfDocument = new Document();
for (int i = startPage; i <= endPage; i++)
{
newPdfDocument.Pages.Add(pdfDocument.Pages[i]);
}
newPdfDocument.Save(outputPdfPath);
Console.WriteLine($"PDF file {outputPdfPath} created with pages {startPage} to {endPage}");
startPage = endPage + 1;
}
}
public static void Main(string[] args)
{
// Specify the input PDF file path
string inputPdfPath = "your_input_pdf_file.pdf";
// Specify the page counts for splitting
int[] pageCounts = { 2, 3, 5, 10 };
// Call the SplitPdf method
SplitPdf(inputPdfPath, pageCounts);
}
}
将“your_input_pdf_file.pdf”替换为实际 PDF 文件的路径。 pageCounts 数组确定每个分割 PDF 文件将有多少页。
此示例假设您已安装 Aspose.PDF for .NET。根据您的项目结构和要求调整代码。我们将尽快就 Aspose.Words 与您联系。
其实我的意思是按照每X页拆分,就是Aspose文档默认给的是逐页拆分,我想实现每隔X页拆分,比如一份10页的文档,我想每隔两页拆成一个文件,或者是每隔三页拆成一个文件,您发我的代码实现的是同一个功能吗,我看起来感觉像是按照页面范围拆分了?
谢谢,我用这段代码可以了
int OutPageCount = 0;
int TotalPages = TempLoadDocument.Pages.Count;
for(int PageIndex = 1; PageIndex <= TotalPages; PageIndex += SplitPageCount)
{
OutPageCount++;
int SplitEndPage = PageIndex + SplitPageCount - 1;
if(SplitEndPage>TotalPages)
{
SplitEndPage = TotalPages;
}
Aspose.Pdf.Document PerDocument = new Aspose.Pdf.Document();
for(int j= PageIndex; j<=SplitEndPage;j++)
{
PerDocument.Pages.Add(TempLoadDocument.Pages[j]);
}
string ExportPerPdfFileName = $"{Path.Combine(SavedPath,Path.GetFileNameWithoutExtension(DocumentFileName))}_第{OutPageCount}页.pdf";
PerDocument.Save(ExportPerPdfFileName);
}
谢谢,不过我也已经弄出来了,是这段代码:
int OutPageCount = 0;
int TotalPages = TempDocument.PageCount;
for (int pageIndex = 0; pageIndex < TempDocument.PageCount; pageIndex+= SplitPerCount)
{
OutPageCount++;
int LeftPage = TotalPages - pageIndex;
int PageExtra = Math.Min(SplitPerCount,LeftPage);
if (PageExtra>0)
{
string SavedFileName = $"{Path.Combine(SavedPath, Path.GetFileNameWithoutExtension(DocumentFileName))}_第{OutPageCount}页.docx";
Aspose.Words.Document TempSplitDocument = TempDocument.ExtractPages(pageIndex, PageExtra);
TempSplitDocument.CompatibilityOptions.OptimizeFor(Aspose.Words.Settings.MsWordVersion.Word2010);
TempSplitDocument.CompatibilityOptions.BalanceSingleByteDoubleByteWidth = true;
TempSplitDocument.Save(SavedFileName, TempSaveOption);
}
}
可以关闭issue了。