gpt4 book ai didi

cocoa - 将单页 pdf 显示为图像的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-03 17:21:52 25 4
gpt4 key购买 nike

我想在 NSView 中显示单页 PDF。

到目前为止,我有两种解决方案,但它们都有缺点。谁能帮助我解决这些缺点?

第一个解决方案:使用 NSImage 和 NSImageView

   NSString *path= [[NSBundle mainBundle] pathForResource:name ofType:@"pdf"];
NSImage * image = [[NSImage alloc] initWithContentsOfFile:path] ;

NSImageView * imageView = [[NSImageView alloc] init] ;
imageView.frame = NSMakeRect(0, 0, 2*image.size.width, 2*image.size.height) ;
imageView.image = image ;
imageView.imageScaling = NSImageScaleAxesIndependently ;

return imageView

缺点:

  • 图像未消除锯齿
  • 我不明白为什么需要因子 2。为什么我的 PDF 在 NSView 中显示比在 Finder 中显示的小?

第二种解决方案:使用 PDFDocument 和 PDFView

    NSString *path= [[NSBundle mainBundle] pathForResource:name ofType:@"pdf"];
NSURL *urlPDF = [NSURL fileURLWithPath:path] ;

PDFDocument * myPDFDocument = [[PDFDocument alloc] initWithURL:urlPDF] ;

PDFView *myPDFView = [[PDFView alloc] init] ;
myPDFView.document = myPDFDocument ;

PDFPage * firstPage = [myPDFDocument pageAtIndex:0] ;
NSRect myBounds = [firstPage boundsForBox:kPDFDisplayBoxMediaBox] ;
NSRect myNewBounds = NSMakeRect(0, 0, myBounds.size.width*2, myBounds.size.height*2+5) ;

myPDFView.frame = myNewBounds ;
myPDFView.autoScales = YES ;

return myPDFView ;

缺点:

  • 我可以选择 pdf 的文本,可以放大或缩小。但我希望我的 PDF 文档显示为图像,但没有这些可能性
  • 我不明白为什么需要因子 2。为什么我的 PDF 在 NSView 中显示比在 Finder 中显示的小?
  • 我的图片周围有一些边距

最佳答案

我没有看到您用 NSImageView 描述的问题。我实现了一个基于 Nib 的窗口和 NSImageView。就我而言,我有一个重叠的同级 View ,因此我在 Nib 中打开了 CALayers。我的是10.9.2。大小是正常的(1x),我的PDF中的文本是抗锯齿的(我认为是子像素,因为当我放大它时我看到了颜色)。我确实没有缩放 - 也许缩放会阻止抗锯齿文本?

否则我猜测您的 View 或 PDF 内容有一些不同。尝试使用更简单的 PDF 和/或基于 Nib 的 View ,如果有效,您可以查找差异。

关于cocoa - 将单页 pdf 显示为图像的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22860291/

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