Free Support Forum - aspose.com

如何智能自动裁剪PDF页面的白边?

技术支持,您好!
我想知道使用Aspose.PDF.dll自动智能裁剪Pdf每页四周白边的方法。
我的代码如下:
--------------VB.Net 2008的代码--------------------------
Dim Pdf = New Global.Aspose.Pdf.Document(sFile)
Dim Reslt As Global.Aspose.Pdf.Devices.Resolution = New Global.Aspose.Pdf.Devices.Resolution(72)
Dim JpegDevice As Global.Aspose.Pdf.Devices.JpegDevice = New Global.Aspose.Pdf.Devices.JpegDevice(Reslt, 100)
Dim Left, Top, Bottom, Right As Long, W As Long, H As Long
For i = 1 To Pdf.Pages.Count
On Error Resume Next
Dim PdfPage As Global.Aspose.Pdf.Page = Pdf.Pages(i)
W0 = Pdf.Pages(i).PageInfo.Width
H0 = Pdf.Pages(i).PageInfo.Height
On Error Resume Next
Kill(AppPath & “\Temp.jpeg”)
JpegDevice.Process(PdfPage, AppPath & “\QQTempp” & i & “.jpeg”)
shellexecute 0,“open”,“CropPdfEdges.exe”,CmdLine,0 '此行代码是调用外部程序CropPdfEdges.exe查找临时图片文件AppPath & "\Temp.jpeg"页面内容的左上角版心位置的起点坐标(Left,Top)和页面内容右下角的终点坐标(Right,Bottom)
‘假设识别出的起点坐标(Left,Top)=(54,117),终点坐标(Right,Bottom)=(115,80)
Dim CropBox As Global.Aspose.Pdf.Rectangle = Pdf.Pages(i).CropBox
Pdf.Pages(i).CropBox = New Global.Aspose.Pdf.Rectangle(CropBox.LLX + Left, CropBox.LLY + Top , CropBox.URX - Right, CropBox.URY -Bottom)
Pdf.Save(OutFile)
next
-------------------代码结束----------------------
执行 shellexecute 0,“open”,"CropPdfEdges.exe"时,每页Pdf页面被转换成图片文件,并对图片文件进行查找起点和终点坐标,是正确的;但是,执行如下代码时:
Pdf.Pages(i).CropBox = New Global.Aspose.Pdf.Rectangle(CropBox.LLX + Left, CropBox.LLY + Top , CropBox.URX - Right, CropBox.URY -Bottom)
最终得到的裁剪了的Pdf页面跟临时文件图片的结果不一样。
要如何修正方法和代码,方能实现我的目的呢?
另外,如果是扫描型的Pdf页面,如果自动智能矫正倾斜度,然后再自动智能裁剪掉白边或者黑边呢?

谢谢您的帮助!

@ducaisoft

您可以和我们分享您的样本PDF文档吗? 我们将在我们的环境中测试该场景并相应地解决它。

InputFile(with white blank edge in each page).pdf (694.5 KB)

如何将上述Pdf文档的每一页的四处白边裁剪掉?具体的代码如何操作?Pdf.dll又自动 识别白边的起点和终点坐标的功能吗?
为何我使用CropPdfEdges.exe此外部程序来识别每一页Pdf文档的起点和终点坐标是正确的,但将此坐标值直接赋值给Pdf.Pages(i).CropBox = New Global.Aspose.Pdf.Rectangle(CropBox.LLX + Left, CropBox.LLY + Top , CropBox.URX - Right, CropBox.URY -Bottom),则裁剪出来的结果就不正确了。为何?其中(Left,Top)=(54,112)和(right,Bottom)=(84,50)的单位是像素。

@ducaisoft

我们使用您的代码片段调查了我们环境中的场景。 该代码段看起来不错,并且可以处理未扫描的PDF。 API无法修剪扫描的PDF中的空白,因为白色部分是图像的一部分。

不过,我们已在问题跟踪系统中将调查票证记录为PDFNET-47288,以进一步调查可行性。 票证解决后,我们将进一步通知您。 请给我们一点时间。

我们对造成的不便很抱歉。