Browse Source

【打印】小册子 - 页面排版逻辑完善

lizhe 1 year ago
parent
commit
89e761f41f

+ 45 - 22
PDF Office/PDF Master/Class/PDFTools/Print/Presenter/KMPrintPresenter.swift

@@ -140,26 +140,48 @@ extension KMPrintPresenter: KMPrintPresenterDocument {
         }
         
         var drawPages:[[KMPrintDrawPage]] = []
-        for i in 0...(paperCount - 1) {
+        for i in 0..<paperCount {
             //获取多页page
             var tempPags: [KMPrintDrawPage] = []
-            for j in 0...(pageOfPaperCount - 1) {
-                if pageModel.operation.type == .pamphlet {
-                    let pageIndex = i / pageRepetitionCount
-                    if (pageIndex * pageOfPaperCount + j < pages.count) {
-                        let pageIndex = i / pageRepetitionCount
-                        let originDrawPage = (pages[pageIndex * pageOfPaperCount + j])
-                        let drawPage = KMPrintDrawPage()
-                        drawPage.page = originDrawPage.page
-                        var pageCropRect = self.fetchPageCropRect(paperSize,i % pageRepetitionCount, pageModel, drawPage)
-                        var pageShowRect = pageCropRect
-                        drawPage.cropRect = pageCropRect
-                        drawPage.showRect = pageShowRect
-                        tempPags.append(drawPage)
-                    } else {
-                        tempPags.append(KMPrintDrawPage())
-                    }
-                } else {
+            if pageModel.operation.type == .pamphlet {
+                let count = paperCount * pageOfPaperCount
+                let pagesCount = pages.count
+                var page = KMPrintDrawPage()
+                var page2 = KMPrintDrawPage()
+                
+                //第一页
+                let index = count - (i + 1)
+                if index < pagesCount {
+                    page = pages[index]
+                }
+                
+                //第二页
+                let index2 = i
+                if index2 < pagesCount && index2 >= 0 {
+                    page2 = pages[index2]
+                }
+                
+                if i % 2 != 0 {
+                    var temp = page2
+                    page2 = page
+                    page = temp
+                }
+                
+                var pageCropRect = self.fetchPageCropRect(paperSize,i % pageRepetitionCount, pageModel, page)
+                var pageShowRect = pageCropRect
+                page.cropRect = pageCropRect
+                page.showRect = pageShowRect
+                tempPags.append(page)
+                
+                var pageCropRect2 = self.fetchPageCropRect(paperSize,i % pageRepetitionCount, pageModel, page2)
+                var pageShowRect2 = pageCropRect
+                page2.cropRect = pageCropRect2
+                page2.showRect = pageShowRect2
+                tempPags.append(page2)
+                
+                drawPages.append(tempPags)
+            } else {
+                for j in 0..<pageOfPaperCount {
                     let pageIndex = i / pageRepetitionCount
                     if (pageIndex * pageOfPaperCount + j < pages.count) {
                         let originDrawPage = (pages[pageIndex * pageOfPaperCount + j])
@@ -179,8 +201,8 @@ extension KMPrintPresenter: KMPrintPresenterDocument {
                         tempPags.append(drawPage)
                     }
                 }
+                drawPages.append(tempPags)
             }
-            drawPages.append(tempPags)
         }
         
         return drawPages
@@ -805,12 +827,13 @@ extension KMPrintPresenter: KMPrintPresenterPaper {
                 count = Int(ceilf(Float(pages.count / pageOfPaper)))
             }
         case .pamphlet: do {
-            let temp = pages.count%2
+            let temp = pages.count%4
             if temp == 0 {
-                count = pages.count / 2
+                count = pages.count / 4
             } else {
-                count = pages.count / 2 + 1
+                count = pages.count / 4 + 1
             }
+            count = count * 2
         }
         default:
             count = Int(ceilf(Float(pages.count / pageOfPaper)))

+ 2 - 2
PDF Office/PDF Master/Class/PDFTools/Print/View/PrintSettingView/View/Pamphlet/KMPrintPamphletView.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22155" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>