Импортировать статическую карту Google прямо в fpdf

Я хотел поместить статическую карту Google в pdffile, созданный с использованием расширения fpdf. и использовал код, чтобы сначала создать временный файл. Используя этот код. Однако я сталкиваюсь с ошибкой ("не могу открыть файл изображения").

// define the mapurl 
$fullURL = 'http://maps.googleapis.com/maps/api/staticmap?center=Amsterdam&z=14&size=100x100&sensor=false';
// create a tempfile            
$tempF = tmpfile();
fwrite($tempF, file_get_contents($fullURL));
//Rewind to the start of file
rewind($tempF);
// place the image in the pdf.
if (!empty($tempF)) {
    $this->Image($tempF,$start_x, $this->GetY(),0,100);
}
fclose($tempF);  // remove the tempfile

4 ответа

Примечание: собственный ответ ОП извлечен из вопроса.

Тогда я обнаружил, что это можно сделать намного проще... Мне не нужно использовать временный файл. Если я добавлю URL в переменную изображения и предоставлю формат, то все будет работать в две строки... Я не использую параметры высоты и ширины в fpdf, потому что они растягивают изображение в нечитаемую форму.

 $fullURL = "http://maps.googleapis.com/maps/api/staticmap?center=". \
            $row-Google_coor."&zoom=10&size=2200x200\
            &markers=color:blue%7Clabel:D%7C".$row->Google_coor;
 $this->Image($fullURL,$start_x, $this->GetY(),0,0,"PNG");

К сожалению, при использовании этой функции иногда программа возвращает ошибку. Изображение не может быть найдено. Но когда я помещаю строку URL в браузер, изображение появляется нормально. Надеюсь, это также небольшой запасной вариант. Давайте посмотрим, найду ли я решение на сайте Google Apis https://developers.google.com/maps/documentation/staticmaps/?csw=1

У меня была проблема, похожая на ОП. Я получал сообщение об ошибке при использовании FPDF и попытке получить статическое изображение карты из Карт Google в свой PDF-файл. Я получаю сообщение "Ошибка FPDF: отсутствует или неверный файл изображения". Что я сделал, так это зарегистрировался в консоли разработчика Google и получил ключ API, как они говорят в документации

Надеюсь это поможет.

Вы можете скачать изображение и использовать его с fpdf

$url ="https://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318&markers=color:red%7Clabel:C%7C40.718217,-73.998284&key=".$googleApiKey;
$img = __DIR__.'/img/map.png';
file_put_contents($img, file_get_contents($url));

$pdf->Image($img,null,null,170);

Надеюсь, что это будет полезно

Что касается того, что стоит, у меня была и эта проблема, я обнаружил, что на моем сервере был менеджер исходящих соединений, это автоматически блокировало бы запрос, мне пришлось добавить ip, как только это было сделано, оно работало нормально.

Другие вопросы по тегам