Skip to content

Commit

Permalink
updated PDF extractor
Browse files Browse the repository at this point in the history
  • Loading branch information
stefan-av committed Aug 1, 2024
1 parent a5be438 commit c81ad1b
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 55 deletions.
42 changes: 42 additions & 0 deletions client/src/lib/PDFReceiptDocument.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import {PDFDocument, PDFName, PDFParser} from "pdf-lib";

export class PDFReceiptDocument extends PDFDocument{
static async loadReceipt(file: File) {
const ignoreEncryption = false
const updateMetadata = false

return new Promise((resolve, reject) => {
// FileReader api
const reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onload = async () => {
try {
const bytes = new Uint8Array(reader.result);
const context = await PDFParser.forBytesWithOptions(bytes).parseDocument();
const pdfReceiptDoc = new PDFReceiptDocument(context, ignoreEncryption, updateMetadata);
resolve(pdfReceiptDoc)
} catch (err) {
reject(err.message)
return
}
}
reader.onerror = () => {
reject("Could not load receipt file")
}
})
}

public getReceipt(): string | undefined {
const receiptName = PDFName.of('Receipt')
const receipt = this.getInfoDict().lookup(receiptName);
if (!receipt) return undefined;
return receipt.decodeText();
}

public getTrackingCode(): string | undefined {
const trackingCodeName = PDFName.of('TrackingCode')
const trackingCode = this.getInfoDict().lookup(trackingCodeName);
if (!trackingCode) return undefined;
return trackingCode.decodeText();
}
}
47 changes: 0 additions & 47 deletions client/src/lib/receiptPDFExtractor.ts

This file was deleted.

16 changes: 8 additions & 8 deletions client/src/views/BallotTrackingLanding.vue
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import Error from "../components/Error.vue";
import ContentLayout from "../components/ContentLayout.vue";
import MainIcon from "../components/MainIcon.vue";
import { useRoute } from "vue-router";
import {ReceiptPDFExtractor} from "../lib/receiptPDFExtractor";
import {PDFReceiptDocument} from "@/lib/PDFReceiptDocument";
const verificationStore = useVerificationStore();
const configStore = useConfigStore();
Expand All @@ -34,15 +34,15 @@ const parseReceipt = async (event: Event) => {
const file = fileInput.files?.[0];
if (file) {
const receiptExtractor = new ReceiptPDFExtractor(file)
await receiptExtractor.extract().catch((reason) => {
console.error(reason)
})
const pdfReceiptDoc = await PDFReceiptDocument.loadReceipt(file)
console.log("receipt: ", receiptExtractor.receipt)
console.log("tracking code: ", receiptExtractor.trackingCode)
const receipt = pdfReceiptDoc.getReceipt()
console.log("receipt: " + receipt)
const receiptValid = verificationStore.isReceiptValid(receiptExtractor.receipt, receiptExtractor.trackingCode)
const trackingCode = pdfReceiptDoc.getTrackingCode()
console.log("tracking code: " + trackingCode)
const receiptValid = verificationStore.isReceiptValid(receipt, trackingCode)
console.log("valid receipt: ", receiptValid)
}
}
Expand Down

0 comments on commit c81ad1b

Please sign in to comment.