fbpx
< 前に戻る
印刷

Dartを使用してBuildVu Microserviceにアクセスする

はじめに

次のチュートリアルでは、ホストされているBuildVuクラウドAPIを使用してPDFファイルをHTMLまたはSVGに変換する方法を説明します:

This tutorial uses our REST API.

前提条件

作業を開始する前に、Dart SDK の最新バージョンがインストールされていることを確認してください。この点については、Dart のウェブサイトで詳しく説明されています。
また、以下のライブラリもインストールしてください。
http
http_parser
path

コード例

PDFファイルをHTMLまたはSVGに変換するための基本的なコード例を以下に示します。設定オプションおよび高度な機能については、以下をご覧ください:

				
					import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:http_parser/http_parser.dart';
import 'package:path/path.dart';
import 'dart:convert' as convert;

void main() async {
  final apiUrl = 'https://cloud.idrsolutions.com/cloud/buildvu';
  final filePath = 'path/to/exampleFile.pdf';
  final file = File(filePath);

  // Prepare the request headers and form data
  final request = http.MultipartRequest('POST', Uri.parse(apiUrl));
  request.fields['token'] = 'your_token'; //Required only when connecting to the IDRsolutions trial and cloud subscription service
  request.fields['input'] = 'upload';

  // Add the file to the form data
  final fileBytes = await file.readAsBytes();
  final fileStream = http.ByteStream.fromBytes(fileBytes);
  final fileLength = file.lengthSync();
  final fileName = basename(filePath);

  request.files.add(http.MultipartFile(
    'file',
    fileStream,
    fileLength,
    filename: fileName,
    contentType: MediaType('application', 'pdf'),
  ));

  late String uuid;
  // Send the request to upload the file
  try {
    final response = await request.send();

    if (response.statusCode != 200) {
      print('Error uploading file: ${response.statusCode}');
      exit(1);
    }
    
    final responseBody = await response.stream.bytesToString();
    final Map<String, dynamic> responseData = convert.jsonDecode(responseBody);
    uuid = responseData['uuid'];
    print('File uploaded successfully!');
  } catch (e) {
    print('Error uploading file: $e');
    exit(1);
  }

  // Poll until done
  try {
    while (true) {
      final pollResponse = await http.Request('GET', Uri.parse('$apiUrl?uuid=$uuid')).send();
      if (pollResponse.statusCode != 200) {
        print('Error Polling: ${pollResponse.statusCode}');
        exit(1);
      }
      final Map<String, dynamic> pollData = convert.jsonDecode(await pollResponse.stream.bytesToString());
      if (pollData['state'] == "processed") {
        print("Preview URL: ${pollData['previewUrl']}");
        print("Download URL: ${pollData['downloadUrl']}");
        break;
      } else {
        print("Polling: ${pollData['state']}");
      }

      // Wait for next poll
      await Future.delayed(Duration(seconds: 1));
    }
  } catch (e) {
    print('Error polling file: $e');
    exit(1);
  }
}
				
			

コールバック URL に結果を返す

BuildVu マイクロサービスは、変換完了時のステータスを送信するためのコールバック URL を受け入れます。コールバック URL を使用することで、変換が完了したかどうかを判断するためにサービスをポーリングする必要がなくなります。
コールバック URL は、以下のようにパラメータマップに指定することができます:

				
					final request = http.MultipartRequest('POST', Uri.parse(apiUrl));
request.fields['token'] = 'your_token'; //Required only when connecting to the IDRsolutions trial and cloud subscription service
request.fields['input'] = 'upload';
request.fields['callbackUrl'] = 'http://listener.url';
				
			

設定オプション

BuildVu APIは、変換をカスタマイズするためのキーバリューペアの設定オプションを含む文字列化されたJSONオブジェクトを受け入れます。設定はパラメータ配列に追加する必要があります。PDFファイルをHTMLまたはSVGに変換するための設定オプションの完全なリストはこちらでご覧いただけます。

				
					final settings = {
    "key": "value",
    "key": "value",
};
final settingsJson = convert.jsonEncode(settings);
final request = http.MultipartRequest('POST', Uri.parse(apiUrl));
request.fields['settings'] = settingsJson;
				
			

URLを指定してアップロード

ローカルファイルをアップロードするだけでなく、URLを指定してBuildVu Microserviceがダウンロードし、変換を実行することもできます。これを行うには、パラメータ変数内の入力とファイルの値を以下の値に置き換えてください。

				
					import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:http_parser/http_parser.dart';

void main() async {
  final apiUrl = 'https://cloud.idrsolutions.com/cloud/buildvu';
  final fileUrl = 'hosted_file_url';  
  final fileName = 'hosted_file_name';

  try {
    // Get the file from the URL
    final response = await http.get(Uri.parse(fileUrl));

    if (response.statusCode == 200) {
      // Convert the file content to bytes
      final fileBytes = response.bodyBytes;

      // Prepare the request headers and form data
      final request = http.MultipartRequest('POST', Uri.parse(apiUrl));
      request.fields['token'] = 'your_token'; //Required only when connecting to the IDRsolutions trial and cloud subscription service
      request.fields['input'] = 'upload';

      // Add the downloaded file to the form data
      final fileStream = http.ByteStream.fromBytes(fileBytes);
      final fileLength = fileBytes.length;

      request.files.add(http.MultipartFile(
        'file',
        fileStream,
        fileLength,
        filename: fileName,
        contentType: MediaType('application', 'pdf'),
      ));

      // Send the request to upload the file (same as above code example)
      // Poll until done (same as above code example)
    } else {
      print('Error downloading file: ${response.statusCode}');
    }
  } catch (e) {
    print('Error: $e');
  }
}
				
			

認証の採用

BuildVu マイクロサービスが認証を必要とする場合は、ユーザー名とパスワードを入力する必要があります。これらは、下記のように、convert メソッドに username と password という名前の2つの変数を渡すことで提供されます。

				
					String apiUrl = 'https://your-api-url.com/endpoint';
String username = 'your-username';
String password = 'your-password';
String credentials = '$username:$password';
String base64Credentials = base64Encode(utf8.encode(credentials));

Map<String, String> headers = {'Authorization': 'Basic $base64Credentials',};

try {
  final response = await http.get(Uri.parse(apiUrl), headers: headers);
  if (response.statusCode == 200) {
    print('Response body: ${response.body}');
  } else {
    print('Failed to load data. Status code: ${response.statusCode}');
  }
} catch (e) {
  print('Error: $e');
}
				
			

さらに詳しい情報はこちら

BuildVu Microservice API
BuildVu Microservice Use

MENU
PAGE TOP