2017-06-02 245 views

回答

0

有很多SDKs/API能夠檢測到&解碼PDF中的QR條碼。您還必須考慮如何輸入PDF並將其拆分。

您沒有指定您正在開發的平臺/編程語言,因此我將列出幾個不同的平臺/編程語言。

如果你正在尋找一種用於檢測QR條碼一個開源的解決方案,那麼你可以使用斑馬線:

  • ZXing .NET口.NET和C#和相關的Windows平臺

如果您正在尋找更完整的解決方案,您可以使用Commercial(非免費)SDK進行研究。就像一個免責聲明,我爲LEADTOOLS工作,我們有一個Barcode SDK

LEADTOOLS還能夠將多頁PDF作爲條碼SDK的一部分加載和拆分,因此您可以使用1 SDK來實現您想要的功能。下面是一個小的C#.NET方法,它將基於每個頁面上的QR條碼分割多頁PDF:

static void SplitPDF(string filename) 
{ 
    BarcodeEngine barcodeEngine = new BarcodeEngine(); 
    List<int> PageNumbers = new List<int>(); 
    using (RasterCodecs codecs = new RasterCodecs()) 
    { 
     int totalPages = codecs.GetTotalPages(filename); 
     for (int page = 1; page <= totalPages; page++) 
     using (RasterImage image = codecs.Load(filename, page)) 
     { 
      BarcodeData barcodeData = barcodeEngine.Reader.ReadBarcode(image, LogicalRectangle.Empty, BarcodeSymbology.QR); 
      if (barcodeData != null) // QR Barcode found on this image 
       PageNumbers.Add(page); 
     } 
    } 

    int firstPage = 1; 
    PDFFile pdfFile = new PDFFile(filename); 
    //Loop through and split the PDF according to the barcodes 
    for(int i= 0; i < PageNumbers.Count; i++) 
    { 
     string outputFile = $"{Path.GetDirectoryName(filename)}\\{Path.GetFileNameWithoutExtension(filename)}_{i}.pdf"; 
     pdfFile.ExtractPages(firstPage, PageNumbers[i] - 1, outputFile); 
     firstPage = PageNumbers[i]; //set the first page to the next page 
    } 
    //split the rest of the PDF based on the last barcode 
    if (firstPage != 1) 
     pdfFile.ExtractPages(firstPage, -1, $"{Path.GetDirectoryName(filename)}\\{Path.GetFileNameWithoutExtension(filename)}_rest.pdf"); 
}