【エンジニア向け】DocSendの代替!オープンソースPDF分析ツール「Papermark」徹底解説


【エンジニア向け】DocSendの代替!オープンソースPDF分析ツール「Papermark」徹底解説

mfts/papermark

2025-08-27

諸君、ごきげんよう!我々はPDFを扱うエンジニアの味方、ペーパーマークだ! 君たちの中に、PDFドキュメントを共有する時、こんなことで悩んでるやつはいないか?

「この企画書、送ったはいいけど、本当に読まれてるのかな…?」 「みんなどのページでつまずいてるんだ…?」 「URLを自社ドメインにしたいけど、どうすれば…?」

心配ご無用!そんな君たちの悩みを解決するため、我々ペーパーマーク戦隊が参上したぞ!

我々ペーパーマークは、いわばPDFを送信する際に使うDocSendのオープンソース版だ!DocSendのようにPDFをアップロードして、専用のリンクを作成できるのはもちろん、それに加えて誰がいつ、どのページを、どれくらいの時間読んだかといった、強力な分析機能を備えているんだ。

この分析機能を使えば、送ったPDFが読まれているか、どの部分が特に注目されているかなどを把握できる!これで企画書もプレゼン資料も、より効果的なものに改善できるってわけだ!

さらに、カスタムドメインにも対応しているから、会社のドメインを使ってPDFを共有することも可能だ!セキュリティ面でも安心だぞ。

よし、諸君!我々ペーパーマークを君たちのプロジェクトに迎える方法を教えよう!

ペーパーマークはDockerを使って簡単にデプロイできる。戦隊メンバーは次の3人だ。

フロントエンド(React/Next.js)
ユーザーが操作するUI部分。

バックエンド(Node.js/Express)
PDFの処理や分析データの管理。

データベース(PostgreSQL)
データの保存役。

まずは、以下のコマンドを実行して、コンテナを起動する準備をしよう!

# GitHubからソースコードを取得!
git clone https://github.com/mfts/papermark.git

# ディレクトリに移動だ!
cd papermark

# Docker Composeを使って、一気に起動!
docker-compose up -d

このコマンドを実行すれば、君のローカル環境にペーパーマークが起動する!すごいだろ?

ペーパーマークはAPIも提供しているから、君たちのアプリケーションと連携して、さらに強力な力を発揮できるぞ!

ここでは、Node.jsを使って、PDFをアップロードする例を紹介しよう。

import axios from 'axios';
import fs from 'fs';

// APIエンドポイントと認証キーは君たちの環境に合わせて設定してくれ!
const API_URL = 'http://localhost:3000/api/v1'; // 例
const API_KEY = 'your_api_key_here'; // 管理画面で取得!

// 企画書のPDFを読み込むぜ!
const pdfPath = './project_proposal.pdf';
const formData = new FormData();
formData.append('file', fs.createReadStream(pdfPath));

const uploadPdf = async () => {
  try {
    // PDFをアップロードするぞ!
    const response = await axios.post(`${API_URL}/files`, formData, {
      headers: {
        'Content-Type': 'multipart/form-data',
        'Authorization': `Bearer ${API_KEY}`,
      },
    });

    console.log('PDFアップロード完了!');
    console.log('共有リンク:', response.data.url);
    console.log('トラッキングID:', response.data.trackingId);

    // 後で分析データを見るために、トラッキングIDを保存しておこう!
    // ここで何か処理を追加するのもいいな!
    return response.data;

  } catch (error) {
    console.error('アップロード失敗!', error.response ? error.response.data : error.message);
  }
};

uploadPdf();

どうだい?これで君も立派なペーパーマーク戦隊の一員だ!

この力を使えば、君のプロジェクトも、チームも、そしてクライアントとの関係も、もっともっとパワフルになるに違いない!


mfts/papermark




面倒なSNS投稿はコードで解決。Postizを使って開発に集中できる環境を手に入れよう

今日は「SNSの投稿管理が面倒で、開発に集中できない」…そんなお悩みにぴったりの「Postiz」という一杯(ツール)をご用意しました。これ、ただの予約投稿ツールじゃないんです。中身は TypeScript と Redis で構成された、フルスタックなオープンソース界の期待の新星ですよ。


恐怖のミステリーホラー?…からの爆笑変換劇!C4illin/ConvertX徹底解説!

今回は「C4illin/ConvertX」について、俺様が恐怖のミステリーホラーコント風に、でもめちゃくちゃ分かりやすく解説してやるぜ!ある夜更けのことだった…。俺は真っ暗な部屋でPCの前に座っていた。締め切り間近のドキュメント、プレゼン資料、古い企画書…。ファイル形式がバラバラで、開けない、共有できない、もうどうしようもない!「うわぁぁぁ!このデータ、なんでこんな形式なんだよぉぉぉ!」俺は絶叫した。


ラーメン屋の親父が語る!Pythonだけで作るWebアプリ「Reflex」

なんだか、小難しい顔してパソコンいじってるな。WebアプリをPythonだけで作ろうとしてるのかい? え? 難しくてなかなか前に進めない、だと?ったく、最近の若いもんは、すぐ諦めるからいけねぇ。だが安心しな。俺がとっておきの秘策を教えてやる。


ソフトウェアエンジニア必見!「automatisch/automatisch」で業務自動化どすえ

どーもどーも!お兄さんもしかして、毎日同じような作業を繰り返して、「あー、またこれ手動でやるんか…」てため息ついてはらへん? そんなあなたに朗報どすえ! 今日は、ソフトウェアエンジニアのあんさんにぴったりの、夢のようなツール「automatisch/automatisch」をご紹介しまひょ。


Rust製オープンソース決済スイッチ juspay/hyperswitchで効率的な決済処理を実現!

ワシは織田信長……いや、俺はソフトウェアエンジニアの「俺」だ! 今日はな、お主らにとって、まさに「天下布武」ならぬ「決済布武」を成し遂げるかもしれない秘宝、「juspay/hyperswitch」について語ろうではないか!(ガラガラと襖が開き、厳かな音楽が流れる…)


Postgres, TypeScript, Remixで構築する:AI向け超高速メモリエンジンの全貌

大山 新田、お前、最近顔色が悪いぞ。夜なべしてまた新しい技術ばっかり追いかけてるんじゃないだろうな?新田 大山さん!ちょうど良かったです。今、GitHubでsupermemoryai/supermemoryってヤツを見てたんです。これが、AI時代の「記憶」を扱うのに、すっごく重要になりそうだと思って!


PDFの壁を打ち破る:数式・表・多段組対応のデータ抽出ツール MinerUの威力

ホテルのコンシェルジュのように、このツールをどのように活用できるか、導入方法、そしてサンプルコードまで、分かりやすく丁寧にご案内しますね。MinerUは、一言でいうと「複雑なPDFなどの非構造化データを、大規模言語モデル(LLM)がすぐに使える、構造化されたデータ(MarkdownやJSON)に魔法のように変換してくれる」Pythonライブラリです。


たった一行のコードで世界が変わる!GitHubで話題沸騰中の公開APIカタログを徹底解説

ご紹介するのは、GitHubで絶大な支持を集める珠玉のリスト、「marcelscruz/public-apis」です!「public-apis」とは、世界中のエンジニアが協力して作り上げた、「今すぐ使える公開API」の超巨大カタログなんです!


コンテキストスイッチをゼロへ。Open-source AI Coworker「Rowboat」導入ガイド

「投資詐欺に注意」という標語のように、IT業界も「 AI ツールなら何でも魔法のように解決してくれる」という甘い言葉には注意が必要ですが、この Rowboat は、エンジニアにとってかなり「堅実で実利のある」ツールになり得るポテンシャルを秘めています。