Attach (recommended) or Link to PDF file here: 
[A Sample PDF Clean 0 degree with all annotations-original-rotated.pdf](https://github.com/mozilla/pdf.js/files/6551789/A.Sample.PDF.Clean.0.degree.with.all.annotations-original-rotated.pdf)

Configuration:
- Web browser and its version: all browsers, tested with Chrome and Firefox latest versions.
- Operating system and its version: tested in Windows 10
- PDF.js version: current (online version)

Steps to reproduce the problem:
1. Visit https://mozilla.github.io/pdf.js/web/viewer.html
2. Upload the file above
3. Notice that several annotations such as arrow, freehand & polyline are missing (compared to Acrobat Reader)
![image](https://user-images.githubusercontent.com/45581023/119781014-11d35d00-befd-11eb-8daa-64f15374cf5b.png)


What is the expected behavior?
- Should display all annotations accordingly to Acrobat Reader

What went wrong? 
- Several annotations are missing such as arrow, freehand & polyline
- Opacity property is not supported and cannot be retrieved via getAnnotations 

fillColor,
        pointsCallback: (buffer, points) => {
          const x0 = points[0].x + this.borderStyle.width / 2;
          const y0 = points[0].y - this.borderStyle.width / 2;
          const x1 = points[3].x - this.borderStyle.width / 2;
          const y1 = points[3].y + this.borderStyle.width / 2;
          const xMid = x0 + (x1 - x0) / 2;
          const yMid = y0 + (y1 - y0) / 2;
          const xOffset = ((x1 - x0) / 2) * controlPointsDistance;
          const yOffset = ((y1 - y0) / 2) * controlPointsDistance;
          buffer.push(
            `${xMid} ${y1} m`,
            `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,
            `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,
            `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,
            `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,
            "h"
          );
          if (fillColor) {
            buffer.push("B");
          } else {
            buffer.push("S");
          }
          return [points[0].x, points[1].x, points[3].y, points[1].y];
        },
      });
    }
  }
}
class PolylineAnnotation extends MarkupAnnotation {