天道酬勤,学无止境

pdf

Encoding PDF binary data to base64 not working with NodeJS

问题 我正在尝试获取来自 API 的 PDF 流返回并将其解析为 base64 以将其嵌入客户端,API 请求的主体返回如下内容: %PDF-1.5 %���� 4 0 obj << /Type/XObjcect /Subtype/Image /Width 799 /Height 70 /ColorSpace/DeviceGray /BitsPerComponent 8 /Filter/FlateDecode /Length 5181 >> stream x���=H#�������A�&�)���B���4iba�&O8H . . . (The rest was omitted) 我正在尝试以这种方式解析为 base64: console.log(typeof body); // STRING const encoded = new Buffer.from(body).toString('base64'); //PDF NOT WORKING 但是当我得到这个base64并将它嵌入到html中时,它说文件无法打开,当我试图将它保存为.PDF文件时也会发生同样的事情。 当我尝试将相同的 pdf 解析为 base64 时,但这次是从下载的 pdf 中,嵌入到 html 中的 base64 代码可以正常工作。 fs.readFile('/home/user/downloaded.pdf

2022-05-16 23:14:03    分类:技术分享    javascript   node.js   pdf   encode

Itext 7: Cannot remove annotations or flatten document

问题 自从让冲压过程大部分工作以来,我一直在玩更多。 现在我正在尝试从 PDF 中删除所有注释。 我已经尝试了多种方法,如下所示: public void ClearStamps() { IList<PdfAnnotation> annotList = pdfDoc.GetFirstPage().GetAnnotations(); int listCount = annotList.Count; for (int i = 0; i < listCount; i++) { annotList.RemoveAt(i); } pdfDoc.Close(); if (Overwrite) { File.Delete(pdfFilePath); File.Move(pdfFileDest, pdfFilePath); } } 或者 IList<PdfAnnotation> annotList = pdfDoc.GetFirstPage().GetAnnotations(); int listCount = annotList.Count; for (int i = 0; i < listCount; i++) { annotList[i].Remove(PdfName.Annots); } pdfDoc.Close(); 完成上述操作后,生成的 PDF 仍然保持不变。

2022-05-16 18:50:08    分类:技术分享    c#   pdf   annotations   itext7   stamp

Providing the Object tag with data directly

问题 I wanted to embed a PDF file in my website, it looked like this: <object data="data/PDFTest1.pdf" type="application/pdf" id="data"></object> But then I wanted to first Get the file with ajax (in a javascript file), edit it's source code in JavaScript, and then create an <object> and give it the resulting data. The problem is that the Object needs a url in its data attribute, and does not accept the actual data directly. How can I handle this? Is there a way to create a "fake url" in javascript for example? Or can I somehow pass the data in another way to the object? Or should I maybe use

2022-05-16 15:54:16    分类:技术分享    javascript   html   pdf   object-tag

get_cellmap() issue with DomPDF

问题 我正在使用 DomPdf 并尝试将我的文件转换为 pdf,但遇到下面给出的奇怪错误 我用谷歌搜索了很多次并阅读了不同的论坛,但没有得到这个错误的原因。 请帮帮我。 致命错误:未捕获的错误:调用 C:\xampp\htdocs\dom\dompdf\src\FrameReflower\TableCell.php:37 中的成员函数 get_cellmap() 为 null 堆栈跟踪:#0 C:\xampp\htdocs\dom \dompdf\src\FrameDecorator\AbstractFrameDecorator.php(893): Dompdf\FrameReflower\TableCell->reflow(NULL) #1 C:\xampp\htdocs\dom\dompdf\src\FrameReflower\TableRow.php(52): Dompdf \FrameDecorator\AbstractFrameDecorator->reflow() #2 C:\xampp\htdocs\dom\dompdf\src\FrameDecorator\AbstractFrameDecorator.php(893): Dompdf\FrameReflower\TableRow->reflow(NULL) #3 代码 require_once './dompdf

2022-05-16 14:43:48    分类:技术分享    php   pdf   dompdf

electron, printToPDF from BrowserWindow

问题 我了解电子中 printToPDF 的常用方法是在调用以下代码的main过程中:- const {BrowserWindow} = require('electron') const fs = require('fs') let win = new BrowserWindow({width: 800, height: 600}) win.loadURL('http://github.com') win.webContents.on('did-finish-load', () => { // Use default printing options win.webContents.printToPDF({}, (error, data) => { if (error) throw error fs.writeFile('/tmp/print.pdf', data, (error) => { if (error) throw error console.log('Write PDF successfully.') }) }) }) 但是,我想要实现的是通过单击按钮从BrowserWindow中有效地调用 printToPDF。 我从中了解到:https://github.com/electron/electron/pull/1835/commits

2022-05-16 13:13:07    分类:技术分享    javascript   pdf   electron

Understanding the zlib header; CMF (CM, CINFO), FLG, (FDICT/DICTID, FLEVEL); RFC1950 § 2.2. Data format

问题 我对 zlib 数据格式很好奇,并试图理解 RFC1950 (https://www.rfc-editor.org/rfc/rfc1950) 中描述的 zlib 标头。 然而,我对这种低层次的解释很陌生,并且似乎与我的一些结论相冲突。 我有以下压缩数据(来自 PDF 流对象): b'h\xdebbd\x10`b`Rcb`\xb0ab`\xdc\x0b\xa4\x93\x98\x18\xfe>\x06\xb2\xed\x01\x02\x0c\x00!\xa4\x03\xc4' 在python中,我已经成功解压并重新压缩了数据: b'x\xdacbd\x10`b`Rcb`\xb0ab`\xdc\x0b\xa4\x93\x98\x18\xfe>\x06\xb2\xed\x01!\xa4\x03\xc4' 正如我所理解的 PDF 的 Deflate 和 inflate 中的讨论/答案,使用 zlib C++ 压缩数据的结果差异应该无关紧要,因为它是压缩数据的不同应用方法的影响。 假设最后四个字节!\xa4\x03\xc4是 ADLER32(Adler-32 校验和),我的问题与前 2 个字节有关。 0 1 0 1 2 3 0 1 2 3 +---+---+ +---+---+---+---+ +=====================+ +---+---+---+---+ |CMF

2022-05-16 11:57:05    分类:技术分享    python-3.x   pdf   zlib

How to add watermark in PDF genereted from jsPDF?

问题 我正在从 canva 生成 PDF 并使用 jsPDF 生成它。 https://github.com/MrRio/jsPDF 这是我正在使用的代码,我想在页面中添加水印。 任何人都可以帮助我吗? self.downloadCanvasObjectAsPDF = function () { canvas.deactivateAll().renderAll(); try { canvas.getContext('2d'); var imgData = canvas.toDataURL("image/jpeg", 1.0); var pdf = new jsPDF('p', 'mm', [297, 210]); pdf.addImage(imgData, 'JPEG', 5, 5); var namefile = 'export'; if(namefile != null) { pdf.save(namefile + ".pdf"); return true; }else{ return false; } } catch(e) { alert("Error description: " + e.message); } }; 回答1 回答2 您可以先在每个页面上手动添加水印,无论是图像还是文本,然后添加内容,使其不会相互重叠。 在这种方法中,您也可以在添加每个新页面时添加/调用水印

2022-05-16 10:38:03    分类:技术分享    html   pdf   html5-canvas   jspdf

How to add Header and footer content to pdfkit for node.js

问题 我想使用 node js (express) 生成一个 pdf。 我需要为每个带有页码的页面添加页眉和页脚。 任何帮助,将不胜感激。 谢谢。 回答1 使用doc.on('pageAdded'...钩子向每个页面添加内容具有令人讨厌的副作用,即在填充页面时劫持您的位置 ( doc.x / doc.y )。此外,您必须设置autoFirstPage: false标志,以便在创建第一页之前注入您的钩子。 我发现使用 bufferPages 模式,然后在最后对页面进行全局编辑更加优雅/合乎逻辑。 const doc = new PDFDocument({ bufferPages: true }); doc.text("Hello World") doc.addPage(); doc.text("Hello World2") doc.addPage(); doc.text("Hello World3") //Global Edits to All Pages (Header/Footer, etc) let pages = doc.bufferedPageRange(); for (let i = 0; i < pages.count; i++) { doc.switchToPage(i); //Footer: Add page number let oldBottomMargin =

2022-05-16 06:49:13    分类:技术分享    node.js   pdf   express   pdfkit

Convert Excel with internal links to pdf

问题 我正在尝试将带有内部链接的 excel(即指向同一 excel 中不同位置的链接)转换为 pdf。 在这方面,我浏览了几篇在线可用的帖子,似乎找不到任何合适的解决方案来进行这种转换。 提供的解决方案主要适用于外部超链接而不是内部超链接。 甚至有可能这样做吗? 有没有什么软件可以实现这个功能? 基本上,我希望将整个 excel 工作簿迁移到一个 pdf,以便该工作簿中不同工作表之间的每个链接仍然有效。 例如,如果我在工作表 1 中提供了指向工作表 2 中命名部分的链接,我希望这种关系也能在 pdf 中保持。 因此,当我单击链接时,在生成的 pdf 中,它应该将我带到 pdf 中的那个命名部分位置。 回答1 保持内部和外部链接有效的解决方案: 安装 Office 2013/2016 安装 Adob​​e Acrobat PRO 11(适用于 Office 2013)或 Adob​​e Acrobat DC(适用于 Office 2016) 打开 Excel 文件并使用“文件”菜单中的“另存为 Adob​​e PDF ”条目。 截图如下。 这会弹出另一个对话框,您可以在其中选择要保存的工作表。 主要想法是在 Office 功能区和文件对话框中激活 Adob​​e 插件。 奇迹般有效! 最后!

2022-05-16 03:09:03    分类:技术分享    excel   pdf

Reading a PDF Portfolio in Python?

问题 我有一个 pdf 投资组合,它由一个电子邮件线程组成,每封电子邮件都包含附件。 我想阅读每封电子邮件中的文本并提取附件。 但是,我找不到有关如何在 python 中阅读 pdf 投资组合的信息。 我曾尝试使用库、PDFMiner 和 textract,但输出只是显示:“为了获得最佳体验,请在 Acrobat X 或 Adob​​e Reader X 或更高版本中打开此 PDF 组合。立即获取 Adob​​e Reader!” 有任何想法吗? 谢谢! 回答1 poppler 实用程序中的pdfdetach程序可以提取附件。 大多数类 UNIX 操作系统发行版都有可用的poppler-utils软件包。 您可以在 SourceForge 上找到 ms-windows 版本。 您可以使用subprocess模块从 Python 调用此程序。 回答2 from poppler import load_from_file pdf_document = load_from_file("portfolio.pdf") if pdf_document.has_embedded_files(): for attachment in pdf_document.embedded_files(): print(attachment.data) 回答3 使用@Roland Smith 和@ikreb

2022-05-15 20:26:08    分类:技术分享    python   python-2.7   pdf