PHP-获取PDF标准、isoname、cmyk元数据

PHP-获取PDF标准、isoname、cmyk元数据,php,pdf,metadata,tcpdf,imagick,Php,Pdf,Metadata,Tcpdf,Imagick,我的目标是获得额外的pdf元数据,如标准、isoname、cmyk 我已经尝试过TCPDF、Imagick、GD和其他LIB,但没有成功。 Imagick有“getColorspace”方法,但不幸的是,它不能与PDF一起正常工作,因为在PDF中,我们必须查看每一层 function check_image_is_cmyk($image_file_path) { $imagick_file_contents = file_get_contents($image_file_path);

我的目标是获得额外的pdf元数据,如标准、isoname、cmyk

我已经尝试过TCPDF、Imagick、GD和其他LIB,但没有成功。 Imagick有“getColorspace”方法,但不幸的是,它不能与PDF一起正常工作,因为在PDF中,我们必须查看每一层

function check_image_is_cmyk($image_file_path) {
    $imagick_file_contents = file_get_contents($image_file_path);
    $imagick_file = new Imagick();
    $imagick_file->readImageBlob($imagick_file_contents);
    $image_color_space = $imagick_file->getimagecolorspace();

    /* BEGIN - ALL AVAILABLE COLORSPACE CONSTANTS
      Imagick::COLORSPACE_UNDEFINED; //0
      Imagick::COLORSPACE_RGB; //1
      Imagick::COLORSPACE_GRAY; //2
      Imagick::COLORSPACE_TRANSPARENT; //3
      Imagick::COLORSPACE_OHTA; //4
      Imagick::COLORSPACE_LAB; //5
      Imagick::COLORSPACE_XYZ; //6
      Imagick::COLORSPACE_YCBCR; //7
      Imagick::COLORSPACE_YCC; //8
      Imagick::COLORSPACE_YIQ; //9
      Imagick::COLORSPACE_YPBPR; //10
      Imagick::COLORSPACE_YUV; //11
      Imagick::COLORSPACE_CMYK; //12
      Imagick::COLORSPACE_SRGB; //13
      Imagick::COLORSPACE_HSB; //14
      Imagick::COLORSPACE_HSL; //15
      Imagick::COLORSPACE_HWB; //16
      Imagick::COLORSPACE_REC601LUMA; //17
      Imagick::COLORSPACE_REC601YCBCR; //18
      Imagick::COLORSPACE_REC709LUMA; //19
      Imagick::COLORSPACE_REC709YCBCR; //20
      Imagick::COLORSPACE_LOG; //21
      Imagick::COLORSPACE_CMY; //22
      Imagick::COLORSPACE_LUV; //23
      Imagick::COLORSPACE_HCL; //24
      Imagick::COLORSPACE_LCH; //25
      Imagick::COLORSPACE_LMS; //26
      Imagick::COLORSPACE_LCHAB; //27
      Imagick::COLORSPACE_LCHUV; //28
      Imagick::COLORSPACE_SCRGB; //29
      Imagick::COLORSPACE_HSI; //30
      Imagick::COLORSPACE_HSV; //31
      Imagick::COLORSPACE_HCLP; //32
      Imagick::COLORSPACE_YDBDR; //33
      END - ALL AVAILABLE COLORSPACE CONSTANTS */

    if ($image_color_space === Imagick::COLORSPACE_CMYK) {
        return true;
    }

    return false;
}
这就是我如何获得PDF版本,但不幸的是不是标准(例如PDF/X-3)

例如: 如果我打开一个pdf文件,我可以得到以下信息:


任何人都知道我如何提取这些附加数据。

您需要知道的一切都在这里:例如,“标准”和“ISO”信息都在XMP元数据中。“Quark Generic”可能在信息字典中,也可能在XMP中,不确定该应用程序正在检查/显示什么。您的问题的一个大问题是,单个PDF页面可以包含许多颜色空间。没有单一的颜色空间。如果您不是在寻找一个通用的解决方案,而只是对分析一组特定的PDF文件感兴趣然后在这里发布示例。您的问题的一个大问题是,一个PDF页面可以包含许多颜色空间-这正是问题所在,我想检查每个可用的颜色空间是否为cmyk-还有信息字典或XMP->是否可以使用PHP获取这些值?感谢“这正是问题所在,我想检查每个可用的颜色空间是否为cmyk”-然后您需要解析页面内容流,并检查任何图像资源。“还有信息字典或XMP->甚至可以用PHP获取这些值吗?”-当然,这绝对是你问题中最简单的部分。我认为您需要首先选择一个PHP PDF库,然后用您尝试过的内容更新您的问题。现在你的问题似乎是一个软件推荐问题,这是不被允许的。
function check_pdf_version($image_file_path) {
    $imagick_file_contents = file_get_contents($image_file_path);
    $imagick_file = new Imagick();
    $imagick_file->readImageBlob($imagick_file_contents);

    $exif_array = $imagick_file->getImageProperties();

    $pdf_version = "";

    if (!empty($exif_array['pdf:Version'])) {
        $pdf_version = str_replace('PDF-', "", $exif_array['pdf:Version']);
    }

    if (!empty($exif_array['pdf:Version']) && floatval($pdf_version) > 1.2) {
        return true;
    }

    return false;
}