Display and manipulate PDF documents in your applications using PDFKit.

Posts under PDFKit tag

68 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

CoreGraphics: CGPDFPageCopyRootTaggedNode
My app uses PDFKit, but I don't know how to solve this bug at all. Under the same IOS system and device model, some users' devices may experience crashes, while our own devices are functioning normally. The following is the stack information for crashing: 0 libsystem_platform.dylib__os_unfair_lock_recursive_abort + 36 1 libsystem_platform.dylib__os_unfair_lock_lock_slow + 308 2 CoreGraphics_CGPDFPageCopyRootTaggedNode + 56 3 PDFKit-[PDFPageViewAccessibility accessibilityElements] + 76 4 UIAccessibility-[NSObject(AXPrivCategory) _accessibilityElements] + 56 5 UIAccessibility-[NSObjectAccessibility accessibilityElementCount] + 68 6 UIAccessibility-[NSObject(AXPrivCategory) _accessibilityHasOrderedChildren] + 44 7 UIAccessibility-[NSObject(AXPrivCategory) _accessibilityFrameForSorting] + 216 8 UIAccessibility-[NSObject _accessibilityCompareGeometry:] + 116 9 UIAccessibility-[NSObject(AXPrivCategory) accessibilityCompareGeometry:] + 52 10 CoreFoundation___CFSimpleMergeSort + 100 11 CoreFoundation___CFSimpleMergeSort + 248 12 CoreFoundation_CFSortIndexes + 260 13 CoreFoundation-[NSArray sortedArrayFromRange:options:usingComparator:] + 732 14 CoreFoundation-[NSMutableArray sortedArrayFromRange:options:usingComparator:] + 60 15 CoreFoundation-[NSArray sortedArrayUsingSelector:] + 168 16 UIAccessibility___57-[NSObject(AXPrivCategory) _accessibilityFindDescendant:]_block_invoke + 268 17 UIAccessibility___96-[NSObject(AXPrivCategory) _accessibilityEnumerateAXDescendants:passingTest:byYieldingElements:]_block_invoke + 140 18 UIAccessibility-[NSObject _accessibilityEnumerateAXDescendants:passingTest:byYieldingElements:] + 244 19 UIAccessibility-[NSObject _accessibilityFindFirstAXDescendantPassingTest:byYieldingElements:] + 272 20 UIAccessibility-[NSObject(AXPrivCategory) _accessibilityFindDescendant:] + 100 21 UIAccessibility__axuiElementForNotificationData + 276 22 UIAccessibility__massageAssociatedElementBeforePost + 36 23 UIAccessibility__UIAXBroadcastMainThread + 292 24 libdispatch.dylib__dispatch_call_block_and_release + 32 25 libdispatch.dylib__dispatch_client_callout + 20 26 libdispatch.dylib__dispatch_main_queue_drain + 980 27 libdispatch.dylib__dispatch_main_queue_callback_4CF + 44 28 CoreFoundation___CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 16 29 CoreFoundation___CFRunLoopRun + 1996 30 CoreFoundation_CFRunLoopRunSpecific + 572 31 GraphicsServices_GSEventRunModal + 164 32 UIKitCore-[UIApplication _run] + 816 33 UIKitCore_UIApplicationMain + 340 34 SwiftUIclosure #1 (Swift.UnsafeMutablePointer<Swift.UnsafeMutablePointer<Swift.Int8>?>) -> Swift.Never in SwiftUI.(KitRendererCommon in _ACC2C5639A7D76F611E170E831FCA491)(Swift.AnyObject.Type) -> Swift.Never + 168 35 SwiftUI SwiftUI.runApp(A) -> Swift.Never + 100 36 SwiftUI static (extension in SwiftUI):SwiftUI.App.main() -> () + 180
2
2
151
2w
PDFKit PDFPage.setBounds(_:for:) returns unexpected results in Xcode16
In XCode15, if you specify mediaBox for PDFDisplayBox, the page will be shrunk to fit the specified range. However, in XCode16, the page is cropped to fit the specified range, as when cropBox is specified for PDFDisplayBox. I think it's a bug because the setBounds documentation hasn't been updated, but has anyone had the same problem? Please let me know if there are any workarounds.
0
1
176
Sep ’24
PDFKit shows popup asking to download embedded font. Any way to disable this behavior?
I'm building a MacOS app which reads a lot of PDFs in the background. Some of these PDF's have an embedded font which is not installed on the system. In such cases the app shows a popup asking whether to Download or Skip the font. This seems to be a PDFKit behavior because I see the same behavior when I open the file in Preview (see screenshot) This behavior is disruptive to the user experience and I'd like to be able to disable font downloads. However I don't see any option in the PDFKit API to do so. Any ideas?
0
0
191
Sep ’24
View flashes when setting new PDFDocument in PDFView
I have a SwiftUI View containing a PDFView from PDFKit (via NSViewRepresentable). When setting a new PDFDocument the view flashes briefly with the background color before displaying the new document. Curiously the flashing is vastly reduced (but not eliminated) by calling layoutDocumentView() which should already be called from setDocument according to its documentation. struct SheetView: NSViewRepresentable { var pdf: PDFDocument? func makeNSView(context: Context) -> PDFView { let pdfView = PDFView() pdfView.displaysPageBreaks = false pdfView.displayMode = .singlePage pdfView.pageShadowsEnabled = false pdfView.autoScales = true return pdfView } func updateNSView(_ pdfView: PDFView, context: Context) { if pdf != pdfView.document { pdfView.document = pdf pdfView.layoutDocumentView() // reduces flashing but does not eliminate it } } }
1
0
252
Sep ’24
Save large PDF file with UIDocument
Hi, I'm working with UIDocument to store a PDF file. This is code I use for saving a file. document.close(completionHandler: { (success) in if success { document.save(to: url, for: .forOverwriting, completionHandler: { (success) in if success { print("Saved file successfully") } }) } }) This code works well with a small file size. But if it's a large file like 100MB, it takes around 2-5 minutes to save the file. Is there a way to save file with the changes only? Or create an auto save function triggered whenever the user edit the file?
2
0
230
Sep ’24
PDFKit PDFPage.characterBounds(at:) returns incorrect coordinates iOS 18 beta 4
PDFKit PDFPage.characterBounds(at: Int) is returning incorrect coordinates with iOS 18 beta 4 and later / Xcode 16 beta 4. It worked fine in iOS 17 and earlier (after showing the same issue during the early iOS 17 beta cycle) It breaks critical functionality that my app relies on. I have filed feedback (FB14843671). So far no changes in the latest betas. iOS release date is approaching fast! Anybody having the same issue? Any workaround available?
6
1
683
1w
PDFKit - Wrapping text
Dear all, I have an app in which I'm trying to create a pdf from the data stored. Everything is working fine except the fact that the text is not following the page margins, going out of the page of being truncated without being written on the line below. Has anybody experienced the same in the past? Please assist, I'm getting out of my mind with this in the last two days... Here the code of the function which is creating the PDF. let pdfMetaData = [ kCGPDFContextCreator: "Your App Name", kCGPDFContextAuthor: "Your Name", kCGPDFContextTitle: "Allenamento" ] let pageWidth = 8.5 * 72.0 // Standard letter size in points (8.5 x 11 inches) let pageHeight = 11 * 72.0 let pageSize = CGRect(x: 0, y: 0, width: pageWidth, height: pageHeight) let margin: CGFloat = 20.0 let pdfData = NSMutableData() guard let consumer = CGDataConsumer(data: pdfData as CFMutableData) else { print("Errore nella creazione del consumer") return } var mediaBox = pageSize guard let pdfContext = CGContext(consumer: consumer, mediaBox: &mediaBox, pdfMetaData as CFDictionary) else { print("Errore nella creazione del contesto PDF") return } pdfContext.beginPDFPage(nil) // Parte superiore della pagina ... // Disegno del rettangolo "MATERIALE DA ALLENAMENTO" ... // Disegno del rettangolo "ESERCITAZIONI ALLENAMENTO" let exercisesRect = CGRect(x: margin, y: cellYPosition - 45, width: pageWidth - 2 * margin, height: 25) pdfContext.setFillColor(NSColor.lightGray.cgColor) pdfContext.fill(exercisesRect) pdfContext.setStrokeColor(NSColor.black.cgColor) pdfContext.stroke(exercisesRect) let exercisesText = "ESERCITAZIONI ALLENAMENTO" let exercisesAttributedString = NSAttributedString(string: exercisesText, attributes: boldAttributes) let exercisesTextPosition = CGPoint(x: exercisesRect.midX - exercisesAttributedString.size().width / 2, y: exercisesRect.midY - 5) drawText(attributedString: exercisesAttributedString, position: exercisesTextPosition, context: pdfContext) // Iniziamo a disegnare le informazioni degli esercizi let sortedExercises = training.trainingExercises.sorted { $0.order < $1.order } var currentY = exercisesRect.minY - 30 for trainingExercise in sortedExercises { // Gestione del wrap text e posizionamento su più pagine let remainingHeight = currentY - margin if remainingHeight < 100 { pdfContext.endPDFPage() pdfContext.beginPDFPage(nil) currentY = pageHeight - margin } // Disegna la durata let durationText = "\(trainingExercise.duration) min" let durationAttributedString = NSAttributedString(string: durationText, attributes: boldAttributes) drawText(attributedString: durationAttributedString, position: CGPoint(x: margin, y: currentY), context: pdfContext) currentY -= 20 // Disegna la descrizione con wrap text let descriptionText = trainingExercise.exercise.exerciseDescription let descriptionAttributedString = NSAttributedString(string: descriptionText, attributes: regularAttributes) let maxTextWidth = pageWidth - 2 * margin let descriptionBoundingBox = descriptionAttributedString.boundingRect(with: CGSize(width: maxTextWidth, height: .greatestFiniteMagnitude), options: [.usesLineFragmentOrigin, .usesFontLeading]) if currentY - descriptionBoundingBox.height < margin { pdfContext.endPDFPage() pdfContext.beginPDFPage(nil) currentY = pageHeight - margin } // Disegno della descrizione con supporto per il wrap text let descriptionFramesetter = CTFramesetterCreateWithAttributedString(descriptionAttributedString) let descriptionPath = CGPath(rect: CGRect(x: margin, y: currentY - descriptionBoundingBox.height, width: maxTextWidth, height: descriptionBoundingBox.height), transform: nil) let descriptionFrame = CTFramesetterCreateFrame(descriptionFramesetter, CFRangeMake(0, 0), descriptionPath, nil) CTFrameDraw(descriptionFrame, pdfContext) currentY -= descriptionBoundingBox.height + 10 // Disegna l'immagine sotto la descrizione if let imagePath = trainingExercise.exercise.imagePath, let image = NSImage(contentsOfFile: imagePath) { let imageCG = image.cgImage(forProposedRect: nil, context: nil, hints: nil) let imageAspect = CGFloat(imageCG!.width) / CGFloat(imageCG!.height) let targetWidth = min(maxTextWidth, CGFloat(400)) let targetHeight = targetWidth / imageAspect if currentY - targetHeight < margin { pdfContext.endPDFPage() pdfContext.beginPDFPage(nil) currentY = pageHeight - margin } let imageTargetRect = CGRect(x: margin, y: currentY - targetHeight, width: targetWidth, height: targetHeight) pdfContext.draw(imageCG!, in: imageTargetRect) currentY -= targetHeight + 10 } // Disegna una linea sottile come separatore pdfContext.setStrokeColor(NSColor.lightGray.cgColor) pdfContext.setLineWidth(1.0) let lineYPosition = currentY - 5 pdfContext.move(to: CGPoint(x: margin, y: lineYPosition)) pdfContext.addLine(to: CGPoint(x: pageWidth - margin, y: lineYPosition)) pdfContext.strokePath() currentY -= 20 // Spazio tra esercizi } pdfContext.endPDFPage() pdfContext.closePDF() let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" let fileName = "Allenamento_\(dateFormatter.string(from: training.date)).pdf" if let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first { let fileURL = documentsURL.appendingPathComponent(fileName) do { ... } } catch { print("Errore durante il salvataggio del PDF: \(error)") } } } private func drawText(attributedString: NSAttributedString, position: CGPoint, context: CGContext) { let line = CTLineCreateWithAttributedString(attributedString) context.textPosition = position CTLineDraw(line, context) }
0
1
234
Aug ’24
how to change overlay View in PDFPageOverlayViewProvider
I’m using PDFPageOverlayViewProvider with pdfview. I want to control the visibility of the overlay view using a button. However, the view updates only when it disappears and reappears. I would like the changes to be reflected immediately. How can I achieve this? struct PDFKitView: View { let bookId: UUID let bookTitle: String @State private var currentPage = "1" @State private var isSideTab = false @State private var selectedNote: [SelectedNote] = [] var body: some View { let pdfDocument = openPDF(at: bookId.uuidString) ZStack(alignment: .trailing) { HStack(spacing: 0) { PDFKitRepresentableView( bookId: bookId, selectedNote: $selectedNote, currentPage: $currentPage, pdfDocument: pdfDocument ) if isSideTab { SideView() .transition(.move(edge: .trailing)) .zIndex(1) .frame(maxWidth: 260) } } .padding(.top, 73) } .onAppear { getAllNote(bookId: bookId) } .customNavigationBar(back: true) { Text("\(currentPage)/\(pdfDocument.pageCount)") .pretendard(.CaptionRegular) .foregroundStyle(Color.Text.primary) } TrailingView: { Button(action: { withAnimation { isSideTab.toggle() } }) { Image(systemName: SFSymbol.squareStack3dDownForwardFill.icon) .sfPro(.IconMedium) .foregroundStyle(Color.Text.primary) } } } @ViewBuilder func SideView() -> some View { VStack(spacing: 16) { HStack(spacing: 4) { Image(systemName: SFSymbol.squareStack3dDownForwardFill.icon) .sfPro(.IconSmall) .foregroundStyle(Color.Text.primary) Text(Literals.sideTabTitle) .pretendard(.P2Bold) .foregroundStyle(Color.Text.primary) Spacer() } .padding(16) .background { Color.Background.white } ScrollView { ForEach($selectedNote, id: \.noteId) { note in NoteCellView(note: note) } } .background { Color.Fill.white } } .background { Color.Background.blueGray } } @ViewBuilder func NoteCellView(note: Binding<SelectedNote>) -> some View { HStack(alignment: .top, spacing: 16) { Image(.writingNote) .resizable() .scaledToFit() .frame(width: 42, height: 60) VStack(alignment: .leading, spacing: 8) { Text(note.wrappedValue.noteId == bookId.uuidString ? "345" : "123") .foregroundStyle(Color.Text.secondary) .padding(.horizontal, 8) .background { Rectangle() .strokeBorder(Color.Layout.secondary) } Text(bookTitle) .lineLimit(2) Toggle("", isOn: note.selected) .labelsHidden() .tint(Color.Fill.activePrimary) } } .padding(EdgeInsets(top: 20, leading: 16, bottom: 16, trailing: 16)) } } struct PDFKitRepresentableView: UIViewRepresentable { let bookId: UUID @Binding var selectedNote: [SelectedNote] @Binding var currentPage: String let pdfDocument: PDFDocument let pdfView = PDFView() let toolPicker = PKToolPicker() func makeUIView(context: Context) -> PDFView { pdfView.displayMode = .singlePageContinuous pdfView.usePageViewController(false) pdfView.displayDirection = .vertical pdfView.pageOverlayViewProvider = context.coordinator pdfView.autoScales = true pdfDocument.delegate = context.coordinator pdfView.document = pdfDocument return pdfView } func updateUIView(_ uiView: PDFView, context: Context) { if let localNote = selectedNote.first(where: {$0.noteId == bookId.uuidString}), !localNote.selected { toolPicker.setVisible(false, forFirstResponder: uiView) } else { toolPicker.setVisible(true, forFirstResponder: uiView) } uiView.becomeFirstResponder() } func makeCoordinator() -> CanvasProvider { return CanvasProvider(parent: self) } } final class CanvasProvider: NSObject, PDFPageOverlayViewProvider, PDFDocumentDelegate { var localNotes = [PDFPage: PKCanvasView]() var passNotes = [PDFPage: Image]() let parent: PDFKitRepresentableView init(parent: PDFKitRepresentableView) { self.parent = parent super.init() getDrawingDatas( bookId: parent.bookId.uuidString, selectedNote: parent.selectedNote, document: parent.pdfDocument ) } func pdfView(_ view: PDFView, overlayViewFor page: PDFPage) -> UIView? { var coverView: PKCanvasView? = PKCanvasView() if let view = localNotes[page], parent.selectedNote.first(where: { $0.noteId == parent.bookId.uuidString })?.selected ?? false { view.backgroundColor = .clear view.isOpaque = true view.drawingPolicy = .anyInput view.delegate = self parent.toolPicker.addObserver(view) coverView = view (page as? CanvasPDFPage)?.canvasView = view } else { coverView = nil } for subView in view.documentView?.subviews ?? [] { if subView.theClassName == "PDFPageView" { subView.isUserInteractionEnabled = true } } return coverView } func pdfView(_ pdfView: PDFView, willDisplayOverlayView overlayView: UIView, for page: PDFPage) { } func pdfView(_ pdfView: PDFView, willEndDisplayingOverlayView overlayView: UIView, for page: PDFPage) { } }
0
0
263
Aug ’24
Receiving NSMallocException on Real devices while using DrawPDFPage
Hi We're using CGPDFDocument to retrieve the PDF document and draw it in the UIView using CGContext.DrawPDFPage. While doing this operation, I was able to get an NSMallocException with a specific document. I was able to get this exception only on real devices; emulators are working fine. The device used is the iPad (5th generation), which has iOS 16.7.8. Steps to replicate: Open the application at the link (we have attached the sample with PDF file with the issue in the link) https://www.dropbox.com/scl/fi/mosvcnqc0nvxwdjf8k0m5/SimplePDFVieweriOS.zip?rlkey=0ntj75yjg71kjwtwwe06uax5v&st=mmv08e2f&dl=0 Navigate through the pages using the next button. After the page navigation to page 7, and the application will throw an NSMallocException with the reason: Failed to grow buffer Platform: Xamarin.iOS Development tool: Visual Studio 2022 Stack trace for the issue: Native stack trace: 0 CoreFoundation 0x00000001b32e9418 55B9BA28-4C5C-3FE7-9C47-4983337D6E83 + 37912 1 libobjc.A.dylib 0x00000001ac63dc28 objc_exception_throw + 56 2 CoreFoundation 0x00000001b347c5c8 55B9BA28-4C5C-3FE7-9C47-4983337D6E83 + 1689032 3 CoreFoundation 0x00000001b3474504 55B9BA28-4C5C-3FE7-9C47-4983337D6E83 + 1656068 4 CoreFoundation 0x00000001b3363160 __CFSafelyReallocate + 68 5 CoreFoundation 0x00000001b33aae9c 55B9BA28-4C5C-3FE7-9C47-4983337D6E83 + 831132 6 CoreFoundation 0x00000001b335af2c CFDataSetLength + 152 7 CoreGraphics 0x00000001b4ca71a4 CGDataProviderCopyData + 240 8 ImageIO 0x00000001b7fafd38 7E9A543E-EE3C-34B7-9EFE-D5F6357F2FA3 + 32056 9 ImageIO 0x00000001b7fb1124 7E9A543E-EE3C-34B7-9EFE-D5F6357F2FA3 + 37156 10 ImageIO 0x00000001b7ff7124 7E9A543E-EE3C-34B7-9EFE-D5F6357F2FA3 + 323876 11 ImageIO 0x00000001b7fb0fe0 CGImageSourceCreateWithDataProvider + 176 12 CoreGraphics 0x00000001b4d7ac0c EDFE1CE3-C3C4-30A2-AC92-099D20347781 + 1018892 13 CoreGraphics 0x00000001b4d7a9a0 CGPDFImageCreateImage + 208 14 CoreGraphics 0x00000001b4decbc8 EDFE1CE3-C3C4-30A2-AC92-099D20347781 + 1485768 15 CoreGraphics 0x00000001b4d26e34 EDFE1CE3-C3C4-30A2-AC92-099D20347781 + 675380 16 CoreGraphics 0x00000001b4d2f7c4 EDFE1CE3-C3C4-30A2-AC92-099D20347781 + 710596 17 CoreGraphics 0x00000001b4ce16dc CGPDFScannerScan + 436 18 CoreGraphics 0x00000001b5073198 CGPDFDrawingContextDraw + 112 19 CoreGraphics 0x00000001b4d271b0 EDFE1CE3-C3C4-30A2-AC92-099D20347781 + 676272 20 CoreGraphics 0x00000001b4d2f7c4 EDFE1CE3-C3C4-30A2-AC92-099D20347781 + 710596 21 CoreGraphics 0x00000001b4ce16dc CGPDFScannerScan + 436 22 CoreGraphics 0x00000001b4d3f68c CGContextDrawPDFPageWithDrawingCallbacks + 2680 23 CoreGraphics 0x00000001b4cdb04c CGContextDrawPDFPage + 32 24 SimplePDFViewer 0x0000000100f0cb90 SimplePDFViewer + 1969040 25 SimplePDFViewer 0x0000000100eeb3c0 SimplePDFViewer + 1831872 26 SimplePDFViewer 0x0000000100d35b14 SimplePDFViewer + 39700 27 SimplePDFViewer 0x0000000100e8eb80 SimplePDFViewer + 1452928 28 SimplePDFViewer 0x0000000100f483f4 mono_pmip + 25092 29 SimplePDFViewer 0x0000000100fd8b90 mono_pmip + 616864 30 SimplePDFViewer 0x0000000100fdc014 mono_pmip + 630308 31 SimplePDFViewer 0x0000000100d32450 SimplePDFViewer + 25680 32 SimplePDFViewer 0x0000000100d32328 SimplePDFViewer + 25384 33 UIKitCore 0x00000001b5412150 27A9C298-B702-3C39-8C06-07196E4CD16B + 1667408 34 QuartzCore 0x00000001b47990e8 9E40B2EB-260C-3AF1-AE45-A1A551A8C1B9 + 119016 35 QuartzCore 0x00000001b480adb8 9E40B2EB-260C-3AF1-AE45-A1A551A8C1B9 + 585144 36 QuartzCore 0x00000001b47987a8 9E40B2EB-260C-3AF1-AE45-A1A551A8C1B9 + 116648 37 QuartzCore 0x00000001b4798034 9E40B2EB-260C-3AF1-AE45-A1A551A8C1B9 + 114740 38 QuartzCore 0x00000001b47a89f0 9E40B2EB-260C-3AF1-AE45-A1A551A8C1B9 + 182768 39 QuartzCore 0x00000001b47d5dc0 9E40B2EB-260C-3AF1-AE45-A1A551A8C1B9 + 368064 40 QuartzCore 0x00000001b47c0dc8 9E40B2EB-260C-3AF1-AE45-A1A551A8C1B9 + 282056 41 CoreFoundation 0x00000001b33698e8 55B9BA28-4C5C-3FE7-9C47-4983337D6E83 + 563432 42 CoreFoundation 0x00000001b32f951c 55B9BA28-4C5C-3FE7-9C47-4983337D6E83 + 103708 43 CoreFoundation 0x00000001b3355214 55B9BA28-4C5C-3FE7-9C47-4983337D6E83 + 479764 44 CoreFoundation 0x00000001b3359d20 CFRunLoopRunSpecific + 584 45 GraphicsServices 0x00000001eab69998 GSEventRunModal + 160 46 UIKitCore 0x00000001b55ec448 27A9C298-B702-3C39-8C06-07196E4CD16B + 3609672 47 UIKitCore 0x00000001b55ec0c0 UIApplicationMain + 312 48 SimplePDFViewer 0x000000010106b350 xamarin_UIApplicationMain + 60 49 SimplePDFViewer 0x0000000100f0de18 SimplePDFViewer + 1973784 50 SimplePDFViewer 0x0000000100eecd4c SimplePDFViewer + 1838412 51 SimplePDFViewer 0x0000000100eece70 SimplePDFViewer + 1838704 52 SimplePDFViewer 0x0000000100d33ad0 SimplePDFViewer + 31440 53 SimplePDFViewer 0x0000000100e8eb80 SimplePDFViewer + 1452928 54 SimplePDFViewer 0x0000000100f483f4 mono_pmip + 25092 55 SimplePDFViewer 0x0000000100fd8b90 mono_pmip + 616864 56 SimplePDFViewer 0x0000000100fddbdc mono_pmip + 637420 57 SimplePDFViewer 0x0000000100f2d5ec SimplePDFViewer + 2102764 58 SimplePDFViewer 0x00000001010802dc xamarin_log + 22464 59 SimplePDFViewer 0x0000000100d334bc SimplePDFViewer + 29884 60 dyld 0x00000001d0b04344 8A4B89B7-D348-375B-97B1-FC8A84E3E5CE + 82756 Kindly let us know if you need any further details regarding this issue.
0
0
221
Aug ’24
If you select a character in the content of PFDView using PDfkit with a long press, the Editmenu is displayed too late.
It's the same as the title, and when I checked the log, there were hundreds to thousands of lines with the following content. The larger the page index of the Pdf from which you select letters, the more logs will be recorded. .notdef: no mapping. .notdef: no mapping. .notdef: no mapping. .notdef: no mapping. .notdef: no mapping. .notdef: no mapping. . . . can't create CMap Adobe-KR1-UCS2'. can't create CMap Adobe-KR1-UCS2'. can't create CMap Adobe-KR1-UCS2'. can't create CMap Adobe-KR1-UCS2'. can't create CMap Adobe-KR1-UCS2'. can't create CMap Adobe-Identity-UCS2'. can't create CMap Adobe-KR1-UCS2'. can't create CMap Adobe-KR1-UCS2'. can't create CMap Adobe-Identity-UCS2'. can't create CMap Adobe-Identity-UCS2'. can't create CMap `Adobe-Identity-UCS2'. I don't know why this is happening. Is there a solution?
0
0
310
Aug ’24
How to append or Save a PDF Document in PDFKit incrementally
Hi - I am using PDFKit to create annotations (drawings), comments, and filling out forms of PDF Templates that are digitally signed. The signature permissions allow for form filling and annotations. How can I save the document incrementally or by appending the changes to the end of a PDF so that it doesn't invalidate the signature and its hash. I didn't see any flag options for this in the PDF write (toFile/URL) or dataRepresentation functions, but it seems noting has been added or changed since iOS 11.0. Is there a flag to allow this with PDFDocumentWriteOption or is there another method I should be using? Thank you.
0
0
309
Aug ’24
How do I correctly show a PDF document?
How do I correctly show a PDF document? iPad and Xcode 15.4 Within my GameViewController, I have: func presentScene(_ theScene: SKScene) { theScene.scaleMode = .resizeFill if let skView = self.view as? SKView { skView.ignoresSiblingOrder = true skView.showsFPS = true skView.showsNodeCount = true #if os(iOS) let theTransition = SKTransition.doorway(withDuration: 2.0) skView.presentScene(theScene, transition: theTransition) #elseif os(tvOS) skView.presentScene(theScene) #endif } } // presentScene I believe presentScene(theScene) goes to the sceneDidLoad() func of theScene which adds various SKSpriteNodes to the scene via a call to addChild(theNode). So far so good ... Until I have a SKScene wherein I wish to display a PDF. I use this snippet to display this PDF with this call within the SKScene's sceneDisLoad(): displayPDF("ABOUT_OLD_WEST_LOCOMOTIVE") func displayPDF(_ itsName:String) { let pdfView = PDFView() guard let path = Bundle.main.path(forResource: itsName, ofType: "pdf") else { return } print("path") guard let pdfDocument = PDFDocument(url: URL(fileURLWithPath: path)) else { return } print("pdfDocument") pdfView.displayMode = .singlePageContinuous pdfView.autoScales = true pdfView.displayDirection = .vertical pdfView.document = pdfDocument } // displayPDF The 2 print statements show, yet the SKScene does not display the PDF via pdfView.document = pdfDocument? Anyone have a clue what errors I have committed? Appreciate it.
4
0
522
Jul ’24
PDFKit Sizes increases
Hey there, I have a slight problem which is also known on the web, but I couldn't find any answers... My iOS App is working with documents like pdf and images. It is made to handle invoices and upload them to an external service. The app's job is to compress those pdfs and images. Sadly the PDFKit's PDFDocument increases its size just after importing it with pdfDocument = PDFDocument(url: url) and later exporting it to an pdf file again with data = pdf.dataRepresentation() without ever modifying it. It increases by server KB after each export. Do you have any alternatives to the renderer dataRepresentation() or a general PDFKit alternative Thanks
0
0
234
Jul ’24
Exact Extract of Text from PDF
The problem is that when I read out the text in a PDF with page.string or page.attributedString, the context of the lines is lost. Instead of TermA....23,45 TermB....2,13 in an index document TermA TermB 23,45 2,13 is issued. The context of the lines (and the sequence of the letters) is lost. Is there a way to read the text from a PDF line by line?
0
0
229
Jul ’24