yusuketk %!s(int64=5) %!d(string=hai) anos
pai
achega
2965dd2ae5

+ 3 - 14
src/client/js/components/Page/PageShareManagement.jsx

@@ -30,17 +30,11 @@ const PageShareManagement = (props) => {
   async function exportPageHundler(type) {
     const { pageId, revisionId } = pageContainer.state;
     try {
-      // TODO GW-3062 現状では pdf ファイル形式の場合空のデータがダウンロードされるので要修正
-      // const responseType = type === 'pdf' ? 'arraybuffer' : 'json';
       const axios = require('axios').create({
         responseType: 'arraybuffer',
-        headers: {
-          'Content-Type': 'application/pdf',
-        },
       });
 
-      const data = await axios.get('/_api/v3/page/export', {
-      // const data = await appContainer.apiv3Get('/page/export',
+      const { data } = await axios.get('/_api/v3/page/export', {
         params:
           {
             pageId,
@@ -48,15 +42,10 @@ const PageShareManagement = (props) => {
             type,
           },
       });
-      console.log(data.data);
-      const blobType = type === 'pdf' ? 'application/pdf' : 'application/json';
-      const blob = new Blob(
-        [data.data],
-        { type: blobType },
-      );
+      const blob = new Blob([data]);
       const link = document.createElement('a');
       link.href = window.URL.createObjectURL(blob);
-      link.download = `${pageId}.${type}`;
+      link.download = `${revisionId}.${type}`;
       link.click();
       link.remove();
     }

+ 2 - 19
src/server/routes/apiv3/page.js

@@ -227,27 +227,10 @@ module.exports = (crowi) => {
 
       const Revision = crowi.model('Revision');
       const revision = await Revision.findById(revisionIdForFind);
-
       const markdown = revision.body;
-      const buf = await exportService.convertToPdfFromMd(markdown);
-      const ab = new ArrayBuffer(buf.length);
-      const view = new Uint8Array(ab);
-      for (let i = 0; i < buf.length; ++i) {
-        view[i] = buf[i];
-      }
-      // const ab = new Uint8Array(buf).buffer;
+      const data = type === 'pdf' ? await exportService.convertMdToPdf(markdown) : markdown;
 
-      // const { Readable } = require('stream');
-      // const readable = new Readable();
-      // readable._read = () => {};
-      // readable.push(ab);
-      // readable.push(null);
-      // return readable.pipe(res);
-      // res.type('arraybuffer');
-      const fs = require('fs');
-      fs.writeFile('test.pdf', Buffer.from(ab), 'binary', () => {});
-      res.setHeader('Content-Type', 'application/pdf');
-      return res.send(ab);
+      return res.send(data);
     }
     catch (err) {
       logger.error('Failed to get page', err);

+ 2 - 1
src/server/service/export.js

@@ -351,7 +351,8 @@ class ExportService {
     return zipFile;
   }
 
-  async convertToPdfFromMd(md) {
+  // convert md text to pdf as buffer data (promise wrapper)
+  async convertMdToPdf(md) {
     return new Promise((resolve, reject) => {
       markdownpdf()
         .from.string(md)