gpt4 book ai didi

c# - ABCPDF:将 PDF 文件拆分为单页 PDF 文件

转载 作者:太空狗 更新时间:2023-10-30 00:01:32 26 4
gpt4 key购买 nike

我正在使用 ABCpdf 工具,我正在尝试将 1TB 的 PDF 文件(因此效率是一个问题)拆分为单页 PDF 文件。

我尝试了以下方法:

Doc theSrc = new Doc();
theSrc.Read("C://development//pdfSplitter//Bxdfbc91ca-fc05-4315-8c40-798a77431ee0xP.pdf");

for (int i = 1; i <= theSrc.PageCount; i++)
{
Doc singlePagePdf = new Doc();
singlePagePdf.Rect.String = singlePagePdf.MediaBox.String = theSrc.MediaBox.String;
singlePagePdf.AddPage();
singlePagePdf.AddImageDoc(theSrc, i, null);
singlePagePdf.FrameRect();
singlePagePdf.Save("C://development//pdfSplitter//singlePDF//singlePage"+i+".pdf");
singlePagePdf.Clear();
}
theSrc.Clear();

这个速度非常快,但它不会保留旋转的页面,而且它们需要保留。我尝试手动旋转它们,但这很快变得有点困惑,并且它们没有像在原始文档中那样以精确的方式出现。

我也试过:

Doc theSrc = new Doc();
theSrc.Read("C://development//pdfSplitter//Bxdfbc91ca-fc05-4315-8c40-798a77431ee0xP.pdf");
for (int i = 1; i <= theSrc.PageCount; i++)
{
Doc singlePagePdf = new Doc();
singlePagePdf.Append(theSrc);
singlePagePdf.RemapPages(i.ToString());
singlePagePdf.Save("C://development//pdfSplitter//singlePDF//singlePage"+i+".pdf");
singlePagePdf.Clear();
}
theSrc.Clear();

这个比第一个慢大约 6 倍(在大型文档上)但是它保持旋转页面的格式,这很重要。这个问题是我必须附加整个文档并再次删除所有不需要的页面。对文件中的所有页面都这样做,效率非常低。

谁能帮我解决这个问题?

最佳答案

所以我与 WebSuperGoo(ABCpdf 的创建者)的支持人员进行了交谈,他们给了我以下信息:

Doc theSrc = new Doc();
theSrc.Read("C://development//pdfSplitter//Bxdfbc91ca-fc05-4315-8c40-798a77431ee0xP.pdf");

int srcPagesID = theSrc.GetInfoInt(theSrc.Root, "Pages");
int srcDocRot = theSrc.GetInfoInt(srcPagesID, "/Rotate");

for (int i = 1; i <= theSrc.PageCount; i++)
{
Doc singlePagePdf = new Doc();
singlePagePdf.Rect.String = singlePagePdf.MediaBox.String = theSrc.MediaBox.String;
singlePagePdf.AddPage();
singlePagePdf.AddImageDoc(theSrc, i, null);
singlePagePdf.FrameRect();

int srcPageRot = theSrc.GetInfoInt(theSrc.Page, "/Rotate");
if (srcDocRot != 0)
{
singlePagePdf.SetInfo(singlePagePdf.Page, "/Rotate", srcDocRot);
}
if (srcPageRot != 0)
{
singlePagePdf.SetInfo(singlePagePdf.Page, "/Rotate", srcPageRot);
}

singlePagePdf.Save("C://development//pdfSplitter//singlePDF//singlePage"+i+".pdf");
singlePagePdf.Clear();
}
theSrc.Clear();

这个解决方案与我的第一个解决方案相同,但它包含页面旋转并且速度非常快。

我希望这也能帮助到其他人。

关于c# - ABCPDF:将 PDF 文件拆分为单页 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18122312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com