PDF417 条形码生成可编辑的 PDF

PDF417 Barcode Generate in Editable PDF

提问人:Asvinth Saravanan 提问时间:10/24/2023 更新时间:10/30/2023 访问量:99

问:

我正在研究最终用户填写 pdf 文档并单击按钮以生成带有字段值的条形码的用例......我正在寻找 PDFBox 或 IText7 或 Aspose 中的解决方案。

我使用上述参考资料创建了可编辑的 pdf 文档。

我试过 itext7 和 PDFBox,但没有运气

java c# pdfbox itext7 aspose.pdf

评论

0赞 Asvinth Saravanan 10/24/2023
如果没有 Adobe,是否可以使用 IText7 或 PDFBox 生成纸质表格中的条形码?
0赞 Tilman Hausherr 10/24/2023
您可以使用 ZXIng 创建普通条码。您可以将它们用作图像,或者如果您是高级的,可以将其用作矢量图形。
0赞 Asvinth Saravanan 10/25/2023
你能帮我写代码吗?如果您有任何参考,可以分享给我吗?
0赞 Tilman Hausherr 10/25/2023
stackoverflow 上有关于如何使用 ZXIng 创建条形码图像的示例。我就是这样做的,所以不需要额外的答案。
0赞 Tilman Hausherr 10/25/2023
这很奇怪,我再也找不到它们了。以下是两个显示如何执行此操作的 URL:digitalocean.com/community/tutorials/... 和 geeksforgeeks.org/...

答:

0赞 Asad Ali 10/30/2023 #1

我不认为这些要求可以直接使用 Aspose.PDF 来实现。您可以在按钮后面指定一个 JavaScript 方法进行触发,然后 Adobe Reader 使用自己的引擎/调试器执行该操作。

您不能告诉 Adobe Reader 使用 Aspose.Barcode 生成条形码图像并将其添加到 PDF 中。

可以尝试一种解决方法。我不确定它是否在所有情况下都有效,但值得一试。即

  • 创建一个单独的控制台应用程序,该应用程序使用 Aspose.Barcode 或任何其他 API 生成条形码,并将其保存到某个物理路径。
  • 在 PDF 中为按钮创建一个 JavaScript 操作,该按钮可以调用/执行条形码应用程序/.exe 以生成条形码图像
  • 通过从物理路径读取图像来显示 PDF 中的图像

使用 Aspose.Barcode 生成条形码图像的代码:

BarcodeGenerator gen = new BarcodeGenerator(EncodeTypes.Pdf417, "Åspóse.Barcóde©");
gen.Parameters.Barcode.XDimension.Pixels = 2;
gen.Parameters.Barcode.Pdf417.Columns = 3;
gen.Save("Pdf417Basic.png", BarCodeImageFormat.Png);

使用 Aspose.PDF 指定 PDF 按钮后面的 JavaScript 操作的代码:

var userInput = this.getField("userInput").value; // Get user input from the text field

// Execute your console application with userInput as an argument
// You can use the 'app.execMenuItem' function to execute an external command

// For example:
var result = app.execMenuItem("App.exec", "your_console_app.exe " + userInput);

if (result == 0) {
    // Success: The console application executed
    // Now, you can add the generated image to the PDF
    var imageRect = this.getPageBox("Crop", this.pageNum);
    this.addImage({
        cName: "GeneratedImage",
        nPage: this.pageNum,
        rCrop: imageRect,
        cPath: "path_to_generated_image.jpg"
    });
}

上面的 JS Action 可以在按钮后面添加,使用:

field.Actions.OnPressMouseBtn = new JavascriptAction(opendocscript);

您可以尝试上述解决方法。我希望它能对你有所帮助。如果您遇到任何问题,请在官方 Aspose 支持论坛上创建一个帖子,您将获得相应的帮助。我是 Asad Ali,我是 Aspose 的开发人员布道者。

0赞 K J 10/30/2023 #2

Adobe Acrobat Reader 用户可以通过多种方式轻松导入条形码。但是,最简单的编程可能是通过外部导入作为注释,他们可以像这里一样拖动页面。

尝试在 Acrobat 中生成此类代码是可能的,但对于 2D 或 QR 码来说非常成问题。(应避免使用涉及复杂脚本的动态表单方法,因为这些方法会贬值)

enter image description here

导入可以在无人值守的情况下完成,编程方式与所有表单字段生成相同,使用相同的文本文件调用 Acrobat 阅读器。

%FDF-1.2
%âãÏÓ
1 0 obj
<</FDF<</Annots[2 0 R 3 0 R]/F(java - PDF417 Barcode Generate in Editable PDF - Stack Overflow.pdf)/ID[<><>]/UF(java - PDF417 Barcode Generate in Editable PDF - Stack Overflow.pdf)>>/Type/Catalog>>
endobj
2 0 obj
<</AP<</N 4 0 R>>/C[1 0 0]/CreationDate(D:2023)/F 4/IT/Stamp/M(D:20231030005210Z)/NM(417C0DE1-0000-0000-417C0DE100000001)/Name/MyBarCode1/Page 0/Popup 3 0 R/Rect[77.8321 481.059 317.832 562.059]/Subj(BarCode00000001)/Subtype/Stamp/Type/Annot>>
endobj
3 0 obj
<</F 28/Open false/Page 0/Parent 2 0 R/Rect[594.96 467.0 798.96 581.0]/Subtype/Popup/Type/Annot>>
endobj
4 0 obj
<</BBox[0 0 240 81]/Length 29/Resources<</XObject<</Im0 5 0 R>>>>/Subtype/Form/Type/XObject>>stream
q 240 0 0 81 0 0 cm /Im0 Do Q
endstream
endobj
5 0 obj
<</BitsPerComponent 8/ColorSpace/DeviceGray/Height 9/Length 1080/Subtype/Image/Type/XObject/Width 120>>stream
        ÿ ÿ ÿ ÿÿÿ     ÿ ÿ ÿ     ÿÿ  ÿ ÿ  ÿÿÿ   ÿÿÿÿ   ÿÿÿÿ ÿ ÿÿÿ   ÿ ÿÿ ÿÿ  ÿÿÿÿ  ÿÿÿ     ÿ ÿ ÿ     ÿÿ       ÿ ÿÿÿ ÿ ÿÿ         ÿ ÿ ÿ ÿÿÿ    ÿ ÿ ÿÿÿÿ ÿÿÿÿ ÿ   ÿ  ÿÿ      ÿ  ÿÿ ÿ     ÿ   ÿÿ    ÿ    ÿ    ÿ ÿ    ÿ ÿ ÿÿ ÿÿÿÿÿÿ       ÿ ÿÿÿ ÿ ÿÿ         ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿÿ    ÿÿÿÿÿÿ  ÿÿ     ÿ  ÿ  ÿÿ ÿ      ÿÿ   ÿ ÿÿ      ÿ ÿÿÿ  ÿ ÿÿ ÿ ÿ ÿÿÿÿ    ÿÿÿÿ       ÿ ÿÿÿ ÿ ÿÿ         ÿ ÿ ÿ ÿÿÿ  ÿ ÿ    ÿÿ     ÿ ÿÿÿÿ  ÿ    ÿ   ÿ     ÿ ÿÿ ÿ     ÿ ÿÿÿÿÿ ÿ ÿÿÿ ÿÿÿÿ  ÿ ÿ    ÿÿ     ÿ       ÿ ÿÿÿ ÿ ÿÿ         ÿ ÿ ÿ ÿÿÿ  ÿ ÿ   ÿÿÿÿÿ ÿÿÿ ÿ ÿ     ÿÿ  ÿÿÿÿ    ÿ ÿ  ÿÿ  ÿÿÿÿ ÿÿÿÿÿ ÿ    ÿ ÿÿÿ    ÿ ÿ   ÿÿ   ÿÿ       ÿ ÿÿÿ ÿ ÿÿ         ÿ ÿ ÿ ÿÿÿ     ÿ ÿ    ÿ  ÿÿ   ÿ   ÿÿÿ ÿ    ÿ     ÿÿ ÿ   ÿ ÿÿÿ  ÿÿÿ     ÿÿ ÿÿ ÿ    ÿ ÿ     ÿ  ÿÿ       ÿ ÿÿÿ ÿ ÿÿ         ÿ ÿ ÿ ÿÿÿ   ÿ ÿÿ   ÿ     ÿ ÿÿÿÿ  ÿÿÿ  ÿÿ ÿÿ   ÿÿ  ÿÿÿÿ ÿÿ  ÿ  ÿÿÿÿÿ ÿÿÿÿ ÿ  ÿ   ÿ ÿÿ   ÿ     ÿ       ÿ ÿÿÿ ÿ ÿÿ         ÿ ÿ ÿ ÿÿÿ      ÿ ÿÿ ÿ   ÿÿ ÿÿ  ÿ     ÿÿ ÿÿÿ  ÿÿ  ÿ    ÿÿ ÿÿÿ ÿÿÿ    ÿ ÿÿ    ÿ ÿ ÿ      ÿ   ÿÿÿ       ÿ ÿÿÿ ÿ ÿÿ         ÿ ÿ ÿ ÿÿÿ      ÿ ÿÿ  ÿÿ ÿÿ ÿ  ÿÿÿÿ ÿÿÿÿ   ÿ  ÿÿ ÿ      ÿÿÿ ÿ ÿÿ   ÿÿÿÿÿ ÿ  ÿÿ     ÿ ÿÿ   ÿ ÿÿÿ       ÿ ÿÿÿ ÿ ÿÿ 
endstream
endobj
trailer
<</Root 1 0 R>>
%%EOF

这种方法最大的编程障碍是如何根据数据内容对图像进行黑白编程。 ÿ

通过更改文件名和其他值来玩这个数据文件,然后双击 TEXT。FDF 应该让 Reader 一起打开这两个文件,以便 PDF 环绕图像。

您还可以在PDF打开时使用不同的条形码修改文本文件,第二个将替换您眼前的第一个! 请注意,错误的图像会清除第一个图像并抛出错误消息。enter image description here

所以只是为了证明它有效。我在没有任何其他混乱的情况下洗牌了像素,我们得到了糟糕的像素布局,您当然会使用正确的更改图像。

enter image description here