node将pdf转成png报错convert -density 150 "${inputFilePath}" -quality 90 "${outputFilePath}"`
时间: 2023-07-21 19:57:38 浏览: 54
这个错误可能是因为您的系统中缺少 ImageMagick 软件或者 ImageMagick 的版本不兼容。请确保您已经安装了 ImageMagick 并且版本正确。如果已经安装了 ImageMagick,那么您可以尝试更新 ImageMagick 的版本,或者尝试修改您的代码来使用其他的 PDF 转 PNG 的工具。
相关问题
请解决implementation 'com.github.AnJoiner:FFmpegCommand:1.2.2-lite' fun getFFmpegCmd(inputFilePath: String, outputFilePath: String, watermarkFilePath: String): Array<String?>{ var height = videoHeight - DisplayHelper.dip2px(this, 50f) var width = videoWidth - DisplayHelper.dip2px(this, 100f) var strCommand = "ffmpeg -y -i ${inputFilePath} -i ${watermarkFilePath} -filter_complex [0:v]scale=iw:ih[outv0];[1:0]scale=0.0:0.0[outv1];[outv0][outv1]overlay=${width}:${height} -preset superfast ${outputFilePath}" val commands: Array<String?> = strCommand.split(" ".toRegex()).toTypedArray() return commands } fun addBitmapToVideo(inputFilePath: String, outputFilePath: String, watermarkFilePath: String) { LogUtil.d("inputFilePath=${inputFilePath},\noutputFilePath=${outputFilePath}") val addWaterMark = getFFmpegCmd(inputFilePath, watermarkFilePath, outputFilePath) try { CoroutineScope(Dispatchers.IO).launch { FFmpegCommand.runCmd(addWaterMark, object : IFFmpegCallBack { override fun onCancel() { } override fun onComplete() { finishVideo(VIDEO_COMPLETE) } override fun onError(errorCode: Int, errorMsg: String?) { LogUtil.w("水印视频错误_onError=${errorCode},${errorMsg}") finishVideo(VIDEO_ERROR) } override fun onProgress(progress: Int, pts: Long) { finishVideo(VIDEO_PROGRESS, progress) } override fun onStart() { } }) } } catch (e: Throwable) { // FFmpeg 不支持当前设备 LogUtil.w("Exception-e=${e.message}") } } backtrace: #00 pc 0x00000000000dba18 /apex/com.android.runtime/lib64/bionic/libc.so (strspn+12) #01 pc 0x0000000000339dec /data/app/~~EKJofAZ4BmKzTXggwqbGhw==/com.zsyj.facefancy-LE00NsHFRSow2FsnifHViQ==/lib/arm64/libffmpeg-org.so (avfilter_graph_parse2+80)
根据您提供的信息,问题似乎与使用的 FFmpeg 版本或库有关。在您的代码中,您使用了名为 "com.github.AnJoiner:FFmpegCommand:1.2.2-lite" 的库。然而,根据您提供的错误信息,在调用 "avfilter_graph_parse2" 函数时发生了问题。
解决这个问题的步骤如下:
1. 确保您使用的 FFmpeg 版本与您的库版本兼容。尝试升级 FFmpeg 版本或检查库的兼容性列表。
2. 确保您正确地配置了 FFmpeg 库和相关依赖项。请按照库的文档或指南进行正确的配置和集成。
3. 如果您的代码在其他设备或环境中正常工作,但在特定设备上出现问题,请确认该设备是否支持所需的 FFmpeg 功能和库。
4. 检查您的代码是否存在其他问题,例如无效的参数传递、资源释放问题或未处理的异常。
如果问题仍然存在,请提供更多详细信息,例如完整的堆栈跟踪和其他相关代码,以便我能够更好地帮助您解决问题。
Sub ExportPDFAsImageAndInsert() Dim InputFilePath As String Dim OutputFolder As String Dim OutputFilePath As String Dim currentDoc As Document Dim vPics As Variant, k As Long ' 声明当前Word文档变量 ' 获取当前活动的Word文档 Set currentDoc = ActiveDocument ' 创建文件对话框对象以选择PDF文件路径 With Application.FileDialog(msoFileDialogFilePicker) .Title = "选择PDF文件" .Filters.Clear .Filters.Add "PDF文件", "*.pdf" If .Show = -1 Then InputFilePath = .SelectedItems(1) Else Exit Sub ' 用户取消选择 End If End With ' 创建文件夹对话框对象以选择图片输出文件夹路径 With Application.FileDialog(msoFileDialogFolderPicker) .Title = "选择图片输出文件夹" If .Show = -1 Then OutputFolder = .SelectedItems(1) Else Exit Sub ' 用户取消选择 End If End With OutputFilePath = SavePDFAs(InputFilePath, OutputFolder, "jpeg") ' 调用 GetFilePathsInFolder 函数并将返回的数组赋值给 vPics 变量 ' 插入图片到当前Word文档中 vPics = GetFilePathsInFolder(OutputFolder) If IsEmpty(vPics) Then MsgBox "空文件夹。" Exit Sub End If For k = UBound(vPics) To LBound(vPics) currentDoc.InlineShapes.AddPicture (vPics(k)) Next End Sub 以上代码中,插入图片的顺序反了,请改成正序
要将图片插入顺序改为正序,你需要将循环的方向从从大到小改为从小到大。以下是修改后的代码示例:
```vb
Sub ExportPDFAsImageAndInsert()
Dim InputFilePath As String
Dim OutputFolder As String
Dim OutputFilePath As String
Dim currentDoc As Document
Dim vPics As Variant, k As Long ' 声明当前Word文档变量
' 获取当前活动的Word文档
Set currentDoc = ActiveDocument
' 创建文件对话框对象以选择PDF文件路径
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "选择PDF文件"
.Filters.Clear
.Filters.Add "PDF文件", "*.pdf"
If .Show = -1 Then
InputFilePath = .SelectedItems(1)
Else
Exit Sub ' 用户取消选择
End If
End With
' 创建文件夹对话框对象以选择图片输出文件夹路径
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "选择图片输出文件夹"
If .Show = -1 Then
OutputFolder = .SelectedItems(1)
Else
Exit Sub ' 用户取消选择
End If
End With
OutputFilePath = SavePDFAs(InputFilePath, OutputFolder, "jpeg")
' 调用 GetFilePathsInFolder 函数并将返回的数组赋值给 vPics 变量
vPics = GetFilePathsInFolder(OutputFolder)
If IsEmpty(vPics) Then
MsgBox "空文件夹。"
Exit Sub
End If
' 插入图片到当前Word文档中
For k = LBound(vPics) To UBound(vPics)
currentDoc.InlineShapes.AddPicture (vPics(k))
Next
End Sub
```
这段代码将图片的插入顺序从大到小改为从小到大,通过将循环的起始索引 `LBound(vPics)` 设置为数组的第一个索引,终止索引 `UBound(vPics)` 设置为数组的最后一个索引,实现了正序插入图片的效果。
希望这个修改能满足你的需求。如果还有其他问题,请随时提问。
阅读全文