使用带有流的 Node Graphic Magick 将 pdf 转换为图像

问题描述

背景:

    const fileName = 'file.pdf'; // located in my local directory
    const readStream = fs.createReadStream(`./${fileName}`); // create read stream of that pdf file


    const MyWriteStream = require('./mywritablestream'); // this is my custom write stream "mywritablestream"
    const ws = new MyWriteStream(); // ws takes the chunks from stdout stream 

    gm(readStream,`${fileName}`)
    .command('convert')
    .out('+adjoin') // break pdf into individual pages
    .stream(function(err,stdout,stderr) {
      stdout.pipe(ws);
    }) 
  • 到目前为止,我的 mywritablestream.js 如下所示。我不知道如何在我的写入流中生成单个 jpg。所以,现在,我只是注销块的内容任何用于从二进制生成 jpg 的指南/提示/参考阅读都将非常有帮助。谢谢。
    let stream = require('stream');
    MyWriteStream.prototype = Object.create(stream.Writable.prototype,{
      constructor: { value: MyWriteStream }
    })

    function MyWriteStream (options) {
      stream.Writable.call(this,options);
    }

    MyWriteStream.prototype._write = function(chunk,encoding,callback) {
      process.stdout.write(chunk); // this is where I log out chunk
      callback();
    }

    module.exports =MyWriteStream
  • 我的终端上的日志是一堆我无法理解的胡言乱语,我无法弄清楚如何分解为页面的单个图像。下面是块终端上的输出部分(参见上面的代码),它太长而无法显示所有这些。日志似乎有重复的模式,这表明它是多个图像的连续流。 现在,有人见过这个吗?我确信这是 jpg 二进制文件,它是多页图像的连续二进制流。这是正确的吗?如果这是真的,我如何操作/破坏/组织这个块流以生成单个 jpg 文件
    endobj
    9 0 obj
    272216
    endobj
    10 0 obj
    [/ICCBased 11 0 R]
    endobj
    11 0 obj
    <<
    /N 3
    /Filter /ASCII85Decode
    /Length 12 0 R
    /Alternate /DeviceRGB
    >>
    stream
    !!!?;z!Y>>3D/OH9;Fa%r=BSfMzzz@:O@t5u:BOzzzzzz!!)`D!!*'"!!(J"zzzzzzzzzzzz
    !!!!+A7]gl!!!#s!!!"H@rQI1!!!%E!!!!IGB@eG!!!%m!!!!5@V]q)!!!&,!!!!5E`cIJ!!!
    &@!!!!5B38;?!!!&T!!!!5@TZc:!!!&h!!!!5E`>q(!!!''!!!95B2hbr!!!''!!!95@T65m!
    !!''!!!95A7]glz!!!!C6#q']An?30;f?8iG@>N'+ELFN66Jie6Qf3GDe<^"AH2]1zz,!g6kB
    kCq$+B*2jFE_/6AKZ%l7m\=i6UMtmEc5Q(Ch3SHzzzzzzzzFCf]=z6Z6phEbT0"F<EkiFD5>u
    GT]q'Aor6*Eb-@K0JP9^=BSfMz!!)Uf!!*'"!!*kZ=BSfMzzzz=BSfMz!!$r3!!#"O!!!+_=B
    SfMz!!$Jr!!'K^!!!ki=BSfMz!!":;!!!O_!!'IR@s)g8z!!!-%!!!!&!"&]:!#,DN!$2+b!%
    7h!!&=O5!':0G!(?l[!)ESo!*K;.!+Q"B!,V^V!-\Ej!.b-)!/gi=!0mPQ!1s7e!3#t$!3uU6
    !5&<J!6,#^!71_r!8@M3!9F4H!:U!^!;cct!=&W7!>>JO!?V=g!@n1+!B:*D!C[#_!E&r$!FP
    q@!H%p\!IOp#!K-uA!La%_!N?+)!P&6I!QbAi!SIM4!U0XU!Vuj"!Xo,E!Z_=h!\XU7!^Ql\!
    `T5,!bVRS!dXp$!fd>L!hoat!k&0H!m:Yq!oO.G!qcWq!t,2H"!Iau"#pBM"&B#&"(hXU"+C?
    0"-s%`"0Ma;"31Mm"5j:J"8N'(";:n\">'a<"@rYq"ChRS"F^K4"I]Il"L\HO"OdM4"RlQn"U
    tVT"Y0a;"\Al""_S!_"bm2H"f;I2"iUYq"m#p]"pP8I"t'U6#"Sr$#&4?h#)ibW#-S6H#13Y8
    #5&3+#8mas#<`;f#@RjZ#DNJO#HS0F#LWk=#P\Q4#Tj=-#Y#)'#]9p"#aPar#egSm#j2Kj#nR
    Ch#s&Ag$"O?f$',Cg$+^Gh$0;Kj$5!Um$9\_q$>Kp!$CD1'$H3A-$M+W5$R,s=$W.:G$\/VP$
    a:#[$fMKh$k`su$ptG.%!;u=%&XNL%+u'\%1Nan%6tA+%<N&>%B0fS%GhQh%MK=)%s7.@%Y"t
    X%^lkq%dji6%j_`P%pfcm&!da4&'kdQ&.&mp&47";&:P1[&@iA(&G6VK&MXkn&T&,=&ZQGb&a
    0i4&ge5[&nDW.&u-)W'&sW-'-e/X'4V].';Q;\'BKo4'IOSd'P\>?'Wi(p'^uhM'f6Y+'mLI_
    'tk@?('>=!(.f9X(696:(=j8t(EF;X(M+D>(TnS&(\\ac(djpl(lB06(tBK")'Bec)/C+P)7L
    L>)?^s.)GqDs)P.kd)XJCW)`o!K)i>T?)ql85*%Dq+*.&[#*6]Dq*?H4k*H3$e*Q&oa*Yoe^*
    bla\*ki][*to_[+))g]+28o_+;H"b+D`0f+N,Dl+WMXr+a"s%+jM8.+t"R7,(_#B,2FIN,<-o
    [,EsFi,Ocs#,Y]P3,c`3E,mbkW-"nTk--%>+-7:-A-ANqW-Klfo-V5\3-`\WM-k.Rh-ugZ0.+
    B[M.6&bl.@hp7.KV(W.VL<$.aKUH.lJnl/"J3</-RRb/8d#5/CuH^/O:t3/ZUJ^/f$'5/qP^b
    0((A<03U#k0?5aF0JtP#0VgDW0bQ350nM-k1%I(L11N)/1=S)h1Ia0M1Uo721b1Co1nHPV2%q
    iA22='+2>oEl2KC^Y2X*.G2deS72qL#'3)DSn364)`3C5`U3P7BJ3]9$@3jLg84"WO04/tC+4
    =<7&4JY+"4X*$t4eY$s4s3$s5+k*t59W7"5GCC%5U/O)5c-g05q,*76**B?681`H6FB/S6TRS
    _6bl(l6q9Y&7*\4679)dF7G^KX7V>2k7dro*7sdbA8-MOW8<HHp8KCB48Z>;N8iK@j9#O@292
    eKP9B&Vp9QEh<9`e$]9p8<,:*iYQ::F"!:J"?G:Yehp:iT=D;$Klo;4CGF;DD's;TD]L;dWJ'
    ;ta0W<0(#5<@Cji<PhcI<a8\)<qfZ`=-?YC=>*d)=Nahc=_V$K=pJ53>,GKr>=Db]>NK*I>_Z
    M7>pip&?--Ck?>Nr]?OpLP?aF,D?rpa9@/OG/@A73'@S(%!@dmkpA!^]kA3a[iAEdYgAWgWfA
    j'ahB'<kjB9QumBKp0rB^BG#Bprc+C.N*3CA2L>CSttJCfbGVD$XudD7ONsDJO..D]WhADp`M
    SE/&>iEB8*)EU\!AEi*mYF'WjsF;/h9FNekUFbOtsG!:)=G5-8^GI)N+G]%cMGq+)rH09KCHD
    PrkHXhE>Hm*lgi,TK>IA))jIU[cCIj9GrJ)u2NJ>e#+JSTh]JhVe>K(O[sK=Z^VKRea9Kh$it
    L(8rYL=_2BLS'A*LhV[jM)1!VM>iBCMTUi2MjB;!N+7ghNA6E[NW5#NNm<\DO.MF;OD^02O["
    u,OqEk'P2ha#PI?\uP_t^tQ!]fuQ8Fo"QO9(%Qf+6)R(/P0R?3j7RV8/?RmNUJS/e&USG/RbS
    ^O)pT!"\+T8T?<TP:(OTgtfbU*cV#UB[K:UZS@QUrT;kV5^=1VMh>MVf&EjW)BS4WAgfUWZ8%
    "Wrf>EX6H]jXO+(;XgkMcY+`$7YD]UbY][28Z!aifZ:hL?ZT,:oZmE)L[1fs*[K3g^[d^b>\)
    =c!\C%iZ\\bp>]!].&];N:b]UQSL]oTl7^4a6#^O!Zf^i7*U_.UUE_I(17_cXh+`)4Iu`Cn1k
    `^[tca$Ib\a?@VWaZ@PSauIPQb;RPPbVdVPbr*bRc8NtVcSs1[coKIad6,gjdQc0rdmV[)e4J
    05eP=ZBelC;Rf3HqcfOWXufkf@3g323IgOS&_gkso!h3Qn;hP/mVhlkrri4\);iQU:[inNL'j
    6PcIjS\+mjpgI=k9&ldkVDA7ksjpal<EQ8lYu1em"Xm>m@<Smm^2FJn'(9'nE'1\nc/0=o,7.
    toJH3Wohb><p20O#pPS_`po+!Jq8`>5qWIa"r!3.er@.]Vr_*7Gs)%f9~>
    endstream
    endobj
    12 0 obj
    3092
    endobj
    13 0 obj
    <<
    /Filter [ /RunLengthDecode ]
    /Width 1
    /Height 1
    /ColorSpace 10 0 R
    /BitsPerComponent 8
    /Length 14 0 R
    >>
    stream
    ☻���
    endstream
    endobj
    14 0 obj
    5
    endobj
    15 0 obj
    <<
    >>
    endobj
    16 0 obj
    5
    endobj
    17 0 obj
    <<
    /Type /XObject
    /Subtype /Image
    /Name /Ma0
    /Filter [ /RunLengthDecode ]
    /Width 595
    /Height 775
    /ColorSpace /DeviceGray
    /BitsPerComponent 8
    /Length 18 0 R
    >>
    stream
    ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
    endstream
    endobj
    18 0 obj
    7263
    endobj
    19 0 obj
    <<
    /Title <006D0061006700690063006B002D0044004D0046003400660044006C0047007800590051004C007100700033004200700071006D006F0056005A00780076004800460043005F00450055007800540000>
    /CreationDate (D:20210308071858)
    /ModDate (D:20210308071858)
    /Producer (https://imagemagick.org)
    >>
    endobj
    xref
    0 20
    0000000000 65535 f
    0000000010 00000 n
    0000000059 00000 n
    0000000118 00000 n
    0000000300 00000 n
    0000000384 00000 n
    0000000402 00000 n
    0000000440 00000 n
    0000000461 00000 n
    0000272877 00000 n
    0000272899 00000 n
    0000272934 00000 n
    0000276130 00000 n
    0000276151 00000 n
    0000276298 00000 n
    0000276316 00000 n
    0000276338 00000 n
    0000276356 00000 n
    0000283812 00000 n
    0000283833 00000 n
    trailer
    <<
    /Size 20
    /Info 19 0 R
    /Root 1 0 R
    /ID [<6e15ce8c3f67beed160a0b044afd7b81320bf3f81a210c09190aae41a36373f8> <6e15ce8c3f67beed160a0b044afd7b81320bf3f81a210c09190aae41a36373f8>]
    >>
    startxref
    284122
    %%EOF
  • 我对 Node.js 中的流仍然不熟悉。我迷路了。在这里,据我观察,stdout 回调中的流 gm.stream() 是 PDF 中每个页面图像的连续二进制。因此,从 stdout (stdout.pipe(mywritestream)) 管道传输的我的 writestream 似乎必须将二进制文件分解为单个页面的图像。 我在正确的轨道上吗?如果没有,还有什么其他方法可以在 pdf 中生成每个页面的图像

我会重视任何输入、指导或参考。提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...