如何将 .pdf 从 post 方法转换为 PHP 中的 .jpg
How to convert .pdf from post method to .jpg in PHP
因此,在开发 Web 应用程序时,我遇到了一个无法找到答案的问题。假设我们有这个 html
<form method="post" enctype="multipart/form-data" action="/upload.php">
<label> Upload .pdf here
<input name="menu" type="file" accept=".pdf">
</label>
<button>Submit</button>
</form>
现在 PHP 来处理它:
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$menu = $_POST['menu'];
//convert whatever type menu is to something readable for Imagick
// create Imagick object
$imagick = new Imagick();
// Reads image from PDF
$imagick->readImage($menu);
// Writes an image or image sequence Example- converted-0.jpg, converted-1.jpg
$imagick->writeImages('menu.jpg', false);
echo $imagick;
我在其他任何地方都找不到任何解决方案,所以我想我会在 Whosebug 上问我的第一个问题。谢谢你帮我!
如果您上传名称为“menu”的文件,实际文件数据包含在 $_FILES['menu'][“tmp_name”] 提交给 php脚本。
因此,请将代码中的 $_POST['menu'] 更改为 $_FILES['menu'][""tmp_name"] 以便进一步处理。
HTML
<form method="post" enctype="multipart/form-data" action="pdfconvert.php">
<label> Upload .pdf here
<input name="menu" type="file">
</label>
<button>Submit</button>
</form>
pdfconvert.php(我修改了代码以便处理 pdf 文件中的多个页面)
<?php
$im = new Imagick($_FILES['menu']["tmp_name"]);
$pages = $im->getNumberImages();
for ($i = 0; $i < $pages; $i++) {
$url = $_FILES['menu']["tmp_name"].'['.$i.']';
$image = new Imagick($url);
$image->setImageFormat("jpg");
$image->writeImage('menu_'. $i. '.jpg');
echo "writing page " . $i. "<br>";
}
?>
最后但同样重要的是:
- 请确保目标文件夹可写(否则系统无法写入jpg文件
- 最好为处理创建一个单独的文件夹(例如./upload/),这样系统就不会将生成的 jpg 文件与您的 php 脚本“混合”
- 最好在生成的文件名中添加一个随机字符串,这样即使您上传两个同名文件,旧文件也不会被覆盖。
因此,在开发 Web 应用程序时,我遇到了一个无法找到答案的问题。假设我们有这个 html
<form method="post" enctype="multipart/form-data" action="/upload.php">
<label> Upload .pdf here
<input name="menu" type="file" accept=".pdf">
</label>
<button>Submit</button>
</form>
现在 PHP 来处理它:
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$menu = $_POST['menu'];
//convert whatever type menu is to something readable for Imagick
// create Imagick object
$imagick = new Imagick();
// Reads image from PDF
$imagick->readImage($menu);
// Writes an image or image sequence Example- converted-0.jpg, converted-1.jpg
$imagick->writeImages('menu.jpg', false);
echo $imagick;
我在其他任何地方都找不到任何解决方案,所以我想我会在 Whosebug 上问我的第一个问题。谢谢你帮我!
如果您上传名称为“menu”的文件,实际文件数据包含在 $_FILES['menu'][“tmp_name”] 提交给 php脚本。
因此,请将代码中的 $_POST['menu'] 更改为 $_FILES['menu'][""tmp_name"] 以便进一步处理。
HTML
<form method="post" enctype="multipart/form-data" action="pdfconvert.php">
<label> Upload .pdf here
<input name="menu" type="file">
</label>
<button>Submit</button>
</form>
pdfconvert.php(我修改了代码以便处理 pdf 文件中的多个页面)
<?php
$im = new Imagick($_FILES['menu']["tmp_name"]);
$pages = $im->getNumberImages();
for ($i = 0; $i < $pages; $i++) {
$url = $_FILES['menu']["tmp_name"].'['.$i.']';
$image = new Imagick($url);
$image->setImageFormat("jpg");
$image->writeImage('menu_'. $i. '.jpg');
echo "writing page " . $i. "<br>";
}
?>
最后但同样重要的是:
- 请确保目标文件夹可写(否则系统无法写入jpg文件
- 最好为处理创建一个单独的文件夹(例如./upload/),这样系统就不会将生成的 jpg 文件与您的 php 脚本“混合”
- 最好在生成的文件名中添加一个随机字符串,这样即使您上传两个同名文件,旧文件也不会被覆盖。