LMLPHP后院

代码分享之使用ImageMagick将PDF转图片技术

maybe yes 发表于 2016-10-25 23:08

使用 PHP 扩展 Imagick 将 PDF 转成图片,实际上 Imagick 完全是一个客户端,调用的还是 ImageMagick 提供的功能。关于 Imagick 扩展,官方文档的示例很少,文档的描述也非常少,导致一般人看文档后仍然不知道怎么写代码。而官网的评论特别混乱,需要不断试错才知道正确的写法。

将 PDF 转换为图片代码分享

下面分享使用 PHP 扩展 Imagick 将 PDF 转为图片的代码示例,仅供参考:

function ConvertPdfToJpg($pdf){
    $im = new Imagick($pdf);
    $im->setResolution(100, 100);
    $count = $im->getNumberImages();

    $result = array();
    for ($i=0; $i<$count; $i++) {
        $im2 = new Imagick();
        $im2->setResolution(100, 100);
        $im2->readimage($pdf . '[' . $i . ']');
        $im2->setImageFormat('jpeg');

        $dir_name = 'businessplan/thumb/' . date('Ymd/H') . '/';
        $dir_path = UPLOAD_PATH . $dir_name;
        if (!is_dir($dir_path)) {
            mkdir($dir_path, 0755, true);
        }

        $filename = uniqid() . '.jpg';
        $im2->writeImage($dir_path . $filename);
        $im2->clear();
        $im2->destroy();
        $result[] = $dir_name . $filename;
    }
    $im->clear();
    $im->destroy();
    return $result;
}

使用php函数simplexml_load_string解析xml注意事项技术

maybe yes 发表于 2016-10-24 23:17

PHP 解析 xml 的方法有很多种,比如 DOMDocument 的 xpath,XMLReader,SimpleXML,XML Expat Parser 等。一般情况下,解析一段格式比较规则的 xml,程序员对字符的处理能力比较强的话,自己写一个解析器也未尝不可。大多数情况下,使用面向对象的库来解析 xml 是不太方便的,不如函数来的爽快。

使用函数 simplexml_load_string 的坑

文本讲述 PHP 函数 simplexml_load_string 解析 xml 的注意事项。对于提交比较小的 xml,使用此函数解析是再适合不过啦。关于此函数的坑,请看如下代码:

<?php

$xml_str = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><MasMessage xmlns="http://www.99bill.com/mas_cnp_merchant_interface"><PciQueryContent><merchantId>812310060110237</merchantId><customerId>181</customerId><storablePan></storablePan><cardType>0002</cardType><pciInfos><pciInfo><bankId>CMB</bankId><storablePan>6214830385</storablePan><shortPhoneNo>1564872</shortPhoneNo><phoneNO>15601664872</phoneNO></pciInfo></pciInfos><responseCode>00</responseCode></PciQueryContent></MasMessage>';
$s = simplexml_load_string($xml_str);
var_dump($s);

echo "---------\n";

$xml_str = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><MasMessage xmlns="http://www.99bill.com/mas_cnp_merchant_interface"><PciQueryContent><merchantId>812310060110237</merchantId><customerId>181</customerId><storablePan></storablePan><cardType>0002</cardType><pciInfos><pciInfo><bankId>CMB</bankId><storablePan>6214830385</storablePan><shortPhoneNo>1564872</shortPhoneNo><phoneNO>15601664872</phoneNO></pciInfo><pciInfo><bankId>CMB</bankId><storablePan>6214830385</storablePan><shortPhoneNo>1564872</shortPhoneNo><phoneNO>15601664872</phoneNO></pciInfo></pciInfos><responseCode>00</responseCode></PciQueryContent></MasMessage>';
$s = simplexml_load_string($xml_str);
var_dump($s);


/**
object(SimpleXMLElement)#5 (1) {
  ["PciQueryContent"]=>
  object(SimpleXMLElement)#7 (6) {
    ["merchantId"]=>
    string(15) "812310060110237"
    ["customerId"]=>
    string(3) "181"
    ["storablePan"]=>
    object(SimpleXMLElement)#8 (0) {
    }
    ["cardType"]=>
    string(4) "0002"
    ["pciInfos"]=>
    object(SimpleXMLElement)#9 (1) {
      ["pciInfo"]=>
      object(SimpleXMLElement)#10 (4) {
        ["bankId"]=>
        string(3) "CMB"
        ["storablePan"]=>
        string(10) "6214830385"
        ["shortPhoneNo"]=>
        string(7) "1564872"
        ["phoneNO"]=>
        string(11) "15601664872"
      }
    }
    ["responseCode"]=>
    string(2) "00"
  }
}
---------
object(SimpleXMLElement)#7 (1) {
  ["PciQueryContent"]=>
  object(SimpleXMLElement)#5 (6) {
    ["merchantId"]=>
    string(15) "812310060110237"
    ["customerId"]=>
    string(3) "181"
    ["storablePan"]=>
    object(SimpleXMLElement)#9 (0) {
    }
    ["cardType"]=>
    string(4) "0002"
    ["pciInfos"]=>
    object(SimpleXMLElement)#8 (1) {
      ["pciInfo"]=>
      array(2) {
        [0]=>
        object(SimpleXMLElement)#10 (4) {
          ["bankId"]=>
          string(3) "CMB"
          ["storablePan"]=>
          string(10) "6214830385"
          ["shortPhoneNo"]=>
          string(7) "1564872"
          ["phoneNO"]=>
          string(11) "15601664872"
        }
        [1]=>
        object(SimpleXMLElement)#11 (4) {
          ["bankId"]=>
          string(3) "CMB"
          ["storablePan"]=>
          string(10) "6214830385"
          ["shortPhoneNo"]=>
          string(7) "1564872"
          ["phoneNO"]=>
          string(11) "15601664872"
        }
      }
    }
    ["responseCode"]=>
    string(2) "00"
  }
}
*/

代码分享之PHP实现DES和3DES加密解密技术

maybe yes 发表于 2016-10-22 21:53

使用 PHP 实现 DES 加密解密和 3DES(triple des) 加密解密。虽然 DES 已经过时,但是特定的时候还是需要这种算法的。DES 加密解密写法,PHP 比 Java 实现起来应该更简单一些,在官方的文档中表明,PHP 在内部其实已经根据算法的向量的长度自动的将内容进行了补全操作,DES 算法的向量长度就是 8,所以在 Java 的代码实现中,很多人的写法会根据数据长度的取模来补上相应的空字符,达到 8 的倍数。

加密解密算法,不论是 PHP,Java 还是其他语言,算法都是已经实现好了的。PHP 使用内置的扩展 mcrypt,Java 导入相应的 jar 包,只是在写法上稍有差异。而 PHP 这方面的资料官方也不太详细,因为 mcrypt 好像也过时了。

使用 openssl 将 pfx 证书转换为 pem技术

maybe yes 发表于 2016-10-22 17:48

前一阵子,在 curl 中使用 https 请求外部接口,在使用测试证书联调的时候请求第三方接口没有任何问题。正式联调后,使用第三方给的证书却请求不成功,而我们使用的垃圾代码架构也不报错。于是一急之下,使用 LMLPHP 写了个小栗子(例子)测试了下。结果 curl 报错如下:

Error 58: could not load PEM client certificate, OpenSSL error error:0906D06C:PEM routines:PEM_read_bio:no start line, (no key found, wrong pass phrase, or wrong file format?)

Linux下使用tar和zip进行压缩解压缩教程技术

maybe yes 发表于 2016-10-16 11:38

计算机技术是实践性非常强的一门学科。就像你看到别人会骑独轮车一样,虽然看懂了其中的奥妙和步骤但是没有练习,一样是不会的。这个社会上懂技术的人非常多,很多 IT 大佬并不是技术出身,但是下属经常汇报工作,耳濡目染,他懂的技术肯定比一般做了十多年技术的程序员还多得多,在这些懂技术的人里面找到真正能干事的人是不多的。

下面开始在 Linux 下进行压缩和解压缩教程。本文主要讲解 tar,zip,gzip,gunzip 的使用。

Linux 下的的压缩操作是不同于 Windows 下的。在 Windows 下很多软件压缩和打包是混在一起进行的,一般打包了也就压缩了。而在 Linux 下这两个操作一般都是分开的,打包就是打包,压缩就是压缩,当然也是可以一起进行的。

2024-05-19 06:01:38 1716069698 0.015419