npm pdfjs 创建损坏的 PDF 文件
npm pdfjs creates corrupted PDF files
我正在尝试使用 npm 库 pdfjs https://www.npmjs.com/package/pdfjs 创建 PDF 文件。一旦文件的所有元素(段落)都附加到我创建文件的文档,但打开它时我收到一条消息,它说已损坏。
当我用doc.end()
完成文件时,说没有功能。所以我使用了一个承诺,并尝试稍后使用这些信息。但是即使我得到一个包含所有数据的对象,我也无法使 .pdf 文件不被损坏。
这是我正在使用的代码:
const pdf = require('pdfjs')
const fs = require('fs')
function createPDF(data, options){
return new Promise((resolve, reject) => {
var doc = new pdf.Document({ font: require('pdfjs/font/Helvetica') });
var header = doc.header().table({ widths: [null, null], paddingBottom: 1*pdf.cm }).row()
header.cell().image('/images/logo.png', { height: 2*pdf.cm })
header.cell().text({ textAlign: 'right' })
.add('Example.')
.add('https://www.example.com', {
link: 'https://www.example.com',
underline: true,
color: 0x569cd6
})
doc.footer()
.pageNumber(async function(curr, total) { return curr + ' / ' + total }, { textAlign: 'center' });
resolve(doc)
});
}
var doc = createPDF();
doc.then(async (data) => {
data.pipe(fs.createWriteStream('output.pdf'))
console.log(data);
await data.end();
})
日志数据:
Document {
_readableState:
ReadableState {
objectMode: false,
highWaterMark: 16384,
buffer: BufferList { head: null, tail: null, length: 0 },
length: 0,
pipes:
WriteStream {
_writableState: [Object],
writable: true,
domain: null,
_events: [Object],
_eventsCount: 5,
_maxListeners: undefined,
path: 'output.pdf',
fd: null,
flags: 'w',
mode: 438,
start: undefined,
autoClose: true,
pos: undefined,
bytesWritten: 0 },
pipesCount: 1,
flowing: true,
ended: false,
endEmitted: false,
reading: false,
sync: true,
needReadable: false,
emittedReadable: false,
readableListening: false,
resumeScheduled: true,
paused: false,
emitClose: true,
destroyed: false,
defaultEncoding: 'utf8',
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null },
readable: true,
domain: null,
_events:
{ read: { [Function: bound onceWrapper] listener: [Function] },
end: { [Function: bound onceWrapper] listener: [Function: onend] },
data: [Function: ondata] },
_eventsCount: 3,
_maxListeners: undefined,
version: '1.6',
info: { id: '34d7f55c-5961-4caf-9814-1902b98bee3c' },
width: 595.296,
height: 841.896,
_nextObjectId: 4,
_xref: PDFXref { objects: [], trailer: null },
_reading: false,
_length: 0,
_pending:
[ [Function],
[ [Function], [Array], [Array], [Function] ],
[Function],
[Function],
[Function],
[Function],
current: Promise { <pending> } ],
defaultFont:
AFMFont {
_data:
{ fontName: 'Helvetica',
fullName: 'Helvetica',
familyName: 'Helvetica',
italicAngle: 0,
characterSet: 'ExtendedRoman',
fontBBox: [Array],
underlinePosition: -100,
underlineThickness: 50,
capHeight: 718,
xHeight: 523,
ascender: 718,
descender: -207,
kerning: [Object],
widths: [Array] },
lineGap: 231,
parent: [Circular] },
defaultFontSize: 11,
defaultColor: [ 0, 0, 0 ],
defaultLineHeight: 1.15,
_fonts: { '/F1': { f: [Object], o: [Object] } },
_xobjects: {},
_pageFonts: {},
_annotations: [],
_aliases: AliasGenerator { nextId: { F: 2 }, blocked: Set {} },
_mapping: WeakMap {},
_currentContent: null,
_contents: [],
_contentObjCreator: null,
_finalize: [],
_template: null,
_footer: null,
_header: null,
paddingTop: 20,
paddingBottom: 20,
paddingLeft: 20,
paddingRight: 20,
_cursor:
Cursor {
width: 555.296,
height: 801.896,
x: 20,
startX: 20,
y: 821.896,
startY: 821.896,
_bottom: 20,
bottomOffset: 0 },
_pages: [ toString: [Function] ],
_pagesObj:
PDFObject {
id: 2,
rev: 0,
properties: PDFDictionary { dictionary: [Object] },
reference: PDFReference { object: [Getter] },
content: 'stream\n!!!Djz!WW3#D/OH9;Fa%r=BSfM#MB(Z!#knQ!$hOd@:O@tzzzz!!!!"zz!!)`D!!*\'"!!(J"z\'&psr`WC#h?J?20S8TbAzzzzzzz!!!!1A7]gl!!!
$f!!!"E@TZc:!!!&8!!!!5@T65m!!!&L!!!95B2hbr!!!&L!!!95E`>q(!!!&L!!!95A8Pjf!!!>`!!!"TB38;?!!!@>!!!!5CisT/!!!@R!!!!5D.R-s!!!@f!!!!E@V]q)!!!A5!
!!!5E`cIJ!!!AI!!!!5FCerq!!!A]!!!!-G\'.A,!!!Ai!!!"SGB@eG!!!CG!!!!5@rQI1!!!C[!!!!X@q]:]!!!D>!!!!MA7]glz!!!!@F&GLp+A#!h2DI3M2D$[90d\'qA@:O\'q
F(8WpARkc@zzzzzzzzzzzzzzzzzzzz=BSfMz!!":;!!!O_!!\'IR@s)g8z!!!-%!!!!&!"&]:!#,DN!+b!%7h!!&=O5!\':0G!(?l[!)ESo!*K;.!+Q"B!,V^V!-\Ej!.b-)!/g
i=!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$!FPq@!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"UtVT"Y0a;"\Al""_S!_"bm2H"f;I2"iUYq"m#p]"pP8I"t\'U6#"Sr$#&4?h#)ibW#-S6H#13Y8#5&3+#8mas#<`;f#@R
jZ#DNJO#HS0F#LWk=#P\Q4#Tj=-#Y#)\'#]9p"#aPar#egSm#j2Kj#nRCh#s&Ag$"O?f$\',Cg$+^Gh[=11=];Kj!Um\_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"tX%^lkq%dji6%j_`P%pfcm&!da4&\'kdQ&.&mp&47";&:P1[&@iA(&G6VK&MXkn&T&,=
&ZQGb&a0i4&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)7LL>)?^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^b0((A<03U#k0?5aF0JtP#0VgDW0bQ350nM-k1%I(L11N)/1=S)h1Ia0M1Uo721b1Co1nHPV2%qiA22=\'+2>oE
l2KC^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_6
bl(l6q9Y&7*\4679)dF7G^KX7V>2k7dro*7sdbA8-MOW8<HHp8KCB48Z>;N8iK@j9#O@292eKP9B&Vp9QEh<9`e$]9p8<,:*iYQ::F"!:J"?G:Yehp:iT=D;$Klo;4CGF;DD\'s;T
D]L;dWJ\';ta0W<0(#5<@Cji<PhcI<a8\)<qfZ`=-?YC=>*d)=Nahc=_V$K=pJ53>,GKr>=Db]>NK*I>_ZM7>pip&?--Ck?>Nr]?OpLP?aF,D?rpa9@/OG/@A73\'@S(%!@dmkpA!
^]kA3a[iAEdYgAWgWfAj\'ahB\'<kjB9QumBKp0rB^BG#Bprc+C.N*3CA2L>CSttJCfbGVD$XudD7ONsDJO..D]WhADp`MSE/&>iEB8*)EU\!AEi*mYF\'WjsF;/h9FNekUFbOtsG
!:)=G5-8^GI)N+G]%cMGq+)rH09KCHDPrkHXhE>Hm*lgI,TK>IA))jIU[cCIj9GrJ)u2NJ>e#+JSTh]JhVe>K(O[sK=Z^VKRea9Kh$itL(8rYL=_2BLS\'A*LhV[jM)1!VM>iBCMTU
i2MjB;!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:(OTg
tfbU*cV#UB[K:UZS@QUrT;kV5^=1VMh>MVf&EjW)BS4WAgfUWZ8%"Wrf>EX6H]jXO+(;XgkMcY+`YD]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\'j6PcIjS\+mjpgI=k9&ldkVDA7ksjpal<EQ8lYu1em"Xm>m@<Smm^2FJn\'(9\'n
E\'1\nc/0=o,7.toJH3Wohb><p20O#pPS_`po+!Jq8`>5qWIa"r!3.er@.]Vr_*7Gs)%f9A7]glz!!!!O8OYuh2DI3M2D$[90d&kqAmoguF<FIO66JX6Ci=H:+B*5f@q?c7+ELFN6
3$uczzzzzzzzzzzzzzzzzzz=BSfMz!!$Jr!!\'K^!!!ki=BSfMzz!)NXqzD.R-sz!!!!"zzzzz!!!!#=BSfMz!!!"j!!!"p!!!"S=BSfMz!!$r3!!#"O!!!+_F(o80z6W-l+A7]glz
!!!!N;IsHOEb0,uAKY#fATqj+B-9Q[DIdI\'Bl@l3Bl5%b77/1U0f_-M/M\n4zzzzzzzzzzzzzzzzzzzz=BSfMz!!)`D!!*\'"!!(J"FCf]=z6Z6phEbT0"F<F.mFCfK1@<?4%DII
?(6Z6dZEZd_fDKB`:FD5l7/0H]%0KB+5F(R3`z!!*Kr!!!2[s8V[;!!!7g!!)tYs8Vtis8W%l!!!,U!!\'fW~>\nendstream\n' },
_currentColorSpace: '/CS1',
_doc: [Circular],
_parent: [Circular],
_ended: false,
_current:
Footer {
_doc: [Circular],
_parent: [Circular],
_cursor:
ClonedCursor {
width: 555.296,
height: 801.896,
bottomOffset: 0,
startX: 20,
startY: 821.896,
_root: [Object] },
_ended: false,
_current: null,
_pending:
[ [Function],
[Array],
[Function],
[Function],
[Function],
[Function],
current: [Object] ],
_objects: [],
_pageNumbers: [] } }
看起来内容在那里,但无法获取。当 await data.end();
为 运行 时,它显示下一个错误日志显示:
TypeError: Invalid value used as weak map key TypeError: Invalid value used as weak map key
at WeakMap.set (native)
at Document._useXObject (/home/developer1/Projects/bfreit_website/node_modules/pdfjs/lib/document.js:255:21)
at module.exports (/home/developer1/Projects/bfreit_website/node_modules/pdfjs/lib/image/render.js:16:23)
at _pending.push (/home/developer1/Projects/bfreit_website/node_modules/pdfjs/lib/fragment.js:143:30)
at Document._next (/home/developer1/Projects/bfreit_website/node_modules/pdfjs/lib/document.js:169:36)
at _pending.current.next.then (/home/developer1/Projects/bfreit_website/node_modules/pdfjs/lib/document.js:172:19)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
预期的输出是一个正确的 .pdf 文件。但即使我的输出是 .pdf 文件,它也已损坏。
Unable to open document “file:///home/developer1/Projects/pdf/output.pdf”.
Error when trying to open the file:
PDF document is damaged
如果你能帮我解决这个问题,或者用你的知识库来帮助我解决这个问题,那就太棒了。
我找不到 pdfjs 库的解决方案。但是我找到了一个在我的项目中效果更好的库。它真的很容易使用。
简短示例:
const pdf = require('pdfkit');
const fs = require('fs');
const doc = new pdf();
doc.pipe(fs.createWriteStream('/my/path'));
doc.fontSize(10).text('Fontsize 10')
doc
.fontSize(18)
.text('Font Size 18 aligned right', {align: 'right'});
doc.moveDown();
doc.fontSize(14).text('Font size 14 aligned center',{align:'center' })
doc.end();
我正在尝试使用 npm 库 pdfjs https://www.npmjs.com/package/pdfjs 创建 PDF 文件。一旦文件的所有元素(段落)都附加到我创建文件的文档,但打开它时我收到一条消息,它说已损坏。
当我用doc.end()
完成文件时,说没有功能。所以我使用了一个承诺,并尝试稍后使用这些信息。但是即使我得到一个包含所有数据的对象,我也无法使 .pdf 文件不被损坏。
这是我正在使用的代码:
const pdf = require('pdfjs')
const fs = require('fs')
function createPDF(data, options){
return new Promise((resolve, reject) => {
var doc = new pdf.Document({ font: require('pdfjs/font/Helvetica') });
var header = doc.header().table({ widths: [null, null], paddingBottom: 1*pdf.cm }).row()
header.cell().image('/images/logo.png', { height: 2*pdf.cm })
header.cell().text({ textAlign: 'right' })
.add('Example.')
.add('https://www.example.com', {
link: 'https://www.example.com',
underline: true,
color: 0x569cd6
})
doc.footer()
.pageNumber(async function(curr, total) { return curr + ' / ' + total }, { textAlign: 'center' });
resolve(doc)
});
}
var doc = createPDF();
doc.then(async (data) => {
data.pipe(fs.createWriteStream('output.pdf'))
console.log(data);
await data.end();
})
日志数据:
Document {
_readableState:
ReadableState {
objectMode: false,
highWaterMark: 16384,
buffer: BufferList { head: null, tail: null, length: 0 },
length: 0,
pipes:
WriteStream {
_writableState: [Object],
writable: true,
domain: null,
_events: [Object],
_eventsCount: 5,
_maxListeners: undefined,
path: 'output.pdf',
fd: null,
flags: 'w',
mode: 438,
start: undefined,
autoClose: true,
pos: undefined,
bytesWritten: 0 },
pipesCount: 1,
flowing: true,
ended: false,
endEmitted: false,
reading: false,
sync: true,
needReadable: false,
emittedReadable: false,
readableListening: false,
resumeScheduled: true,
paused: false,
emitClose: true,
destroyed: false,
defaultEncoding: 'utf8',
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null },
readable: true,
domain: null,
_events:
{ read: { [Function: bound onceWrapper] listener: [Function] },
end: { [Function: bound onceWrapper] listener: [Function: onend] },
data: [Function: ondata] },
_eventsCount: 3,
_maxListeners: undefined,
version: '1.6',
info: { id: '34d7f55c-5961-4caf-9814-1902b98bee3c' },
width: 595.296,
height: 841.896,
_nextObjectId: 4,
_xref: PDFXref { objects: [], trailer: null },
_reading: false,
_length: 0,
_pending:
[ [Function],
[ [Function], [Array], [Array], [Function] ],
[Function],
[Function],
[Function],
[Function],
current: Promise { <pending> } ],
defaultFont:
AFMFont {
_data:
{ fontName: 'Helvetica',
fullName: 'Helvetica',
familyName: 'Helvetica',
italicAngle: 0,
characterSet: 'ExtendedRoman',
fontBBox: [Array],
underlinePosition: -100,
underlineThickness: 50,
capHeight: 718,
xHeight: 523,
ascender: 718,
descender: -207,
kerning: [Object],
widths: [Array] },
lineGap: 231,
parent: [Circular] },
defaultFontSize: 11,
defaultColor: [ 0, 0, 0 ],
defaultLineHeight: 1.15,
_fonts: { '/F1': { f: [Object], o: [Object] } },
_xobjects: {},
_pageFonts: {},
_annotations: [],
_aliases: AliasGenerator { nextId: { F: 2 }, blocked: Set {} },
_mapping: WeakMap {},
_currentContent: null,
_contents: [],
_contentObjCreator: null,
_finalize: [],
_template: null,
_footer: null,
_header: null,
paddingTop: 20,
paddingBottom: 20,
paddingLeft: 20,
paddingRight: 20,
_cursor:
Cursor {
width: 555.296,
height: 801.896,
x: 20,
startX: 20,
y: 821.896,
startY: 821.896,
_bottom: 20,
bottomOffset: 0 },
_pages: [ toString: [Function] ],
_pagesObj:
PDFObject {
id: 2,
rev: 0,
properties: PDFDictionary { dictionary: [Object] },
reference: PDFReference { object: [Getter] },
content: 'stream\n!!!Djz!WW3#D/OH9;Fa%r=BSfM#MB(Z!#knQ!$hOd@:O@tzzzz!!!!"zz!!)`D!!*\'"!!(J"z\'&psr`WC#h?J?20S8TbAzzzzzzz!!!!1A7]gl!!!
$f!!!"E@TZc:!!!&8!!!!5@T65m!!!&L!!!95B2hbr!!!&L!!!95E`>q(!!!&L!!!95A8Pjf!!!>`!!!"TB38;?!!!@>!!!!5CisT/!!!@R!!!!5D.R-s!!!@f!!!!E@V]q)!!!A5!
!!!5E`cIJ!!!AI!!!!5FCerq!!!A]!!!!-G\'.A,!!!Ai!!!"SGB@eG!!!CG!!!!5@rQI1!!!C[!!!!X@q]:]!!!D>!!!!MA7]glz!!!!@F&GLp+A#!h2DI3M2D$[90d\'qA@:O\'q
F(8WpARkc@zzzzzzzzzzzzzzzzzzzz=BSfMz!!":;!!!O_!!\'IR@s)g8z!!!-%!!!!&!"&]:!#,DN!+b!%7h!!&=O5!\':0G!(?l[!)ESo!*K;.!+Q"B!,V^V!-\Ej!.b-)!/g
i=!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$!FPq@!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"UtVT"Y0a;"\Al""_S!_"bm2H"f;I2"iUYq"m#p]"pP8I"t\'U6#"Sr$#&4?h#)ibW#-S6H#13Y8#5&3+#8mas#<`;f#@R
jZ#DNJO#HS0F#LWk=#P\Q4#Tj=-#Y#)\'#]9p"#aPar#egSm#j2Kj#nRCh#s&Ag$"O?f$\',Cg$+^Gh[=11=];Kj!Um\_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"tX%^lkq%dji6%j_`P%pfcm&!da4&\'kdQ&.&mp&47";&:P1[&@iA(&G6VK&MXkn&T&,=
&ZQGb&a0i4&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)7LL>)?^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^b0((A<03U#k0?5aF0JtP#0VgDW0bQ350nM-k1%I(L11N)/1=S)h1Ia0M1Uo721b1Co1nHPV2%qiA22=\'+2>oE
l2KC^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_6
bl(l6q9Y&7*\4679)dF7G^KX7V>2k7dro*7sdbA8-MOW8<HHp8KCB48Z>;N8iK@j9#O@292eKP9B&Vp9QEh<9`e$]9p8<,:*iYQ::F"!:J"?G:Yehp:iT=D;$Klo;4CGF;DD\'s;T
D]L;dWJ\';ta0W<0(#5<@Cji<PhcI<a8\)<qfZ`=-?YC=>*d)=Nahc=_V$K=pJ53>,GKr>=Db]>NK*I>_ZM7>pip&?--Ck?>Nr]?OpLP?aF,D?rpa9@/OG/@A73\'@S(%!@dmkpA!
^]kA3a[iAEdYgAWgWfAj\'ahB\'<kjB9QumBKp0rB^BG#Bprc+C.N*3CA2L>CSttJCfbGVD$XudD7ONsDJO..D]WhADp`MSE/&>iEB8*)EU\!AEi*mYF\'WjsF;/h9FNekUFbOtsG
!:)=G5-8^GI)N+G]%cMGq+)rH09KCHDPrkHXhE>Hm*lgI,TK>IA))jIU[cCIj9GrJ)u2NJ>e#+JSTh]JhVe>K(O[sK=Z^VKRea9Kh$itL(8rYL=_2BLS\'A*LhV[jM)1!VM>iBCMTU
i2MjB;!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:(OTg
tfbU*cV#UB[K:UZS@QUrT;kV5^=1VMh>MVf&EjW)BS4WAgfUWZ8%"Wrf>EX6H]jXO+(;XgkMcY+`YD]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\'j6PcIjS\+mjpgI=k9&ldkVDA7ksjpal<EQ8lYu1em"Xm>m@<Smm^2FJn\'(9\'n
E\'1\nc/0=o,7.toJH3Wohb><p20O#pPS_`po+!Jq8`>5qWIa"r!3.er@.]Vr_*7Gs)%f9A7]glz!!!!O8OYuh2DI3M2D$[90d&kqAmoguF<FIO66JX6Ci=H:+B*5f@q?c7+ELFN6
3$uczzzzzzzzzzzzzzzzzzz=BSfMz!!$Jr!!\'K^!!!ki=BSfMzz!)NXqzD.R-sz!!!!"zzzzz!!!!#=BSfMz!!!"j!!!"p!!!"S=BSfMz!!$r3!!#"O!!!+_F(o80z6W-l+A7]glz
!!!!N;IsHOEb0,uAKY#fATqj+B-9Q[DIdI\'Bl@l3Bl5%b77/1U0f_-M/M\n4zzzzzzzzzzzzzzzzzzzz=BSfMz!!)`D!!*\'"!!(J"FCf]=z6Z6phEbT0"F<F.mFCfK1@<?4%DII
?(6Z6dZEZd_fDKB`:FD5l7/0H]%0KB+5F(R3`z!!*Kr!!!2[s8V[;!!!7g!!)tYs8Vtis8W%l!!!,U!!\'fW~>\nendstream\n' },
_currentColorSpace: '/CS1',
_doc: [Circular],
_parent: [Circular],
_ended: false,
_current:
Footer {
_doc: [Circular],
_parent: [Circular],
_cursor:
ClonedCursor {
width: 555.296,
height: 801.896,
bottomOffset: 0,
startX: 20,
startY: 821.896,
_root: [Object] },
_ended: false,
_current: null,
_pending:
[ [Function],
[Array],
[Function],
[Function],
[Function],
[Function],
current: [Object] ],
_objects: [],
_pageNumbers: [] } }
看起来内容在那里,但无法获取。当 await data.end();
为 运行 时,它显示下一个错误日志显示:
TypeError: Invalid value used as weak map key TypeError: Invalid value used as weak map key
at WeakMap.set (native)
at Document._useXObject (/home/developer1/Projects/bfreit_website/node_modules/pdfjs/lib/document.js:255:21)
at module.exports (/home/developer1/Projects/bfreit_website/node_modules/pdfjs/lib/image/render.js:16:23)
at _pending.push (/home/developer1/Projects/bfreit_website/node_modules/pdfjs/lib/fragment.js:143:30)
at Document._next (/home/developer1/Projects/bfreit_website/node_modules/pdfjs/lib/document.js:169:36)
at _pending.current.next.then (/home/developer1/Projects/bfreit_website/node_modules/pdfjs/lib/document.js:172:19)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
预期的输出是一个正确的 .pdf 文件。但即使我的输出是 .pdf 文件,它也已损坏。
Unable to open document “file:///home/developer1/Projects/pdf/output.pdf”.
Error when trying to open the file:
PDF document is damaged
如果你能帮我解决这个问题,或者用你的知识库来帮助我解决这个问题,那就太棒了。
我找不到 pdfjs 库的解决方案。但是我找到了一个在我的项目中效果更好的库。它真的很容易使用。 简短示例:
const pdf = require('pdfkit');
const fs = require('fs');
const doc = new pdf();
doc.pipe(fs.createWriteStream('/my/path'));
doc.fontSize(10).text('Fontsize 10')
doc
.fontSize(18)
.text('Font Size 18 aligned right', {align: 'right'});
doc.moveDown();
doc.fontSize(14).text('Font size 14 aligned center',{align:'center' })
doc.end();