Edited at

DocBaseから記事をAPIで取得してPDFに変換できるライブラリを作ってみた。

More than 1 year has passed since last update.


概要

node-docbase-sdk使って、DocBaseから記事をAPIで取得してPDFに変換できるライブラリdocbase-pdfを作成し、オープンソースとして公開したので記事にしました。

node-docbase-sdkについてはこちらを参照してください。


出力したPDFのサンプル

以下、DocBase記事のMarkdown出力したPDFのサンプルです。


公開したライブラリ(npm)

https://www.npmjs.com/package/docbase-pdf


インストール方法

$ npm install docbase-pdf --save


実装について(TypeScript)


DocBasePdfオブジェクト



  • DocBasePdfオブジェクトを使ってをDocBaseから記事を取得し、PDFを出力します


  • const docBasePdf: DocBasePdf = new DocBasePdf(DOC_BASE_API_TOKEN, TEAM_NAME);DocBasePdfオブジェクトを準備してください。


  • DOC_BASE_API_TOKENには、DocBaseのアクセストークンを設定してください。アクセスートークンの取得方法は、以下、公式マニュアルを参照してください。




  • process.env.DOC_BASE_API_TOKENを取得するには、コマンド実行時に環境変数としてDOC_BASE_API_TOKENを設定してください。


    • コマンド実行例: $ DOC_BASE_API_TOKEN=*** node .




  • TEAM_NAMEは、domainを指定してください


    • 例えば、https://hoge.docbase.ioというURLでDocBaseを利用している場合、const TEAM_NAME='hoge'です。




DocBasePdfオブジェクト

// An access token

const DOC_BASE_API_TOKEN = process.env.DOC_BASE_API_TOKEN;
const TEAM_NAME = 'TEAM_NAME';

const docBasePdf: DocBasePdf = new DocBasePdf(DOC_BASE_API_TOKEN, TEAM_NAME);



サンプルコード(TypeScript)

下記、サンプルコードを実行すると、指定した記事IDのPDF検索キーワードに合致したPDFdocsディレクトリに出力されます。

import { DocBasePdf } from './DocBasePdf';

import { MemoCondition } from 'node-docbase-sdk/lib/conditions/MemoCondition';

// Get DocBaseAPI Token from cli.
// ex.
// $ DOC_BASE_API_TOKEN=<DOC_BASE_API_TOKEN> node .
const DOC_BASE_API_TOKEN = process.env.DOC_BASE_API_TOKEN;
const TEAM_NAME = 'TEAM_NAME';

// クライアント生成
const docBasePdf: DocBasePdf = new DocBasePdf(DOC_BASE_API_TOKEN, TEAM_NAME);

// メモの検索キーワード
const KEYWORD = 'DOCBASE_API_TEST';

// PDF出力先ディレクトリ
const outputPath = 'docs';

// 取得するメモID
// https://${TEAM_NAME}.docbase.io/posts/${memoId}
const memoId = 347796;

async function main() {

// メモIDを指定してPDFを取得します。
await docBasePdf.getByMemoId(memoId, outputPath);

// 検索条件を指定してPDFを取得します。
const condition: MemoCondition = <MemoCondition>{};
condition.q = KEYWORD;
await docBasePdf.getByCondition(condition, outputPath);
}

// == Main ==
main().catch((error) => {
console.log(error);
});


サンプルプロジェクト

GitHubにサンプルプロジェクト作成しておきました。上記コードをすぐに検証できるかと思うので、よければご利用ください。

https://github.com/YukiFujisawa/docbase-pdf-sample


参考記事