You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PDFTron转换PDF到PDF/A-3时遇协议不支持NetworkError求助

问题原因与解决方案

原因

PDFNet.PDFACompliance.createFromUrl 方法是为加载网络协议地址(如 http://、https:// 开头的资源)设计的,你传入的 ./utils/test.pdf 是本地相对文件路径,不属于该方法支持的网络协议范畴,因此触发了「不支持的协议」错误。

解决方案

根据运行环境选择对应处理方式:

1. Node.js 环境

改用 createFromFile 方法加载本地文件,修改后的代码如下:

var input_url = './utils/';
var input_filename = 'test.pdf';
var output_filename = 'test_pdfa.pdf';
var convert = true;
var pwd = '';
var exceptions;
var max_ref_objs = 10;
var file_path = input_url + input_filename;

console.log('Converting input document: ' + input_filename);
var pdfa = await PDFNet.PDFACompliance.createFromFile(true, file_path, '', PDFNet.PDFACompliance.Conformance.e_Level2B, exceptions, max_ref_objs);
// 补充保存输出文件的逻辑
pdfa.saveAs(output_filename, false);
pdfa.destroy();

2. 浏览器环境

浏览器无法直接通过相对路径访问本地文件,需通过用户上传获取 File 对象后,转为 ArrayBuffer 再用 createFromBuffer 方法处理:

// 假设通过页面上的文件选择框获取文件
const fileInput = document.getElementById('fileInput');
fileInput.addEventListener('change', async (e) => {
  const file = e.target.files[0];
  const arrayBuffer = await file.arrayBuffer();
  
  var output_filename = 'test_pdfa.pdf';
  var convert = true;
  var pwd = '';
  var exceptions;
  var max_ref_objs = 10;

  console.log('Converting input document: ' + file.name);
  var pdfa = await PDFNet.PDFACompliance.createFromBuffer(true, arrayBuffer, '', PDFNet.PDFACompliance.Conformance.e_Level2B, exceptions, max_ref_objs);
  
  // 生成并下载转换后的文件
  const outputBuffer = await pdfa.saveMemoryBuffer(false);
  const blob = new Blob([outputBuffer], { type: 'application/pdf' });
  const url = URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.href = url;
  a.download = output_filename;
  a.click();
  URL.revokeObjectURL(url);
  
  pdfa.destroy();
});

内容的提问来源于stack exchange,提问作者OrYo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:57:22