ios - iOS从PDF提取矢量图形

标签 ios pdf vector path graphic

在iOS中,关于PDF的讨论很多,除了一个问题,我在这里找到了所有问题的答案:我有一个包含简单矢量形状的PDF文件。是否可以提取该形状的路径数据,以便我可以用它直接在Quartz图层上绘制形状?

到目前为止,我可以浏览PDF文档,并产生如下输出:

Object key Resources type: kCGPDFObjectTypeDictionary
Object key ProcSet type: kCGPDFObjectTypeArray with length 4
    Object key Array Object type: kCGPDFObjectTypeName PDF
    Object key Array Object type: kCGPDFObjectTypeName ImageB
    Object key Array Object type: kCGPDFObjectTypeName ImageC
    Object key Array Object type: kCGPDFObjectTypeName ImageI
Object key ColorSpace type: kCGPDFObjectTypeDictionary
    Object key Cs1 type: kCGPDFObjectTypeArray with length 2
        Object key Array Object type: kCGPDFObjectTypeName ICCBased
        Object key Array Object type: kCGPDFObjectTypeStream
            Object key Length type: kCGPDFObjectTypeInteger 737
            Object key N type: kCGPDFObjectTypeInteger 3
            Object key Alternate type: kCGPDFObjectTypeName DeviceRGB
            Object key Filter type: kCGPDFObjectTypeName FlateDecode
Object key XObject type: kCGPDFObjectTypeDictionary
    Object key Im1 type: kCGPDFObjectTypeStream
        Object key Length type: kCGPDFObjectTypeInteger 125
        Object key Type type: kCGPDFObjectTypeName XObject
        Object key Subtype type: kCGPDFObjectTypeName Image
        Object key Width type: kCGPDFObjectTypeInteger 62
        Object key Height type: kCGPDFObjectTypeInteger 49
        Object key Interpolate type: kCGPDFObjectTypeBoolean 1
        Object key ColorSpace type: kCGPDFObjectTypeArray with length 2
            Object key Array Object type: kCGPDFObjectTypeName ICCBased
            Object key Array Object type: kCGPDFObjectTypeStream
                Object key Length type: kCGPDFObjectTypeInteger 737
                Object key N type: kCGPDFObjectTypeInteger 3
                Object key Alternate type: kCGPDFObjectTypeName DeviceRGB
                Object key Filter type: kCGPDFObjectTypeName FlateDecode
        Object key SMask type: kCGPDFObjectTypeStream
            Object key Length type: kCGPDFObjectTypeInteger 36
            Object key Type type: kCGPDFObjectTypeName XObject
            Object key Subtype type: kCGPDFObjectTypeName Image
            Object key Width type: kCGPDFObjectTypeInteger 62
            Object key Height type: kCGPDFObjectTypeInteger 49
            Object key ColorSpace type: kCGPDFObjectTypeName DeviceGray
            Object key Interpolate type: kCGPDFObjectTypeBoolean 1
            Object key BitsPerComponent type: kCGPDFObjectTypeInteger 8
            Object key Filter type: kCGPDFObjectTypeName FlateDecode
        Object key BitsPerComponent type: kCGPDFObjectTypeInteger 8
        Object key Filter type: kCGPDFObjectTypeName FlateDecode

显然,有一个尺寸为62x49的图像和一个相同尺寸的蒙版(在该形状周围,PDF是透明的)。该图像绝对是矢量图形,我可以将其缩放到各种尺寸而不会降低质量。那么,裂缝信息在哪里呢?

感谢您提供任何信息!

最好,
本杰明

最佳答案

图像嵌入在PDF文件本身中。没有路径-它不是外部文件。而是在PDF中是一个流对象。您将需要解压缩(“膨胀”)该流对象(根据该XObject的Filter值使用“flate”压缩),然后解析并将其包含的PDF绘图/渲染命令转换为等效的Quartz调用。这样做绝对不是一件容易的事-抱歉。 (我建议您寻找一个可以为您做的图书馆。)

祝好运!

关于ios - iOS从PDF提取矢量图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5870489/

相关文章:

MATLAB:一个高效的函数,可以对 Vector 中的唯一数字进行分组

ios - 访问其他类中的变量

java - 按顺序合并多个 pdf

ios - 在 View 中安装包含更多 stackview 的 stackview

pdf - 如何使用ghostscript将PDF转换为PDF/A或PDF/X?

javascript - 将 HTML 页面从 JavaScript 转换为 PDF

C++ 存储最后 X 个传入项目的最佳数据结构?

C++:为 vector 中的非连续索引赋值?

ios - 滑动表格单元格以在 Swift 中执行操作

iphone - box2d 和 Starling - body 没有正确碰撞